在.vimrc
文件中,如果从特定目录加载文件,是否可以只执行autocmd?
在MacVim中,我的.vimrc
中有一行代码自动cds到包含我正在编辑的文件的目录 - 但是当我访问git文件时它会导致错误:Gedit创建(vim)包逃犯)。
autocmd是:
autocmd BufEnter * execute "chdir ".escape(expand("%:p:h"), ' ')
错误是:
Error detected while processing BufEnter Auto commands for "*":
从:echo expand("%")
很明显,Fugitive会创建以fugitive:///
开头的路径,所以我想弄清楚如何测试文件路径的前12个字符== {{1} }
答案 0 :(得分:2)
:Gedit
创建一个带有时髦名称的临时文件:
:e vimrc
:Gedit ~2
:echo expand("%")
fugitive:///home/romainl/.vim/.git//8aece3dc3c19522c33c997bc82a2487e3bdf013b/vimrc
:echo expand("%:p:h")
fugitive:///home/romainl/.vim/.git//8aece3dc3c19522c33c997bc82a2487e3bdf013b/
你的shell无法进入cd
到那个“目录”,因为它不是一个有效的路径。
但是,我有set autochdir
告诉vim cd
自动到包含当前文件的目录。多亏了我可以看到临时文件在:
:pwd
/tmp/vGiSmH2
我可以使用:pwd
到cd
的输出。
答案 1 :(得分:1)
这可以使用strpart
函数来实现。
我最终解决了以下问题:
if strpart(expand("%:p:h"), 0, 15) == "/Users/myputer/"
autocmd BufEnter * execute "chdir ".escape(expand("%:p:h"), ' ')
endif
如果文件夹以cd
/Users/myputer/
答案 2 :(得分:0)