似乎在处理文件时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