vimでのスワップファイル作成の無効化


216

.swpvimでファイルの作成を無効にする方法はありますか?または、少なくとも1つの場所ですべてを作成して、簡単に見つけて削除できるようにします。

同時に編集しながら親ディレクトリをコピーすると、特に煩わしく感じます。もちろん、find -execを使用してそれらを見つけて削除できることはわかっています。しかし、もっと実用的な解決策が欲しいのです。


1
stackoverflow.com/questions/607435/…役立つかもしれません
ロス

回答:


255

vim内からスワップファイルを無効にするには、次のように入力します。

:set noswapfile

スワップファイルを永久に無効にするには、~/.vimrcファイルに以下を追加します

set noswapfile

詳細については、スワップファイルに関するVimのドキュメントを参照してください


6
エディターがクラッシュしても(停電など)、スワップファイルは有効です。
koonse 2015

1
もう1つのオプションは、スワップファイルを使用することですが、メモリに残しておくため、ハードディスクへの書き込みを継続できません。停止中にファイルが失われるのを防ぐことはできませんが、同じファイルを別のvimで開くと、すぐに通知されます。コマンドは次の
とおりです。setdirectory

trusktrの答えは、OPの懸念に対処しながらスワップファイルの利点を維持することを可能にします。
jpaugh 2017

内部のvimから、あなたはまた、ファイルを開いている間に、スワップファイルを無効にすることができます::noswapfile edit /path/to/file
TorkelBjørnsonランゲン

データ損失に関する私の個人的な哲学はDBABであり、頻繁に保存されます...
Samy Bencherif '30 / 10/30

156

.vimrcまたは/ etc / vimrcに次の変数を設定して、vimがファイルを編集中の作業ディレクトリではなく、特別な場所にスワップ、バックアップ、および元に戻すようにします。

set backupdir=~/.vim/backup//
set directory=~/.vim/swap//
set undodir=~/.vim/undo//

パスで末尾に2つのスラッシュを使用すると、vimに名前の衝突を回避する機能を有効にするよう指示します。たとえば、ある場所にあるファイルと別の場所にある別のファイルを編集し、両方のファイルが同じ名前である場合、〜/ .vim / swap /で名前の衝突が発生しないようにします。〜/ .vim / swap //に2つのスラッシュを付けて指定した場合、vimは衝突を回避するために編集中のファイルのパス全体を使用してスワップファイルを作成します(ファイルのパスのスラッシュはパーセント記号%に置き換えられます)。

たとえば、/ path / one / foobar.txtと/path/two/foobar.txtを編集すると、〜/ .vim / swap /に%path%one%foobar.txtという名前の2つのスワップファイルが表示されます。および%path%two%foobar.txt。


保存されたバックアップファイルが
開発者の

コメント:(批判ではありません)、多くの人にとってvimの使用の大部分を占めるファイルや小さな編集、または重要でないメモの読み取りについては、余分な予約作業が省略されているように思われるため、主に開発に適しているようです。私は個人的には、すべてのジョブがスワップや他の自動バックアップを持たないようにしています。私は本当に何かを開発する必要がある場合は、私はむしろ、好ましくは、コードのバージョン管理などで、私を保護するために、より高いレベルのフレームワークを持っているだろう
jはRIV

@LelaDax確かに、すべてのソースコードにgitを使用しているため、ほとんどの場合これらのファイルはほとんど役に立ちません。まれなケース(クラッシュなど)でも便利です。しかし、実際には、私が頻繁に使用する取り消し履歴です。以前の履歴を表示するためにgit commitsをチェックアウトするよりも、すばやくナビゲートする方がはるかに簡単です。gundoを使用すると、元に戻すツリーを簡単にナビゲートできます。スワップファイルとバックアップファイルがなくても生活できます。
trusktr 2015年

26
新しい人(私のように...)の場合は、〜/ .vim /に移動して自分でディレクトリを作成する必要があります。自動的に作成されることはありません。
8月

1
vimrcにいくつかのコードを記述して、フォルダーを自動的に作成することもできます。これは私が行ったものです。したがって、新しいシステムでは、vimrcを取得するだけで、残りの処理は自動的に行われます。
trusktr 2015年

42

私はここで答えを見つけました:

vim -n <file>

スワップファイルなしでファイルを開きます。

加えて:

set dir=/tmp

.vimrcスワップファイルを作成し/tmpます。


*.ext~バックアップファイルについてはどうですか?それらを無効にするコマンドラインオプションはありますか?
Salman von Abbas

