web-dev-qa-db-ja.com

VIM-クラッシュ後に.swpファイルを残す

MacVim (snapshot 51)を使用して、適度なサイズのプロジェクトでPython/HTML/etcファイルを編集します。数か月ごとにシステムがロックまたはクラッシュし、Vimは大量の。*。swpファイルを残します。クラッシュ後にVimを再度開いてこれらのファイルのいずれかを編集すると、「スワップファイル '' .xyz.swp ''は既に存在します!」と表示されます。 [中止] [終了] [削除] [回復] [とにかく編集]および[読み取り専用で開く]のオプションを使用します。

この回復オプションは、クラッシュ時に保存されていなかったVimバッファーへの変更があった場合に意味があります。ただし、クラッシュ時には、これらのファイルはVimのバックグラウンドで開かれ、変更されていませんでした。

可能であれば、.swpファイルと実際のファイルの間に変更がないファイルを開くときに、この余分な質問をしないようにVimを構成するにはどうすればよいですか。次のいずれかによって:

  1. .swpファイルの変更をファイルと自動的に比較し、変更がない場合は、プロンプトを表示せずにファイルを開くだけです。

  2. 変更のないファイルの.swpファイルを保持しません。

  3. この無意味なプロンプトを体系的に回避する他の手段(ただし、もちろん、保存されていない変更があった場合は、プロンプトを回避したくない)。

現在、クリーンアップする.swpファイルが50を超えていますが、無意味なプロンプトは避けたいと思うフラストレーションです。

読んでくれてありがとう。

ブライアン

8
Brian M. Hunt

私はそれをテストしていませんが、vimの公式ウィキで提示されているこのソリューションはどうですか?

スワップファイル "..."はすでに存在します!-それを比較してください

また、復元されたスワップファイルが実際のファイルと同一であることが判明した場合でも、差分をとる必要はありません。

#!/bin/bash
# Expects variables realfile, swapfile, recoveryfile.
vim -r "$swapfile" -c ":wq! $recoveryfile" && rm "$swapfile"
if cmp "$recoveryfile" "$realfile"
then rm "$recoveryfile"
else vimdiff "$recoveryfile" "$realfile"
fi

Stackoverflow にもこの問題のスクリプトがあります。

これにより、スワップファイルが削除されます実際のファイルで最新になります。一致しないものはすべてvimdiffウィンドウに表示されるので、保存されていない変更をマージできます。

3
GmonC

正確には必要なものではありませんが、これにより問題を軽減できます。

" Setup backup location and enable
set backup
set backupdir=$HOME/temp/vim_backups/       "where to put those backups
set directory=$HOME/temp/vim_swp/           "this is for swp files      

それらのディレクトリを作成し、vimで〜ファイルと.swpファイルを中央の場所に書き込みます。この方法でクリーンアップするのははるかに簡単です!

また、チェックアウト recover.vim -。swpファイルが検出されると、ディスク上のバージョンとswpで差分を実行するように求められるため、何が変更されたかを確認できます。この方法でIMOがはるかに役立ちます。

4
redacted

Vimは、まさにその状況のバックアップとして.swpファイルを自動的に作成します。システムがクラッシュします。 .swpファイルの作成を無効にするには、 これら の手順に従います。

Googleの最初の結果:vim disable .swp

0
mcandre