2

次のメニュー項目があります

nnoremenu 1.120 PopUp.Add\ &To\ &&Path          :call NERDTreeAddNodeToPath()<CR>

Nerdtree ウィンドウだけに表示したいのですが、どうすればいいですか?

4

1 に答える 1

1

私はこれをクラックしたと思いますが、私が望んでいたほどきれいではありません. 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$VIM/vimfiles/ftplugin の nerdtree.vim というファイルに行を入れるだけです) が、それでも NERDTree 以外のバッファの行を削除するという問題が残ります、したがって、上記の私のソリューションは少しきれいだと思います。

于 2012-03-19T10:27:50.670 に答える