これは、1回限りの巨大なファイルに非常に役立ちます。ありがとう。
フェリペアルバレス

28

これが私の個人的な〜/ .vimrcバックアップ設定です

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup

13

他のテキストエディターが気にしていないのに、なぜvimがこの「災害復旧」のすべてを必要とするのか疑問に思う人たちにも同意します。編集するときに、vimが編集済みファイルのディレクトリに余分なファイルを作成したくないので、どうもありがとうございました。そのために、_vimrcスワップファイルを無効にし、刺激的な「バックアップ」ファイルを一時ディレクトリに移動するためにこれを使用します。

" Uncomment below to prevent 'tilde backup files' (eg. myfile.txt~) from being created
"set nobackup

" Uncomment below to cause 'tilde backup files' to be created in a different dir so as not to clutter up the current file's directory (probably a better idea than disabling them altogether)
set backupdir=C:\Windows\Temp

" Uncomment below to disable 'swap files' (eg. .myfile.txt.swp) from being created
set noswapfile

9
他の編集者が気にしないという事実は、vi(m)を十分に反映していないよりも、他の編集者をあまり反映していないと思います。同じディレクトリをこれらのファイルを置くためのデフォルトの場所にする選択は、少々残念ですが、少なくともわずかに防御可能です。(たとえば、マルチサーバーで高度にクロスマウントされた環境では、最も緊急に必要なときにリカバリファイルをどこに見つけるかが明確でない場合があります)
Domingo Ignacio

3
Vimのスワップファイルの処理はひどいものです。失われたデータを5回程度回復するために使用しました。しかし、私はスワップファイルを約9,000回リカバリするのに苦労しました。それはとにかく常にファイルと同一であり、さらに悪いことに古いバージョンです。回復プロセスがそれほどひどく苦労しなかった場合、それは良い機能かもしれません。recover.vimは少しは役に立ちますが、それでもインタラクティブすぎます。
joeytwiddle 2013年

3
Sublime Textにはがありdisaster recoveryます。大好きです!ファイルを保存する必要すらありません。保存したかどうかに関係なく、行った変更を再開すると、プルアップされます。
leetNightshade 14

変更が加えられるとすぐにすべての変更を書き込み、スワップファイルとバックアップの両方を役に立たなくする単純な自動コマンドがあります。
tbodt 2016

2
@TorkelBjørnson-LangenすべてのVimセッションを閉じずにマシンを再起動し、どのリカバリファイルが実際に有効であるかについて偏執狂しているのは、おそらく私の責任です。とにかく、保存されていない編集がある場合にのみスワップファイルを維持するプラグインを作成することで、両方の世界のベストを手に入れようとしました:vim-swap-is-
awesome.vim

7

スワップファイルを完全に無効にするために、backupdirおよびdirectoryをnullに設定できますが、一般的には、それらを一元化されたディレクトリに配置することをお勧めします。Vimは、名前の衝突やそのようなものがないことを確認します。したがって、これは完全に安全な代替手段です。

set backupdir=~/.vim/backup/
set directory=~/.vim/backup/

3
//同じ名前の2つのファイルを同時に変更できるように、パスの最後に二重スラッシュを追加する必要があります。
Samuel O'Malley

ありがとう、@ SamuelO'Malley。//は何をしますか?
モノクローム

見てい:help directoryますが、このためのドキュメントを読みたい場合に。ダブルスラッシュは、例えば、スワップファイルの名前にファイルのフルパスをエンコードするためにVimを伝える%home%sam%dotfiles%.gitignore.swpというだけよりも、.gitignore.swp
サミュエル・オマリー

3

あなたが置くなら set directory=""、あなたのexrcファイルには、スワップファイルをオフにします。ただし、これを行うとリカバリが無効になります。

詳細はこちら


3

あなたが使用している場合git、あなたは追加することができます*.swp.gitignore


それがほとんどのユーザーに必要なことだと思います!スワップファイルをオフにすることは悪い習慣です。
DenisKolodin 2016年

2

特定のファイルのためだけにvimスワップファイルを作成しない

autocmd bufenter  c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile

1
または、特定のディレクトリ内のすべてのファイルについて、以下が機能するようです(簡単なテストのみ)autocmd bufenter c:/aaa/Dropbox/TapNote/* :set noswapfile
。– scottkosty

1

Railsプロジェクトにこれを設定しようとする人は、

set directory=tmp,/tmp

あなたの中に

~/.vimrc

したがって、.swpファイルは通常の場所、つまりtmpディレクトリ(プロジェクトごと)にあります。

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