交换文件的目的是什么?


72

当我编辑文件时,Vim倾向于创建名为的文件,我觉得很烦。从中,我看到该选项禁止创建交换文件。.filename.swpvim -h-n

是否有一个vimrc指令,我可以默认使用它来禁用交换文件?

交换文件的目的是什么,而抑制它们会丢失哪些功能?


FWIW,我也发现交换文件很烦人,并且有一段时间我尝试noswapfile按照以下建议使用。不过,我最终还是放弃了,因为显然好处多于烦恼-buuuuuut实际上我不记得是什么说服了我恢复交换文件的使用。可能是我的计算机崩溃了,我无法恢复丢失的某些文件,而这些文件在打开交换文件后就变得微不足道了。
Kyle Strand

Answers:


88

交换文件的原因

交换文件存储您对缓冲区所做的更改。如果Vim或您的计算机崩溃了,它们将允许您恢复这些更改。

交换文件还提供了一种避免Vim的多个实例编辑同一文件的方法。这在多用户系统上很有用,或者只是知道您是否已经有另一个Vim正在编辑文件。

禁用交换文件

如果要完全禁用创建交换文件(我不建议这样做),则可以将其添加set noswapfile到中.vimrc。这将设置选项的全局值。然后,您可以通过:setlocal swapfile在运行Vim时使用来覆盖特定缓冲区的缓冲区。

组织交换文件

如果您的问题更多地是围绕文件系统散布的多余文件,则可以将所有交换文件集中在一个地方。例如,创建~/.vim/tmp目录,然后添加

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

给你.vimrc。该'directory'选项包含Vim将用来尝试存储交换文件的目录列表。

^=语法:set预先将目录名列表的头,让Vim会首先检查该目录。

//在目录名的末尾告诉Vim所以没有在不同的目录同名的文件之间的冲突使用绝对路径的文件创建交换文件。

请注意,当有多个用户试图编辑同一文件时,这将防止Vim注意到。由于交换文件与原始文件不在同一目录中,因此其他用户的Vim将不知道交换文件,也不会警告他们交换文件已被编辑。


4
交换文件已经存在一段时间了,它比永久撤消文件有什么好处?
alpha_989 '18

我用vim-auto-save。这样是否就不再需要交换文件?
凯文

@Kevin这取决于。如果插件在每种情况下都导致Vim会写出交换文件的保存,那么可能是。否则,仍然会有一段时间不保存缓冲区,而交换文件可以提供帮助。
jamessan '18

@ alpha_989它们是互补的。交换文件使您可以恢复未保存的更改。持久撤消文件允许您遍历Vim会话中的撤消历史记录,但是仅在保存时才写入该文件。
jamessan '18

设置vim仅对一个实例不交换的任何方法?例如vim temp.txt --some-command-that-disable-swap?我的用例是某些观察者将继续监视目录中的任何更改,因此只有到那时,我才要禁用swap以防止冲突。
吴锡龙
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.