在 Vim 中禁用交换文件创建

问题描述 投票:0回答:10

有没有办法禁止在 Vim 中创建

.swp
文件?或者,至少将它们创建在一个地方,以便我可以轻松找到并删除它们?

当我在编辑的同时复制父目录时,我发现交换文件特别烦人。当然我知道我可以使用

find -exec
来查找和删除它们,但我想要一个更实用的解决方案。

vim editor
10个回答
301
投票

要在 vim 中禁用交换文件,请输入

:set noswapfile

要永久禁用交换文件,请将以下内容添加到您的

~/.vimrc
文件

set noswapfile

有关更多详细信息,请参阅 有关交换文件的 Vim 文档


183
投票

在 .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。


50
投票

我找到了答案在这里

vim -n <file>

打开没有交换文件的文件。

另外:

set dir=/tmp

in

.vimrc
/tmp
中创建交换文件。


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

7
投票

您可以将backupdir和directory设置为null以完全禁用交换文件,但通常建议将它们放在一个集中目录中。 Vim 负责确保不存在名称冲突或类似情况;所以,这是一个完全安全的替代方案:

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

4
投票

如果您正在使用

git
,您可以将
*.swp
添加到
.gitignore


3
投票

如果将

set directory=""
放入 exrc 文件中,您将关闭交换文件。但是,这样做会禁用恢复。

更多信息这里


2
投票

不为特定文件创建 vim 交换文件

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

1
投票

对于任何尝试为 Rails 项目设置此选项的人,请添加

set directory=tmp,/tmp

进入你的

~/.vimrc

因此 .swp 文件将位于其自然位置 - tmp 目录(每个项目)。

© www.soinside.com 2019 - 2024. All rights reserved.