Я думаю, что взломал это, но это не так красиво, как я надеялся.Я написал функцию NERDTreeMenuToggle()
, которая добавляет строку во всплывающее меню, если текущий буфер имеет тип файла "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
Обратите внимание, что nunmenu
долженвызывать молча, чтобы подавить ошибки, если пункт меню не существует.Затем мы должны установить, чтобы эта функция вызывалась в событии MenuPopup
(т. Е. Непосредственно перед отображением меню).
au! MenuPopup * :call NERDTreeMenuToggle()
Это, кажется, делает свое дело (хотя я не обычный пользователь NERDTree, поэтому я могу упустить некоторые тонкости.
Другой подход заключается в добавлении строки в меню в новом плагине файлового типа (просто поместите строку nnoremenu
в файл с именем nerdtree.vim в $ VIM / vimfiles/ ftplugin), но это по-прежнему оставляет проблему удаления строки для буферов, не относящихся к NERDTree, поэтому я думаю, что мое решение, приведенное выше, немного чище.