Vimのコマンドライン補完がこんなに強力な訳がない
「コマンドライン補完は貧弱」
そう思っていた時期が、私にもありました。
コマンドライン補完が貧弱だからomni補完が使えるcmdwin*1があるのだと、そう思っていました。
しかしVimは歴史あるソフトウェア、やはりそんなことはありませんでした...
とかVim Hacksでもないし前口上はいいのでとっとと本題に入ると、
以下のエントリでコマンドライン補完をzshライクにする方法を知りました。
set wildmode=list,full
vimの補完をzshみたいにする - World Wide Wonderful
これでzshライクにできるらしい。
help読んだりした結果、自分は次のが一番気に入った。
set wildmode=longest:full,full
最初に
次に
longest:fullとlistの違い
d:id:orangehatさんの設定は「longest:full」の代わりに「list」を使ってました。
これらの違うところは、statuslineに表示させるのではなく
次のように複数行で表示するのが違う。
自分が「longest:full」を選んだのは、statuslineに一貫して表示してくれた方が視線移動が少ないと思ったから。
候補数が多い時一行だけじゃ困るのではないかという点については、
コマンドラインで
あと「longest:full」に限らず「longest」とついてるものは、共通する最長の文字列を自動的に挿入してくれる。
これも混乱するので勝手に挿入されたくない、とかいろいろ好みが分かれるところ。
コマンドライン補完の欠点
LingrによくいるVimmer達が気にしそうなこと。
それは組み込みなこと。ようするにプラグインで拡張できない。
まぁでもこれだけ強力であれば僕は満足です。
というかこれはインサートモードの補完も一緒か。
zshの補完に足りないと言えばcorrect機能とか「/u/l/a/co」で「/usr/local/apache/conf/」とかならないことでしょうか。
僕はパスごとに
correct機能に関してはちょっと欲しいかも。
longest:fullの欠点
あ、今「longest:full」の新たな欠点に気がついた。
UIの問題なんだけど、longest:fullで
最初の項目がハイライトされてて選択されてるかのような印象を受ける(上の画像でも分かる通り)。
でもコマンドラインに挿入されてはいないので誤解する。
たとえば「:help c_ctrl-d
見てわかる通り、このままエンターを押せば「c_CTRL-D@ のような項目はない」と言われる。
これはあと一回分の
慣れればコマンドラインのみを見て今は挿入されてないと判断できるのかもしれないけど。