当我编辑文件时,Vim倾向于创建名为.filename.swp的文件,我觉得很烦。从vim -h来看,我看到-n选项禁止创建交换文件。交换文件的目的,以及通过抑制它们会失去哪些功能?

评论

FWIW,我也发现交换文件很烦人,有一段时间,我尝试使用noswapfile,如下所示。不过,我最终还是放弃了,因为显然好处多于烦恼。可能是我的计算机崩溃了,我无法恢复丢失的某些文件,而这些文件在打开交换文件后会变得很简单。

#1 楼

交换文件的原因

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

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

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

组织交换文件可以将所有交换文件汇总到一个位置。例如,创建一个~/.vim/tmp目录,然后将

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


添加到您的.vimrc中。 'directory'选项包含目录列表,Vim将使用该目录尝试存储交换文件。首先。

目录名末尾的^=告诉Vim使用文件的绝对路径创建交换文件,因此来自不同目录的同名文件之间不会发生冲突。

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

评论


交换文件已经存在一段时间了,相比于永久撤消,交换文件有什么好处?

–alpha_989
18年2月1日在3:48

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

–凯文
18/12/6在20:45

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

–詹姆斯
18/12/6在21:23



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

–詹姆斯
18/12/6在21:24

设置vim仅对一个实例不交换的任何方法吗?例如vim temp.txt --some-command-that-disable-swap吗?我的用例是某些观察者将继续监视目录中的任何更改,因此只有到那时,我才要禁用swap以防止冲突。

–吴锡龙
19-10-14在2:59