【发布时间】:2010-10-23 17:48:28
【问题描述】:
有没有办法在 vim 中禁用 .swp 文件创建?或者至少在一个地方创建它们,以便我可以轻松找到并删除它们。
当我在编辑的同时复制父目录时,我发现它们特别烦人。当然我知道我可以使用 find -exec 来查找和删除它们。但我想要一个更实际的解决方案。
【问题讨论】:
有没有办法在 vim 中禁用 .swp 文件创建?或者至少在一个地方创建它们,以便我可以轻松找到并删除它们。
当我在编辑的同时复制父目录时,我发现它们特别烦人。当然我知道我可以使用 find -exec 来查找和删除它们。但我想要一个更实际的解决方案。
【问题讨论】:
要在 vim 中禁用交换文件,请键入
:set noswapfile
要永久禁用交换文件,请将以下内容添加到您的 ~/.vimrc 文件中
set noswapfile
更多详情请见Vim docs on swapfile
【讨论】:
:noswapfile edit /path/to/file
【讨论】:
*.ext~ 备份文件呢?是否也有任何命令行选项可以禁用它们?
如果您使用的是git,您可以将*.swp 添加到.gitignore。
【讨论】:
不为特定文件创建 vim 交换文件
autocmd bufenter c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile
【讨论】:
autocmd bufenter c:/aaa/Dropbox/TapNote/* :set noswapfile
对于任何尝试为 Rails 项目设置此项的人,请添加
set directory=tmp,/tmp
进入你的
~/.vimrc
因此 .swp 文件将位于其自然位置 - tmp 目录(每个项目)。
【讨论】:
在 .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。
【讨论】:
我同意那些质疑为什么 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
【讨论】:
disaster recovery。我喜欢它!我什至不必保存文件,当我恢复我所做的任何更改时,无论是否保存,都会被拉回。
您可以将 backupdir 和 directory 设置为 null 以完全禁用交换文件,但通常建议将它们简单地放在集中目录中。 Vim 负责确保没有名称冲突或类似的事情;所以,这是一个完全安全的选择:
set backupdir=~/.vim/backup/
set directory=~/.vim/backup/
【讨论】:
//,这样你就可以同时修改两个同名的文件。
:help directory。双斜杠告诉 vim 将文件的完整路径编码为交换文件的名称,例如%home%sam%dotfiles%.gitignore.swp,而不仅仅是.gitignore.swp。
如果您将set directory="" 放入您的exrc 文件中,您将关闭交换文件。但是,这样做会禁用恢复。
更多信息here。
【讨论】:
这是我个人的 ~/.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
【讨论】: