Vimが〜拡張子の付いたファイルを保存するのはなぜですか?


180

WindowsでVimを使用しているときにVimがファイルを保存すると、 .ext.swp Vimウィンドウと.ext~ファイルを閉じると削除される。

.ext.swpVimがクラッシュした場合に備えて、ファイルはセッションバックアップであると思います。.ext~しかし、ファイルの目的は何ですか?これは永続的なバックアップファイルですか?これらの重複なしに、作業中のすべてのファイルをホストにコピーするのは面倒です。どうすればこれをオフにできますかまたはそれが正当な理由で存在する場合は、ファイルを非表示にできますか?


複数の場所で同時にファイルを開いている場合、それらはを作成し.ext.swpます。
2009

2
dirkgently:いいえ、ここでは唯一のvimウィンドウでファイルを開くことができ、.swpファイルが作成されます。ウィンドウを保存したり閉じたりすると削除されるので、それほど心配していません。
ロス

回答:


221

*.ext~ファイルはバックアップファイルであり、編集前のファイルが含まれています。

この*.ext.swpファイルはスワップファイルであり、ロックファイルとして機能し、取り消し/やり直しの履歴や、Vimが必要とするその他の内部情報が含まれています。クラッシュが発生した場合は、ファイルを再度開くと、Vimがスワップファイルから以前の状態を復元します(これは役立つので、オフにしないでください)。

バックアップファイルの自動作成をオフにするには、(vimrcで)を使用します。

set nobackup
set nowritebackup

ここでnowritebackup、Vimのデフォルトの「保存」動作を変更します。

  1. 新しいファイルにバッファを書き込む
  2. 元のファイルを削除する
  3. 新しいファイルの名前を変更する

そして、Vimにバッファーを元のファイルに書き込みます(I / Oエラーの場合にバッファーを破壊する危険があります)。しかし、Windowsデスクトップ上の「ファイルのジャンプ」を防ぐことができます。これが、私が配置する主な理由ですnowritebackup


7
1の場合you prevent "jumping files" on the Windows desktop。グーグル検索し、この答えを見つけました
Merlyn Morgan-Graham

1
実際に- nobackupとの両方が必要nowritebackupですか?ファイルのコピーをバックアップとして書き込む方法はありますが、書き込み/削除/名前変更はできませんか?
マーリンモーガングラハム

@Merlyn:(とはbackup対照的にnobackup)がある場合、Vimはバックアップ(*.ext~ファイル)を作成します。これはとはまったく関係ありませんnowritebackup
トマラック

6
これらのスイッチの組み合わせ間の異なる動作を説明する表がありますhelp backup-table。とのどちらnobackupも設定しないことnowritebackupがわかりますが、代わりに設定backupcopy=yesすると「ジャンプ」問題も解決されます。これには、それぞれ独自に、しかし、PERF傷つける可能性
メルリンモルガン・グラハム

27
をオフにする代わりに、set backupdir=~/.vim/backupWindowsの.vimrcまたは_vimrcのディレクトリにバックアップします
tsukimi

224

より良い解決策は、これらの行をvimrcファイルに配置することです

set backupdir=~/vimtmp//,.
set directory=~/vimtmp//,.

1行目はバックアップファイル用、2行目はスワップファイル用です。最後にダブルスラッシュを付けることで、同じ名前の2つのファイルがある場合に競合が発生しないようにします。コメントを参照してください(この編集時、このオプションは、まだバックアップファイルはなく、スワップファイルにのみ適用されます)。,.許しますvim前者が存在しない場合は、現在のディレクトリを使用します。

これを機能させるには、vimtmpというホームディレクトリにディレクトリを作成する必要があります。また、構成でバックアップが有効になっていることを確認します(有効になってset backupいない場合は追加します)。

そうすれば、両方のメリットを享受でき、ファイルを見る必要はありませんが、何かがわからなくなったら、vimtmpからバックアップファイルを取得できます。時々ディレクトリを削除することを忘れないでください。


22
+1私は実際に〜/ .vim / tmpに設定しましたが、どちらにせよ、これにより複数回にわたってお尻が節約されました。
JC Yamokoski

