もう少し簡単な方法

もう少し簡単な方法

時々 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 Adob​​e 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

説明より:

  1. ファイルは他のウィンドウの別の Vim セッションで既に開かれていますか?
  2. もしそうなら、そのファイルを編集しているウィンドウに切り替えます。
  3. それ以外の場合、スワップファイルがファイル自体よりも古い場合は、それを削除します。
  4. それ以外の場合は、ファイルを読み取り専用で開き、確認して保存できるようにします。

関連情報