接続を失うことでvimでセッションを終了するたびに、むしろドレッドでいっぱいになります(それでもvimを使用し続けます...私はマゾヒストである必要があります)。ファイルが私の作品を破壊するのを待っています。vimスワップファイルを操作するためのベストプラクティスは何ですか?最新のものを選んでいますか?ファイルが期待どおりに機能する場合は、スワップファイルを削除するだけですか?どうやってそれらを取り除くのですか?
接続を失うことでvimでセッションを終了するたびに、むしろドレッドでいっぱいになります(それでもvimを使用し続けます...私はマゾヒストである必要があります)。ファイルが私の作品を破壊するのを待っています。vimスワップファイルを操作するためのベストプラクティスは何ですか?最新のものを選んでいますか?ファイルが期待どおりに機能する場合は、スワップファイルを削除するだけですか?どうやってそれらを取り除くのですか?
回答:
vim はユーザーが自分で書き込むまで変更を書き込まないため、ファイルの回復は常に安全です。そのため、スワップファイルから回復し、保存せずに閉じても何も変わりません。
vimを入手して、すべてのスワップファイルを同じ場所に配置して、どこにあるかを常に把握できるようにします。
set directory^=$HOME/.vim/swap//
またはあなたが好むところはどこでも。//
ファイル名の最後で使用すると、vimはスワップファイル名に絶対ファイルパスを使用するため、名前の衝突が発生しません。ディレクトリーが存在することを確認してください。存在しない場合、vimはそれを使用しません(作成しません)。
注:これは環境変数でのみ機能します。vimscript変数を使用する場合は、:execute
魔法を使用する必要があります。
execute "set directory^=".my_vim_home_var."/swap//"
Vimのヘルプは、この状況で使用する非常に便利なコマンドを提案しています:DiffOrig
。これはデフォルトのvimコマンドではないため、実装を:h :DiffOrig
vimrcにコピーします。($VIMRUNTIME/defaults.vim
vim8を使用している場合も同様です)。これで、ファイルを回復し、DiffOrigを実行するだけで、変更されていないバージョンから変更された内容のvimdiffを取得できます。
複数のスワップファイルの内容を比較する場合は、異なるスワップファイルごとにファイルを回復し、結果を一時ファイルに書き込みます。ファイルをロードして:diffthis
各ファイルで実行し、必要な変更を加え、元のファイルに書き戻し、一時ファイルとスワップファイルを削除します。
:swapname
:vimが現在のバッファのスワップファイルに使用している名前を取得します(:h :swapname
)
:recover
:vimを起動してR(:h :recover
)を押したときと同じように、選択したファイルを回復します
Vimには、回復に関するユーザーマニュアルのセクション全体があり:usr_11.txt
ます。スワップファイルに関するVimのリファレンスヘルプ::h swap-file
、h recovery
ディレクトリオプションに関するヘルプ(スワップファイルの場所を設定するため)::h 'directory'
編集: @B Layerのコメントで指摘されているように、ディレクトリ設定の例を変更
exec
... 初期化された環境変数であるset directory^=$HOME/.vim/swap//
限り正常に動作し$HOME
ます。をご覧ください:h expand-env
。またで動作しdictionary
、undodir
、およびbackupdir
少数を示すために。
個人的に、私はスワップファイルとバックアップファイルをオフにしました。それはどこでもスワップファイルとバックアップファイルを作成する傾向があり、頻繁に競合を引き起こすからです。Vimの永続的な取り消しは、はるかに信頼性が高く、エラーがありません。
現在、Vimには永続的な取り消しがあります。これは、よりきめの細かいバックアップ方法です。を押すたびEscに、ファイルの現在の状態がキャプチャされます。
:undolist
、またはgundoやundo-treeのようなプラグインを使用して、取り消し履歴を閲覧できます。
この方法でvimを使用するには:
シェル内:
mkdir ~/.vim/undodir
Vimで
set undodir=~/.vim/undodir
set undofile
スワップファイルをオフにするには: :set noswapfile
'writebackup'
さらに別の問題に対処します)。永続的な取り消しを有効にしても、コンピューターがクラッシュした場合には役に立ちません。他の理由(現代のOSの安定性、UPSの存在)のためにスワップファイルは不要であると主張することができますが、この回答ではそうしていません。2.設定'undodir'
は永続的な取り消しを有効にしません!'undofile'
これを設定する必要があります