ディレクトリを開くコマンドを拒否する
最近のvimは、:editや:splitなどのコマンドでディレクトリを開こうとするとnetrwを起動する。しかし、私がこれをやるのは九割九分、tab補完の後すぐにEnterを叩いたものの補完されたものが予想と違った場合で、ディレクトリを開くのは邪魔な挙動でしかないのでやめさせたいと思った。ただnetrwを無効化するだけではだめで、ディレクトリを開こうとした時には
ググっても解決法が見つからない*1ままになっていたが、ちょっとした工夫で実装できることに気がついた。
cmap <CR> <SID>(setcr)<SID>(cr) cnoremap <SID>(setcr) <C-\>e<SID>Setcr()<CR> function! s:Setcr() let cmdline = getcmdline() if match(cmdline, '\v^(e|edit|r|read|sp|split|vsp|vsplit)>.*/$') != -1 cnoremap <SID>(cr) <NOP> else cnoremap <SID>(cr) <CR> endif return cmdline endfunction
マッピングの中でマッピングを変更するというややこしいことになっているが、これより簡単な方法は思い付いていない。
*1:検索語の選択も難しい