.swpファイルがあるファイルを開くときに、迷惑な警告を取り除くにはどうすればよいですか?または、どのようにして.swpファイルをまったく生成しないのですか?警告の例:
E325: ATTENTION
Found a swap file by the name ".notes.swp"
owned by: james dated: Fri Dec 3 17:38:07 2010
file name: ~james/school/se/project-dir/rottencucumber/doc/notes
modified: no
user name: james Host name: james-laptop
process ID: 2251 (still running)
While opening file "notes"
dated: Fri Dec 3 18:46:10 2010
NEWER than swap file!
(1) Another program may be editing the same file.
If this is the case, be careful not to end up with two
different instances of the same file when making changes.
Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r notes"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".notes.swp"
to avoid this message.
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
このメッセージは、[失わない]保存されていない可能性のあるテキストに関心がある場合、実際にはかなり重要です。notにする必要がありますnotは、煩わしいと見なされ、急いでスワップファイルを削除するか、スワップファイルなしで実行するようにvim
を構成します。
vim
を使用して編集するファイルには、対応するスワップファイル編集中があります。これは、vim
が変更を追跡するために使用します。ファイルの編集を終了すると、vim
は対応するスワップファイルを自動的に破棄します。したがって、スワップファイルが存在すること、および元のファイルに上書きしようとすることは、検討および適切なアクションの原因となるはずです。
メッセージ(E325: ATTENTION Found a swap file
)で示される2つのシナリオは、実際には非常に一般的です:(1)別のvim
プログラムが、編集しようとしているものとまったく同じファイルを編集しています(実際には別の人物である可能性があります。その場合、reallyは、スワップファイルを盲目的に削除するだけでは意味がありません-または、別のターミナルウィンドウまたはタブにいる可能性があります)、または(2)以前のvim
セッションがクラッシュしました(ほとんどの場合、これはリモートで編集しているときに発生し、ネットワークセッションが切断されます-この場合、vimセッションが正常に終了せず、.swp
ファイルが残っています。この2番目のシナリオの別の例は、アクティブまたはバックグラウンドのvim
セッションがあったターミナルウィンドウまたはタブを誤って閉じた場合です。
このメッセージが表示されたとき、私は通常、このファイルを別のターミナルウィンドウまたはタブで編集しているかどうかについて考えます。
別の場所で編集していることに気付いた場合、[それに戻ることができます、次にq
キーを押してこの追加セッションを(Q)uit
し、元のvim
セッションによる編集に戻ります。
完全にわからない場合は、(Q)uit
を実行してjobs
を実行し、まったく同じ端末でvim
を実行しているかどうかを確認します。何も表示されない場合は、ps -ef | grep vim
を実行して、他の場所(つまり、別のターミナルウィンドウまたはタブ)でvim
を実行しているかどうかを確認します。ポイントは、私は常に元のvim
セッションを介して編集を再開しようとすることです。
元の編集セッションに戻れないことが確実で、次のオプションが引き続き表示される場合は、r
を押して(R)ecover
を押します。
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
r
を押すと、次のようなメッセージが表示されます。
Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
一方、シェルプロンプトが表示されているためにこれらのオプションにもう直面していない場合は、-r
オプションを指定してvim
を次のように実行します。
vim -r notes
結果のメッセージは次のようになります。
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
どちらの方法でも、ENTER
を押して続行すると、ファイルが表示されます。
注:Vimが検出した内容に疑問がある場合は、エラーメッセージが表示され、「???」の行が挿入されます。本文中。リカバリ中にエラーメッセージが表示された場合は、ファイルで「???」を検索してください。何が悪いのかを確認します。必要なテキストを取得するために、カットアンドペーストすることもできます。
最も一般的な発言は「??? LINES MISSING」です。つまり、Vimは元のファイルからテキストを読み取ることができません。これは、システムがクラッシュし、元のファイルの一部が保存されなかった場合に発生する可能性があります。
そうは言っても、私はそれらの???
マークを見たことがないので、これは本当にまれな発生であるに違いありません。
次に、コンテンツを別のファイルに保存(つまり、書き込み)します(通常、元のファイル名の最後に「2」を追加するだけです)。
:w notes2
次に、このvim
セッションを強制終了します。
:q!
次に、2つのファイルを比較します。
diff notes notes2
diff
が何も返さない場合は、違いがないことを意味し、スワップファイルと2番目のファイルの両方を削除しても安全です。
rm .notes.swp notes2
この時点で、元のファイルを開き、問題がなかったかのように続行します。
vim notes
diff
が何かを返す場合、(スワップファイルを介して)元のファイルに、リカバリにより2番目のファイルに保存された変更があったことを意味します。
これらの変更は2番目のファイルにキャプチャされるため、スワップファイルを削除して元のファイルを2番目のファイルで上書きしても安全です。
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
この時点で、元のファイルを開き、問題がなかったかのように続行します。
vim notes
これは大変な作業のようですが、ワークフローに慣れると、最大20秒かかります。
貼り付けられたメッセージは、「ノート」ファイルが別のVimセッションでまだ開いていることを示しています。他の場所で編集されているファイルを編集することは、絶対にお勧めできません。
そのメッセージが間違っている場合は、Vimセッションがどのように不適切に終了したかを判別し、今後それを回避する必要があります。
回復に関しては、「ノート」はそれに関連付けられているVim .swpファイルより新しいため、この1つのインスタンスで問題になる可能性がありますが、まだ試すことができます。最初に、必ず「ノート」ファイルをバックアップ場所にコピーしてください。
「:help recover.txt
"。
ここでの教訓は、このメッセージが表示されることになっているわけではなく、どこかに問題があることを意味しているということです。 (おそらく)Vimのせいではありません。
この時点で、Vimに.swpファイルを作成させず、クラッシュやその他の関連する問題から回復できるようにすることが絶対的に決まっている場合は、「set noswapfile
"~/.vimrc
。
-nを使用して スワップファイルを使用せずにvimを開く :
これを常に行うには、
alias vim='vim -n'
.bashrcまたは.bash_aliasesファイル
-nオプションなしでvimを実行する必要がある場合は、次を実行してください。
\vim
vimは、適切に終了すると、生成された.swpファイルを削除します。
.swpファイルがあるファイルを開くときに、迷惑な警告を取り除くにはどうすればよいですか?
~/.vimrc
で short message オプションを使用します。
set shortmess=A
POSIXモード実行時のデフォルトでもあります。
ただし、これを行わないでください:燃料効率を高めるために車のエアバッグを取り外すようなものです。長期的には、質問に答えたときよりも回復に多くの時間を費やすことになります。
これは、私の端末がvi openとの接続を予期せず閉じたときに起こりました。
ありがたいことに、変更が失われることはありませんでした。
その警告を削除してスワップを破棄するには:
process ID: 2251 (still running)
を見て、この場合は2251です。ps 2251
kill 2251
以上です。
スワップファイルはユーザーを保護するためにあり、完全に無効にしないでください。