所以这是一个非常基本的问题,我如何将字符串与文件名修饰符(如%:p:h(进行比较。我被卡住了,因为comparisson总是返回错误的
function! WhenEnter()
if expand("%:p:h") == fnameescape("C:\tools\neovim\Neovim\bin")
execute 'NERDTree "C:Users<user>Desktop"<CR>'
execute ':NERDTreeToggle<CR>'
else
execute 'NERDTree "%:p:h"<CR>'
execute ':NERDTreeToggle<CR>'
endif
endfunction()
autocmd vimenter * :call WhenEnter()
如果我刚用可执行文件"打开neovim,我只想在默认情况下在桌面上开始NERDTree;因为如果不是,它只指向C:\tools\neovim\neovim";对于特定的文件,我只希望它是当前的文件夹。我尝试了很多方法来让它发挥作用,扩展,空间等,但似乎没有什么能让发挥作用
function! WhenEnter()
if expand("%:p:h") == "C:\tools\neovim\Neovim\bin"
execute 'NERDTree C:UsersvirgiDesktop'
execute ':NERDTreeToggle'
else
execute ':NERDTree "%:p:h"'
execute ':NERDTreeToggle'
endif
endfunction()
事实上,这就是我如何管理它工作
问题不在于文件名修饰符,而在于使用fnameescape
-有关需要此函数的情况,请参阅:help fnameescape
。在您的情况下,
if expand("%:p:h") == "C:\tools\neovim\Neovim\bin"
是正确的(前提是文件路径头确实是C:toolsneovimNeovimbin
(。
如果仍然没有执行if
分支,请插入一个echo expand("%:p:h")
以查看原因。