Vim swp文件会干扰存储库vimdiff

时间:2012-06-29 03:58:16

标签: vim macvim vimdiff

我的设置是使用vim(特别是MacVim在图形模式下)编辑源文件,然后我使用vimdiff(mercurial)存储库差异(再次以图形模式)。有时候,当我做差异时,vim会给我错误:

  

交换文件"〜/ nn / src / imm / model / injector_node / .values_table.py.swp"已经存在!

我该如何解决这个问题?我可以命令vim停止生成swp文件,还是让vimdiff忽略它们,或者将其swp文件写入不同的地方?

3 个答案:

答案 0 :(得分:6)

是的,(也许),是的。

关闭交换文件:

set nobackup
set nowritebackup
set noswapfile

更改交换文件的位置(我的首选):

" Set the directory of the swap file
" The // indicates that the swap name should be globally unique
set directory=~/.vim/tmp//,/tmp

我将其设置在tmp下的.vim目录中。请参阅:h 'directory'以了解该选项的每个部分代表什么。

至于让Vimdiff忽略交换文件,我不太确定。但是错误可能正在发生,因为当您使用Mercurial检查差异时,您已经在MacVim中打开了相同的文件。如果您只是在执行差异之前关闭文件,那么您应该没问题。

答案 1 :(得分:4)

我建议采用不同的方法:不使用mercurial命令行界面来查看文件之间的差异,而是使用一个添加VCS支持的vim插件,在这种情况下,您既不需要关闭任何东西也不需要对交换文件执行某些操作

例如,使用我的aurum,您可以使用<leader>aD(映射到:AuVimDiff)查看当前打开的缓冲区与其在存储库中的版本之间的差异,然后<Leader>X切换回普通视图(如果你没有编辑任何东西,它甚至会恢复打开/关闭的折叠)。如果你执行let g:aurum_vimdiffusewin=1并使用垂直或水平(取决于'diffopt')相同大小的拆分,那么我的脚本将重用其中一个相邻的窗口。

使用<leader>agD,您可以在vimdiff拆分的多个选项卡中查看存储库中所有文件的所有更改(不包括添加和删除的文件):它映射到:AuVimDiff full。据我所知,这个功能几乎是独一无二的:有一些mercurial脚本可以完成相同的工作,但它没有与其他VCS插件集成。再次,<leader>X关闭所有标签。已经开放的缓冲区将不会关闭,其他缓冲区将会关闭。

我建议的另一个插件是VCSCommand

答案 2 :(得分:1)

我知道这个问题已经超过一年了,但我可以推荐lawrencium,一个将mercurial集成到vim中的插件,灵感来自于git的精彩fugitive插件。通过一些简单的命令,他们可以轻松地完成您正在做的事情(以及许多其他CVS事情)。他们没有付我这么说;插件真的很棒!