有没有办法禁止在 Vim 中创建
.swp
文件?或者,至少将它们创建在一个地方,以便我可以轻松找到并删除它们?
当我在编辑的同时复制父目录时,我发现交换文件特别烦人。当然我知道我可以使用
find -exec
来查找和删除它们,但我想要一个更实用的解决方案。
要在 vim 中禁用交换文件,请输入
:set noswapfile
要永久禁用交换文件,请将以下内容添加到您的
~/.vimrc
文件
set noswapfile
有关更多详细信息,请参阅 有关交换文件的 Vim 文档
在 .vimrc 或 /etc/vimrc 中设置以下变量,使 vim 将交换、备份和撤消文件放在特殊位置,而不是正在编辑的文件的工作目录中:
set backupdir=~/.vim/backup//
set directory=~/.vim/swap//
set undodir=~/.vim/undo//
在路径中使用双尾斜杠告诉 vim 启用避免名称冲突的功能。例如,如果您在一个位置编辑一个文件,在另一个位置编辑另一个文件,并且这两个文件具有相同的名称,那么您不希望在 ~/.vim/swap/ 中发生名称冲突。如果你指定 ~/.vim/swap// 带有两个尾部斜杠,vim 将使用正在编辑的文件的整个路径创建交换文件以避免冲突(文件路径中的斜杠将被百分号 % 替换)。
例如,如果您编辑 /path/one/foobar.txt 和 /path/two/foobar.txt,那么您将在 ~/.vim/swap/ 中看到两个名为 %path%one%foobar 的交换文件。分别是 txt 和 %path%two%foobar.txt。
这是我个人的~/.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
我同意那些质疑为什么 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
您可以将backupdir和directory设置为null以完全禁用交换文件,但通常建议将它们放在一个集中目录中。 Vim 负责确保不存在名称冲突或类似情况;所以,这是一个完全安全的替代方案:
set backupdir=~/.vim/backup/
set directory=~/.vim/backup/
如果您正在使用
git
,您可以将 *.swp
添加到 .gitignore
。
不为特定文件创建 vim 交换文件
autocmd bufenter c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile
对于任何尝试为 Rails 项目设置此选项的人,请添加
set directory=tmp,/tmp
进入你的
~/.vimrc
因此 .swp 文件将位于其自然位置 - tmp 目录(每个项目)。