Vimがクラッシュしてスワップファイルが残ることがあります。それはすごいね。それから私が編集していたファイルを開くと、Vimは回復したいかどうかを尋ねてきます。ありがとうございます。それが終わったら、Vimは私に言います、
You may want to delete the .swp file now.
はい、そうです。それ、どうやったら出来るの?古いスワップファイルを再びスワップファイルとして使い始めて、終了したらそれをクリーンアップすることにしましたが、そうではありません。それは新しいものを作り、それをきれいにし、そして私がファイルを再び開くとき、それは私に最初のものから回復するように再び促します。
きっと何かが足りない。
もう少し簡単な方法:
ターミナルエミュレータから:
vim filename
それからrecoverを選択し、スワップを削除したい場合はwrite(save)をしてからvimから実行してください。
:e // no argument needed. It assumes the current buffer.
...そして今度は削除を選択します。
私はちょうどこれについて知った、そして私はこれからそれをするつもりだと思う。その後、リカバリが破損していることが判明した場合でも、誤って作業ファイルを上書きすることはありません(以前に試したことはありませんが)。
ディレクトリ内のすべてのファイルを一覧表示するls -a
を入力します。
rm .whatever.your.swp
isと入力してを押します。 enter
それはとても簡単です。
前に.
が付いているファイルは隠しファイルであり、通常は表示されません。
変更は即時かつ永続的なので注意してください。
ところで。いくつかのプラグインはあなたのためにそれを自動的に行います: autoswap.vim
説明から:
- 他のウィンドウの別のVimセッションでファイルは既に開かれていますか?
- もしそうなら、私たちがそのファイルを編集しているウィンドウに交換してください。
- そうでなければ、もしswapfileがfile自身より古いなら、ただそれを取り除いてください。
- それ以外の場合は、ファイルを読み取り専用で開き、確認できるようにして保存します。
いいえ、私は何も見逃していません。明示的に削除するまで、Vim
はスワップファイルをバックアップとして保持し続けます。
単に同じファイルを保存して終了し、再度開きます。あなたは(再び)プロンプトが表示されます
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it
d
:)を押すだけです。
ほとんどのUnixコマンドと同様に、Vimは仮定したり暗黙的にしたりするのではなく、単純で明示的です。
あなたは(r)で回復します。それはあなたが回復を好きではないか、回復が破損している、あなたはそれを破棄することができます。あなたがそれを好きなら、あなたはファイルを保存することができます。これは明示的なものではなく、100%の状況では正しくないため、リカバリファイルは削除されません。
そのため、(r)ecover、(w)rite、(q)uitを実行してから、もう一度編集して(d)eleteまたは "rm .myfile.js.swp"を選択して、もう一度編集します。これは簡単で、Vimの観点からは常に100%正しい振る舞いです。
これらのファイルは私にとっても厄介でしたが、vimがそれを作成するのを防ぎ、代わりにファイルをメモリに保存するために.vimrc - set noswapfile
にオプションを設定しました。
これは VimのためのGithub自身のgitignoreファイルに基づくすべてのvimスワップファイルをきれいにするためのより完全な正規表現です。
$ find ./ -type f \( -name "\.*\.s[a-v][a-z]" -o -name "\.*\.sw[a-p]" \) -delete
ただし、これはより完全なソリューションですが、.svgイメージファイルと.swf Adobeフラッシュファイルはすべて削除されます。これらのファイルを扱う場合は、正規表現を修正することをお勧めします。
これが.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
が存在するかどうかを調べるには
:sw
を実行して現在のスワップファイルを取得します。.swp
であることを確認します。上記のスニペットは同じプロセスに従いますが、すべてのスワップファイルを削除します。
お役に立てれば。
尋ねられたら押して D 現在のファイルのスワップファイルを削除します。
そうでない場合は、手動で行う必要があります。
これを行うための1つの代替方法は次のとおりです。
ファイルを検索/検索するには:
find | grep ".searchRefineVertTabs.jsp.swp"
そして、このファイルを削除します。
rm ./.searchRefineVertTabs.jsp.swp
マニュアル:h swap
より:
現在のスワップファイルの名前は、次のコマンドで確認できます。
:sw[apname]