時々 Vim がクラッシュしてスワップファイルが残ることがあります。これはすごいことです。編集していたファイルを開くと、Vim が回復するかどうか聞いてきます。回復します。完了すると、Vim は私にこう言います。
You may want to delete the .swp file now.
はい、そうです。どうすればいいですか? 古いスワップファイルを再びスワップファイルとして使用し、終了時にクリーンアップするだけだと思っていましたが、そうではありませんでした。新しいファイルを作成し、それをクリーンアップし、ファイルを再度開くと、最初のファイルから回復するように再度求められます。
きっと何かが足りないんだ。
答え1
もう少し簡単な方法
ターミナルエミュレータから:
$ vim filename
そしてvim内で回復するスワップを削除したい場合は書く(保存) してから、このコマンドを呼び出します。
:e // no argument needed. It assumes the current buffer.
...そして選択消去この時。
このアプローチの利点は、リカバリが破損していることが判明した場合に、作業中のファイルが自動的に上書きされないことです (ただし、これまでにそのようなことは一度もありませんでした)。
関連するヒントもありますこの質問についてStack Overflow で(このヒントを見つけた場所)。
答え2
ディレクトリ内のすべての vim スワップ ファイルを消去するには:
ディレクトリツリー内のvimスワップファイルが不要であることが確実で、それらを削除したい場合は、vimが起動しているときにディレクトリ内で次のコマンドを使用できます。ない実行中(別のウィンドウや別のログイン セッションでも実行されていない):
find . -type f -name "*.sw[klmnop]" -delete
いくつかのインスピレーションとアイデアは不要な .swp ファイルを削除するGoogle グループで、、、、、または.swk
で終わる名前を持つすべてのファイルが 現在のディレクトリ ツリーから 削除されます。.swl
.swm
.swn
.swo
.swp
これはいくつかの理由から、望んでいることではないかもしれません。
- 前述の通り、現在のディレクトリを検索します木 ; つまり、現在のディレクトリとすべてのサブディレクトリを再帰的に検索します。これは質問の目的を超えており、やり過ぎだと考えられるかもしれません。
前述のとおり、だけでなく、、 、 、
.swk
、.swl
で.swm
終わる.swn
名前のすべてのファイルが削除されます。.swo
.swp
.swp
ゲイリー・ジョンソンは言う、また、すべてのスワップファイルが.swpで終わるわけではありません。Vimがスワップファイルを作成する必要があり、.swpで終わるファイルがすでに存在する場合、Vimは新しいファイルには拡張子.swoを使用し、その後に.swnを使用します。アルファベットを逆順に続けるだけだと思います。そのため、次のようなものを使用します。
原作者これ投稿によると、\*.sw[nop]
あるいは
\*.sw?
より徹底的になるでしょう。
「klmnop」はやりすぎかもしれませんが、通常はすべて取得できます。
一方、それは不十分な効果かもしれません。 ルーブル 示唆する
find . -type f \( -name ".*.s[a-v][a-z]" -o -name ".*.sw[a-p]" \) -delete
.saa
これは、からまでのすべての (小文字の) 3 文字の拡張子と一致します.swp
。彼は、「これはより完全なソリューションですが、.svg 画像ファイルと .swf Adobe Flash ファイルは除外されるので注意してください。これらのファイルで作業する場合は、正規表現を変更したほうがよいかもしれません」と付け加えています。また、.sav
、.snd
(サウンド データ)、.sql
、.src
、.srt
(SubRip ビデオ字幕形式)、およびその他の多くの一般的な拡張子と一致します。.swk
やりすぎかもしれません。前述のように、名前が、.swl
、.swm
、.swn
、.swo
、で終わるすべてのファイルを削除します.swp
。しかし、どうやら vim のスワップファイルは一般的に「ドット」ファイルです。 を編集するとhello.cpp
、スワップファイルは になる可能性があります.hello.cpp.swp
。 に示されているように(説明されていませんが)、ルーブルの答えドットで始まる名前のファイルのみを削除する方が安全です。例:find . -type f -name ".*.sw[klmnop]" -delete
答え3
ls -a
ディレクトリ内のすべてのファイルをリストするタイプ
と入力rm .whatever.your.swp
して押すenter
とても簡単です。
先頭にが付いているファイルは.
隠しファイルであり、通常は表示されません。
変更は即時かつ永続的であるため、注意してください。
答え4
ちなみに、いくつかのプラグインはそれを自動的に実行します:オートスワップ.vim
説明より:
- ファイルは他のウィンドウの別の Vim セッションで既に開かれていますか?
- もしそうなら、そのファイルを編集しているウィンドウに切り替えます。
- それ以外の場合、スワップファイルがファイル自体よりも古い場合は、それを削除します。
- それ以外の場合は、ファイルを読み取り専用で開き、確認して保存できるようにします。