VIM (gvim/macvim) は、保存されていない/名前のないバッファのスワップ ファイルをどこに保存しますか? (保存する場合)。
背景: かなり集中したセミナーの最中、名前も保存もされていない MacVim バッファにメモを取っていたところ、MacBook の電池が切れて突然電源が落ちました (通常どおりスリープ/休止状態にはならず)。
質問: 保存されていない作業がスワップ (.swp) ファイルなどに保存され、回復できる可能性があるかどうかご存知の方はいらっしゃいますか?
システムの詳細: 特に、Mac OS X 10.5.8 で MacVim を使用しているときにこの問題が発生しました (ただし、他のバージョンの回復のヒントも興味深いものです)。クリーンアップ プロセスが開始される可能性があるため、MacVim はまだ再起動していません。
答え1
vim を起動して試してください:
:recover <filename>
ファイルに名前が付いていない場合は、次のようにします。
:recover
これが最善の策です。スワップ ファイルと回復の詳細については、以下を参照してください。
:help usr_11
スワップ ファイルについては、通常は編集中のファイルと同じディレクトリに保存されますが、先頭に . が追加されて非表示になり、末尾に .swp が付きます。ただし、次のようにして別の場所に移動することもできます。
:set directory=~/vimswap
または類似。
見る:
:help swap
詳細はこちらをご覧ください。
ただし、vim スワップ ファイルは編集されたバッファと同じではないため、回復のために何ができるかについては、上記を必ず読んでください。
編集: 質問に答えるコメント:
[…] スワップ ファイルを探すために、現在の作業ディレクトリ、~/tmp、/var/tmp、および /tmp を検索するようです。私の場合は、常に現在の作業ディレクトリが設定されており、そこにファイルが保存されます。– dsclementsen 2010年10月5日 1:42
また、vim -r コマンドライン引数も必ず確認してください。これにより、見つかったすべてのスワップ ファイルとその場所が出力されます。さらに、日付/変更日時/ユーザー名などの追加情報も多数表示されます。– Neg_EV 2010年10月5日 13:49
答え2
私は Windows 10 で作業していますが、:recover
スワップ ファイルが見つかりません。vim -r
最後の編集セッション (これも保存されていない) のスワップ ファイルを _.swp という名前でリストしました。 で回復できました:recover _
。
答え3
答えは、あちこちにあります。正しいものを探すのがコツです。/tmp ディレクトリにあるものもありますが、ホーム ディレクトリの下のどこかにたくさんあります。
これを行うにはもっと効率的な方法があるかもしれませんが、名前のないファイルを失ったとき(MacBook 上)は次のようにするとうまくいきました。
ホームディレクトリで、バックアップファイルを検索します (数秒かかりますが、おそらくもっとスマートにできます)。
find ./ -name ".s*" > findVimBackups.txt
ファイルを開く:
vim findVimBackups.txt
名前のないファイルのバックアップに含まれないファイル名を削除します。
:g!/\/\.s..$/d
:g/svn/d
名前のないバックアップ ファイルの場所のリストが表示されます。各ディレクトリで、今日のファイルが見つかるまで以下を実行します。
ls -ltra <directory>
正しいディレクトリに cd して vim を開き、:recover と入力して正しいバックアップを選択します。
答え4
次のようにして、Win 10 ボックスでファイルを回復できました。
最後に vim を開いたディレクトリに移動します。私の場合は、Windows 10 タスク バーの vim ショートカットから移動しました。vim アイコンを右クリックし、vim ショートカットをもう一度右クリックして、[プロパティ] を選択します。ダイアログがポップアップ表示されます。そのダイアログの [開始場所:] フィールドの値は、実際に最後に vim を開いた場所です。私の場合、その値は でした%HOMEDRIVE%%HOMEPATH%
。DOS コマンド コンソールに移動して、コマンドとを呼び出してecho %HOMEDRIVE%
、echo %HOMEPATH%
その場所を特定します。
そのディレクトリ内のすべての _.s* ファイルの最終更新日を調べます。ファイルを最後に開いたときの最終更新日と一致するファイルを見つけます。
:recover _filename_
vimを開きます。ファイル名前の手順で見つけたファイルです。