スワップファイルの目的は何ですか?


74

ファイルを編集すると、Vimはという名前のファイルを作成する傾向がありますが、これは迷惑です。から、このオプションはスワップファイルの作成を抑制することがわかります。.filename.swpvim -h-n

デフォルトでスワップファイルを無効にするために使用できるvimrcディレクティブはありますか?

スワップファイルの目的は何ですか?また、それらを抑制することでどの機能が失われますか?


FWIW、私もスワップファイルが迷惑だと思う、そしてしばらくの間私noswapfileは以下に提案するように使用してみました。結局のところ、私は最終的にはそれをやめて、それをやめました。なぜなら、明らかに利点が面倒さを上回っているからです。おそらくコンピューターがクラッシュし、失われたファイルを復元することができませんでした。これは、スワップファイルを有効にすると簡単だったでしょう。
カイルストランド

回答:


89

スワップファイルの理由

スワップファイルには、バッファに加えた変更が保存されます。Vimまたはコンピューターがクラッシュした場合、これらの変更を回復できます。

スワップファイルは、Vimの複数のインスタンスが同じファイルを編集することを回避する方法も提供します。これは、マルチユーザーシステムで便利な場合や、既にファイルを編集している別のVimがあるかどうかを知る場合に役立ちます。

スワップファイルを無効にする

スワップファイルの作成を完全に無効にする場合(推奨しません)、に追加できset noswapfileます.vimrc。これにより、オプションのグローバル値が設定されます。次に、:setlocal swapfileVimの実行中にを使用して、特定のバッファーに対してそれをオーバーライドできます。

スワップファイルの整理

問題がファイルシステム全体に広がる余分なファイルに関するものであれば、すべてのスワップファイルを1か所に集約することができます。たとえば、~/.vim/tmpディレクトリを作成してから追加します

set directory^=$HOME/.vim/tmp//

.vimrc。この'directory'オプションには、Vimがスワップファイルの試行と保存に使用するディレクトリのリストが含まれています。

^=構文:set前に付加リストの先頭にディレクトリ名を、そうVimは最初にそのディレクトリをチェックします。

//ディレクトリ名の末尾には、異なるディレクトリから同じ名前のファイル間の衝突がないので、スワップファイルを作成するには、ファイルへの絶対パスを使用するようにVimを伝えます。

これにより、同じファイルを編集しようとする複数のユーザーがいるときにVimが気付かないように注意してください。スワップファイルは元のファイルと同じディレクトリにないため、他のユーザーのVimはスワップファイルを認識せず、既に編集されていることを警告しません。


4
しばらくvimになった今、永続的な取り消しよりもスワップファイルの利点は何ですか?
alpha_989

を使用しますvim-auto-save。これはスワップファイルの必要性を非難しませんか?
ケビン

@Kevinそれは依存します。Vimがスワップファイルを書き出すすべてのシナリオでプラグインが保存を引き起こしている場合は、おそらく。そうしないと、バッファが保存されない期間が残り、swapfileが役立ちます。
ジェムサン

@ alpha_989これらは補完的です。スワップファイルを使用すると、保存されていない変更を回復できます。永続的な取り消しファイルを使用すると、Vimセッション間で取り消し履歴をたどることができますが、ファイルは保存するときにのみ書き込まれます。
ジェームスサン

1つのインスタンスのみにvim no swapを設定する方法はありますか?例えばvim temp.txt --some-command-that-disable-swap?私のユースケースでは、一部のウォッチャーがディレクトリの変更を監視し続けるため、そのときまでにスワップを無効にして衝突を防止したいと考えています。
Ng Sek Long
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.