web-dev-qa-db-ja.com

私が既に回復したVimスワップファイルを削除する最も簡単な方法は何ですか?

Vimがクラッシュしてスワップファイルが残ることがあります。それはすごいね。それから私が編集していたファイルを開くと、Vimは回復したいかどうかを尋ねてきます。ありがとうございます。それが終わったら、Vimは私に言います、

You may want to delete the .swp file now.

はい、そうです。それ、どうやったら出来るの?古いスワップファイルを再びスワップファイルとして使い始めて、終了したらそれをクリーンアップすることにしましたが、そうではありません。それは新しいものを作り、それをきれいにし、そして私がファイルを再び開くとき、それは私に最初のものから回復するように再び促します。

きっと何かが足りない。

76
Peeja

もう少し簡単な方法:

ターミナルエミュレータから:

vim filename

それからrecoverを選択し、スワップを削除したい場合はwrite(save)をしてからvimから実行してください。

:e          // no argument needed. It assumes the current buffer.

...そして今度は削除を選択します。

私はちょうどこれについて知った、そして私はこれからそれをするつもりだと思う。その後、リカバリが破損していることが判明した場合でも、誤って作業ファイルを上書きすることはありません(以前に試したことはありませんが)。

この質問に関連するヒント スタックオーバーフロー(このヒントを見つけた場所)もあります。

75
miyalys

ディレクトリ内のすべてのファイルを一覧表示するls -aを入力します。

rm .whatever.your.swp isと入力してを押します。 enter

それはとても簡単です。

前に.が付いているファイルは隠しファイルであり、通常は表示されません。

変更は即時かつ永続的なので注意してください。

13
Wolfy

ところで。いくつかのプラグインはあなたのためにそれを自動的に行います: autoswap.vim

説明から:

  1. 他のウィンドウの別のVimセッションでファイルは既に開かれていますか?
  2. もしそうなら、私たちがそのファイルを編集しているウィンドウに交換してください。
  3. そうでなければ、もしswapfileがfile自身より古いなら、ただそれを取り除いてください。
  4. それ以外の場合は、ファイルを読み取り専用で開き、確認できるようにして保存します。
7
toogley

いいえ、私は何も見逃していません。明示的に削除するまで、Vimはスワップファイルをバックアップとして保持し続けます。

単に同じファイルを保存して終了し、再度開きます。あなたは(再び)プロンプトが表示されます

[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it

d :)を押すだけです。

6
Avio

ほとんどのUnixコマンドと同様に、Vimは仮定したり暗黙的にしたりするのではなく、単純で明示的です。

あなたは(r)で回復します。それはあなたが回復を好きではないか、回復が破損している、あなたはそれを破棄することができます。あなたがそれを好きなら、あなたはファイルを保存することができます。これは明示的なものではなく、100%の状況では正しくないため、リカバリファイルは削除されません。

そのため、(r)ecover、(w)rite、(q)uitを実行してから、もう一度編集して(d)eleteまたは "rm .myfile.js.swp"を選択して、もう一度編集します。これは簡単で、Vimの観点からは常に100%正しい振る舞いです。

2
Oli Comber

これらのファイルは私にとっても厄介でしたが、vimがそれを作成するのを防ぎ、代わりにファイルをメモリに保存するために.vimrc - set noswapfileにオプションを設定しました。

1
Dmitrii

これは VimのためのGithub自身のgitignoreファイルに基づくすべてのvimスワップファイルをきれいにするためのより完全な正規表現です。

$ find ./ -type f \( -name "\.*\.s[a-v][a-z]" -o -name "\.*\.sw[a-p]" \) -delete

ただし、これはより完全なソリューションですが、.svgイメージファイルと.swf Adob​​eフラッシュファイルはすべて削除されます。これらのファイルを扱う場合は、正規表現を修正することをお勧めします。

1
rouble

これが.vimrcに追加するスニペットです。現在のファイルバッファに関連付けられているスワップファイルをすべて削除し、スワップ拡張子をリセットします。

function! DeleteFileSwaps()
    write
    let l:output = ''
    redir => l:output 
    silent exec ':sw' 
    redir END 
    let l:current_swap_file = substitute(l:output, '\n', '', '')
    let l:base = substitute(l:current_swap_file, '\v\.\w+$', '', '')
    let l:swap_files = split(glob(l:base.'\.s*'))
    " delete all except the current swap file
    for l:swap_file in l:swap_files
        if !empty(glob(l:swap_file)) && l:swap_file != l:current_swap_file 
            call delete(l:swap_file)
            echo "swap file removed: ".l:swap_file
        endif
    endfor
    " Reset swap file extension to `.swp`.
    set swf! | set swf!
    echo "Reset swap file extension for file: ".expand('%')
endfunction
command! DeleteFileSwaps :call DeleteFileSwaps()

窮地に遭遇したら、:DeleteFileSwapsを実行することができます。これは、:windoまたは:tabdoコマンドと組み合わせると素晴らしいです。

:tabdo DeleteFileSwaps 

詳細:ファイルは複数のスワップファイルを持つことができます。なぜなら、拡張子が.swpのスワップファイルがまだ存在し、vimが新しいファイルを作成し続けるからです。 .swpが存在するかどうかを調べるには

  • ターゲットファイルをvimで開いた状態で、:swを実行して現在のスワップファイルを取得します。
  • 現在のスワップファイルが含まれているディレクトリを確認してください。
  • 次に、directoryにオープンファイルの名前のスワップファイルがあり、拡張子が.swpであることを確認します。

上記のスニペットは同じプロセスに従いますが、すべてのスワップファイルを削除します。

お役に立てれば。

1
nate

尋ねられたら押して D 現在のファイルのスワップファイルを削除します。

そうでない場合は、手動で行う必要があります。

これを行うための1つの代替方法は次のとおりです。

ファイルを検索/検索するには:

find | grep ".searchRefineVertTabs.jsp.swp"

そして、このファイルを削除します。

rm ./.searchRefineVertTabs.jsp.swp
0
Kaleem Ullah

マニュアル:h swapより:

現在のスワップファイルの名前は、次のコマンドで確認できます。:sw[apname]

0
JosephHarriott