neoVim脚本比较字符串和文件名修饰符



所以这是一个非常基本的问题,我如何将字符串与文件名修饰符(如%: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")以查看原因。

最新更新