11
なぜあなたは必要ですか?各行の終わりに?

9
@shin Vimは最初に利用可能なディレクトリを使用するため、この場合〜/ vimtmpが存在しない場合、現在の作業ディレクトリを使用します
xixixao

3
@SalmanPK理想的な世界では、一般にアクセス可能なサーバーで構成ファイルを直接編集しないでください
Score_Under

12
パスの最後にスラッシュを2つ使用します。たとえば、backupdir =〜/ .vim / .backup //を設定します-ディレクトリの最後の「//」は、ファイル名が完全なパスからファイルに構築され、すべてのパス区切り文字がパーセント「%」に置き換えられます「サイン。これにより、保存ディレクトリでのファイル名の一意性が確保されます。
Hacknightly

25

これらのファイルをオフにするには、次の行を.vimrc(UNIXベースのOSのvim構成ファイル)に追加するだけです。

set nobackup       #no backup files
set nowritebackup  #only in case you don't want a backup file while editing
set noswapfile     #no swap files

12
:set nobackup 

バックアップをオフにします。これらのバックアップファイルが必要な場合は、中央フォルダーにbackupdirを設定することもできます。このようにして、作業ディレクトリに〜ファイルが散らばっていません。

バックアップの詳細については、:he backupを参照してください。


12

また、別のバックアップ拡張機能とそれらのバックアップを保存する場所を設定することもできます(私~/.vimbackupsはLinuxをお勧めします)。以前は「バージョン管理された」バックアップを使用していました。

au BufWritePre * let &bex = '-' . strftime("%Y%m%d-%H%M%S") . '.vimbackup'

これにより、動的バックアップ拡張(ORIGINALFILENAME-YYYYMMDD-HHMMSS.vimbackup)が設定されます。


3
あなたはすなわち入れて、ディレクトリバックアップを設定する方法を含めることができますset backupdir=~/.vimbackupsあなたの〜/ .vimrcとに
ホタルブクロ

1
vimヘルプはこの手法を完全に説明しています。参照してください:help backupext
netjeff

8

この行をあなたに入れてくださいvimrc

set nobk nowb noswf noudf " nobackup nowritebackup noswapfile noundofile


それは:

C:\Program Files (x86)\vim\_vimrc

すべてのユーザーのシステム全体のvim構成のファイル。

noundofileWindowsで最後のものを設定することは、*~編集後にチルダファイルが作成されないようにするために重要です。


Vimにその行がデフォルトで含まれていたといいのですが。醜いディレクトリが好きな人はいません。

ユーザーに、高度なバックアップ/元に戻すファイル機能を最初に有効にするかどうかとその方法を選択させます。

これはVimの最も煩わしい部分です。

次のステップは次の設定です。

set noeb vb t_vb= " errorbells visualbell

ビープ音を無効にする 同じように :-)


本当にありがとうございました!「noundofile」は、その神のようなごみを最終的に取り除くオプションでした。(そして私はあなたがあなたがあなたの投稿に書いた他のすべてのものに100%同意します!)
pwmusic '23 / 09/23

6

その.swpファイルがvimによってロックおよびリカバリファイルとして使用されていることは正しいです。

set nobackupこれらのファイルが必要ない場合は、vimrcに入れてみてください。スクープ全体が必要な場合や、代わりに.bakファイルが必要な場合は、バックアップ関連のさまざまなオプションについてVimのドキュメントを参照してください...


+1は、ロックファイルとして目的を説明するために使用します。私はそのことを考えていませんでした。
トマラック

5

私のために働いた唯一のオプションは、この行を私の〜/ .vimrcファイルに入れることでした

noundofileを設定する

バックアップファイルを参照する他のオプションは、末尾が〜(チルダ)の一時ファイルの作成を妨げませんでした


これは最終的に私のために働いた。なぜこれが他の回答で言及されていないのですか?これにより、:.<filename>.un~ファイルが削除されますが、他のオプションでは<filename>~ファイルのみが削除されます。
JLT

0

set noundofile〜_gvimrc に追加する必要がありました

「〜」ディレクトリは、cd ~コマンドでディレクトリを変更することで識別できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.