Windows 下 VIM 破坏符号链接

Windows 下 VIM 破坏符号链接

似乎在处理文件时VIM它主要使用文件的备份版本,然后在保存时覆盖原始版本。在 Windows 下使用符号链接时会出现问题(例如mklink link_path target_path),因为它会破坏符号链接。

有人知道怎么解决这个问题吗?我已经在常问问题专门针对此问题,但推荐的解决方法不起作用。也许它在某些时候有效,但不适用于 Vim 7.3(在 Windows 7 x64 下)。

答案1

此错误已修复7.3.1182。Vim 7.4 是 vim.org 上第一个包含此补丁的版本(发布于 2013-08-10)。

为了支持旧版本的 vim,你可以在 vimrc 中使用如下内容:

" Writing files on Windows doesn't preserve file attributes seen via cygwin
" (presumably because the created backup copy didn't inherit them correctly).
if has('win32') && v:version < 704
    set backupcopy=yes
endif

答案2

在 Windows 上,符号链接被移动以创建备份文件。然后用名字写入更正。(注意:临时文件仍然链接到原始文件)

他们说“在当前版本中解决这个问题的唯一方法不是制作备份文件,而是:set nobackup nowritebackup

这就是你所说的解决方法吗?因为这在我的 Vista 上有效。

编辑:当然,您不会有备份。

答案3

如果您仍然需要备份,您可以使用:

set bkc=yes

(为什么?阅读:h bkc)它解决了 Windows 上的问题。

如果原始文件是只读的,则必须在打开文件之前删除只读标志。或者,在编辑文件时,您可以删除只读标志,然后运行并:set modifiable保存。

还有一种替代方法是使用 resolve() 来解析链接指向的路径。我使用的是版本 7.3,resolve() 似乎无法解析mklink在 Windows 上使用该命令创建的链接):

http://vim.1045645.n5.nabble.com/How-do-I-make-e-path-completion-follow-symlinks-td1175347.html

答案4

如果您只希望在某些文件或目录中找到符号链接,则使用 backupcopy 选项会更好。例如,我使用符号链接编辑 vim 源代码存储库中的运行时文件,并查看 ~/vimfiles 目录中反映的更改:

" for some reason, backupcopy=auto doesn't work on Windows to keep
" symbolic links. I use these in my vimfiles directory to override some
" runtime files which I really edit in the vim source repository.
autocmd BufWritePre ~/vimfiles/* set backupcopy=yes
autocmd BufWritePost ~/vimfiles/* set backupcopy&

请注意,根据 :help,'backupcopy' 的默认值应该在写入时保留符号链接。

http://groups.google.com/group/vim_dev/browse_thread/thread/a85f18df1b543fec

相关内容