vimが一時ファイルを作成する(および残す)のを防ぐ方法は?


163

なぜvimは<filename>~ファイルを作成するのですか?それを無効にする方法はありますか?

バックアップ(または何か)の場合は、gitを使用します。

また、これらの.<filename.with.path.hints>.swpファイルも。

それらを作成しないように、または少なくとも後からクリーンアップするようにvimに指示するにはどうすればよいですか?

編集

おっと、重複:

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

そこからrogeriopvlの回答を採用しました。

逐語的コピー:

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
Gitは、システムクラッシュ後の作業の回復を支援しません。Gitは* .swpファイルも無視できます。= D
vmassuchetto



笑誰かがこの質問を6年間投稿した後で真剣に重複としてマークしましたか?
hasen

回答:


78

(Vimがクラッシュした場合に備えて)スワップファイルを使い続けることを強くお勧めします。

スワップファイルが保存されているディレクトリを設定して、通常のディレクトリが乱雑にならないようにすることができます。

set swapfile
set dir=~/tmp

こちらもご覧ください

:help swap-file

4
まあ、vimが頻繁にクラッシュすると言わない限り、私はnotepad ++でそれらを必要としませんでした!
hasen

8
いいえ、私はvimが頻繁にクラッシュすることを示唆していませんでした(クラッシュしたことは確認しましたが)。しかし、私の作業環境では、作業中のホストへのネットワーク接続が非常に不安定であるため、編集が中断されます。スワップファイルが役立ちます。
user55400 2009

9
@ user55400はGNU / Screenを聞いたことがありますか?(またはtmux、またはこの日本語の代替)
Elazar Leibovich '26 / 04/11

これをWindowsの_vimrcファイルに追加しましたが、まだfile〜ファイルを取得しています。私は何かを正しくしていませんか?
FilBot3

2
@noircc / tmpを使用しないことをお勧めします。システム全体がクラッシュし、再起動する必要がある場合、スワップファイルは失われます。

56

これを.vimrc構成ファイルに入れます。

set nobackup

5
Vimを搭載したWindows 8.1でこれを行いました。スワップファイルはまだ存在しています。
Shaun Luttin、2015年

1
ショーン、元の質問の編集で述べたように、新しいスワップファイルが作成されないようにするために、.vimrcに "set noswapfile"を追加する必要があるかもしれません。
Earl Zedd 2015

キーワードの:前の接頭辞としてのシッティングはどうsetですか?必要ですか?これは、コメント..似ていない
ステファン

@Stephane :接頭辞は、コマンドモードで実行されることを意味し:ますが、vimrcを作成するときに必要はありません
TankorSmash

それは本当に良い考えではありません。これらのファイルをtemp /フォルダーに置くという上記の方法は、すでにはるかに優れています。
MonsieurMan

36

; Windowsユーザーが一時ディレクトリに戻るには

set backup
set backupdir=C:\WINDOWS\Temp
set backupskip=C:\WINDOWS\Temp\*
set directory=C:\WINDOWS\Temp
set writebackup

6
\ WINDOWS \温度:私はセットundodirを追加する必要がありました= C

これは私にはうまくいきませんでした-代わりにset dir = $ TEMPを使用する必要がありました
Frank Schmitt

10

「noswapsuck」というプラグインを作成しました。これは、バッファーに未保存の変更が含まれている場合にのみスワップファイルを有効にします。変更が保存されると、スワップファイルはクリアされます。したがって、ディスク上のファイルと同じ内容を含むスワップファイルは削除されます。

ここで入手: noswapsuck.vim

うまくいきましたが、今まで一度も公表したことがないので、フィードバックをお待ちしています。

利点:

  • ディスクに残っている唯一のスワップファイルは、実際にファイルとは異なる重要なスワップファイルです。

短所:

  • バッファにスワップファイルがある場合、ファイルが最初に開かれたときにスワップファイルは検出されません。swapfileが有効になっている場合、つまりバッファの編集を開始したときにのみ検出されます。それは迷惑なほど遅く、あなたを邪魔します。 (解決済み:バッファーを開いたときに、swapfileオプションを一時的に再びオンにすることで、既存のスワップファイルを確認します。)

  • ディスクへの書き込みを最小限にしたい環境(低電力、ネットワーク経由でマウントされたファイル、または巨大なファイルの編集など)で作業している場合、すべての場所でスワップファイルを削除して再作成し続けることは理想的ではありません。保存して編集します。このような状況では、次のことができます。

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    

    これは、書き込み後のスワップファイルを保持しますが、バッファーがフォーカスを失った場合でもスワップファイルを削除します。

ちなみに、私はを押した:DiffAgainstFileOnDisk後にかなり便利な別の小さなプラグインを持っています。これは(r)ecover、回復したバッファが既存のファイルよりも新しいか古いか、または同じかどうかを確認するためです。


8

Windowsでは、次の行を_vimrcに追加します

" store backup, undo, and swap files in temp directory
set directory=$HOME/temp//
set backupdir=$HOME/temp//
set undodir=$HOME/temp//

5

この回答は、Windows 10でのgVimの使用に適用されます。他のオペレーティングシステムで同じ結果が得られることは保証できません。

追加:

set nobackup
set noswapfile
set noundofile

_vimrcファイルに。

注:これは質問への直接の回答(Windows 10の場合)であり、おそらく他の回答を読んで最も安全な方法ではありませんが、私の場合はこれが最も速い解決策です。


0

私のUbuntu .vimrcにこの設定があります。プロジェクトファイルにスワップファイルがありません。

set undofile
set undolevels=1000         " How many undos
set undoreload=10000        " number of lines to save for undo

set backup                        " enable backups
set swapfile                      " enable swaps
set undodir=$HOME/.vim/tmp/undo     " undo files
set backupdir=$HOME/.vim/tmp/backup " backups
set directory=$HOME/.vim/tmp/swap   " swap files

" Make those folders automatically if they don't already exist.
if !isdirectory(expand(&undodir))
    call mkdir(expand(&undodir), "p")
endif
if !isdirectory(expand(&backupdir))
    call mkdir(expand(&backupdir), "p")
endif
if !isdirectory(expand(&directory))
    call mkdir(expand(&directory), "p")
endif
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.