Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gvim弹出菜单项仅在Nerdtree窗口中_Vim_Menu_Popup_Nerdtree - Fatal编程技术网

gvim弹出菜单项仅在Nerdtree窗口中

gvim弹出菜单项仅在Nerdtree窗口中,vim,menu,popup,nerdtree,Vim,Menu,Popup,Nerdtree,我有以下菜单项 nnoremenu 1.120 PopUp.Add\ &To\ &&Path :call NERDTreeAddNodeToPath()<CR> nnoremenu 1.120弹出窗口。添加\&到\&路径:调用NERDTreeAddNodeToPath() 但我希望它只在Nerdtree窗口中显示,我该怎么做?我想我已经破解了这个,但它并不像我希望的那样漂亮。我编写了一个函数nerdtreemoneutoggle(),如果

我有以下菜单项

nnoremenu 1.120 PopUp.Add\ &To\ &&Path          :call NERDTreeAddNodeToPath()<CR>
nnoremenu 1.120弹出窗口。添加\&到\&路径:调用NERDTreeAddNodeToPath()

但我希望它只在Nerdtree窗口中显示,我该怎么做?

我想我已经破解了这个,但它并不像我希望的那样漂亮。我编写了一个函数
nerdtreemoneutoggle()
,如果当前缓冲区的文件类型为“nerdtree”,则会将该行添加到弹出菜单中,否则该行将从菜单中删除:

function! NERDTreeMenuToggle()
    if &ft == "nerdtree"
        nnoremenu 1.120 PopUp.Add\ To\ Path :call NERDTreeAddNodeToPath()<CR>
    else
        silent! nunmenu PopUp.Add\ To\ Path
    endif
endfunction
这似乎起到了作用(尽管我不是NERDTree的普通用户,所以我可能遗漏了一些微妙之处)

另一种方法是在新的文件类型插件中添加行到菜单(只需将
nnoremenu
行放在$vim/vimfiles/ftplugin中名为nerdtree.vim的文件中),但这仍然会留下删除非nerdtree缓冲区行的问题,因此我认为上面的解决方案稍微干净一些

au! MenuPopup * :call NERDTreeMenuToggle()