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

Vim脚本比较字符串和文件名修饰符,vim,neovim,Vim,Neovim,因此,一个非常基本的问题是,如何将字符串与文件名修饰符(如%:p:h)进行比较。我被卡住了,因为comparison总是返回false function! WhenEnter() if expand("%:p:h") == fnameescape("C:\\tools\\neovim\\Neovim\\bin") execute 'NERDTree "C:\Users\<user>\Desktop"&

因此,一个非常基本的问题是,如何将字符串与文件名修饰符(如%:p:h)进行比较。我被卡住了,因为comparison总是返回false

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()
函数!Whenter()
如果展开(“%:p:h”)==fnameescape(“C:\\tools\\neovim\\neovim\\bin”)
执行“NERDTree”C:\Users\\Desktop”
执行“:nerdtreethoggle”
其他的
执行'NERDTree'%:p:h''
执行“:nerdtreethoggle”
恩迪夫
endfunction()
autocmd vimenter*:调用whenter()
如果我刚刚用可执行文件打开neovim,“因为如果不是,它只指向C:\tools\neovim\neovim”,并且对于特定的文件,我只希望它是当前文件夹,那么默认情况下我只想在我的桌面上开始NERDTree。
我已经尝试了很多方法使其工作、扩展、fNamespace等,但似乎没有任何方法使比较工作

问题不在于文件名修饰符,而在于使用
fnameescape
-有关需要此功能的情况,请参见
:help fnameescape
。就你而言

    if expand("%:p:h") == "C:\\tools\\neovim\\Neovim\\bin"
正确(前提是文件路径头确实是
C:\tools\neovim\neovim\bin

如果仍然没有执行
分支,请插入
回显展开(“%:p:h”)
以查看原因

function! WhenEnter()
    if expand("%:p:h") == "C:\\tools\\neovim\\Neovim\\bin"
        execute 'NERDTree C:\Users\virgi\Desktop'
        execute ':NERDTreeToggle'
    else
        execute ':NERDTree "%:p:h"'
        execute ':NERDTreeToggle'
    endif
endfunction()

实际上,我就是这样做到的

非常感谢。这个问题也存在于命令NERDTree中,这就是为什么我以前尝试过这种方法时认为它没有给我一个正确的比较