
<cr>
Nerdtree キーを再マップして、ファイルを開いてもカーソルが Nerdtree ウィンドウ内に残るようにしようとしています。Nerdtree にはデフォルトでこの機能があり、g + o
キー マッピングでトリガーできます。このマッピングは Nerdtree にいるときだけ必要です。
Nerdtreeのドキュメントから私が理解しているところによると、このマッピングが呼び出す関数はNERDTree-go
、'g' + NERDTreeMapActivateNode
これらは、NerdTree のドキュメントと同様の質問に対して提示された解決策を組み合わせて、vim rc で試したものです。
let NERDTree-go=<cr>
nnoremap <CR> :call nerdtree#ui_glue#invokeKeyMap("go")<CR>
nnoremap <CR> :call nerdtree#invokeKeyMap("go")
let g NERDTreeMapActivateNode = <cr>
let g NERDTree-go
動作すると思われる API メソッドもありますが、a) 単純な再マップで簡単に実行できそうに思えますが、b) 設定方法がわかりません。ロードまではできましたが、vimscript ファイルに次の内容が含まれていたため、エラーが発生しました。
NERDTreeAddKeyMap({
'key': '<cr>',
'callback': 'NERDTree-go',
'scope': 'FileNode',
'overide': '1'
})
答え1
NERDTree は通常、変数を介して設定されますg:NERDTreeMap...
が、残念ながら、 用の個別のマップ オプションはありませんgo
。:help NERDTree-go
このマッピングのキーの組み合わせは常に「g」+ NERDTreeMapActivateNode です (NERDTree-o を参照)。
したがって、再マッピングは自分で行う必要があります。これを NERDTree ウィンドウにのみ適用するには、NERDTree サイドバーを開いたときにトリガーされるバッファローカル マッピングにする必要があります。
:autocmd FileType nerdtree nmap <buffer> <CR> go