てきとうなメモ

本の感想とか技術メモとか

vimのファイル名補完

vimでファイル名をタブ補完する時、bashの補完と感覚が違うので使いづらい。

タブ補完はwildmodeで動きを設定することができる。

wildmodeは以下の値を設定できる

値 説明
"" 最初のマッチのみ補完
full TABを押すごとに次のマッチを補完する。wildmenuが有効ならwildmenuを開始する
longest 共通する最長の部分まで補完する
list マッチするものをリスト表示する
longest:full longestと同じだが、wildmenuが有効ならwildmenuを開始する
list:full マッチするものをリスト表示しつつ、TABを押すごとに次のマッチを補完
list:longest マッチするものをリスト表示しつつ、共通する最長の部分まで補完

言葉で説明してもわかりづらいので例示する。

$ ls
sample1  sample2  sample3

というような状況で、

:e sa<TAB>

と入力したとする。

空文字だと、sample1を補完し、何度TABを押してもそれ以上補完しない

fullだと、TABを押すごとにsample1,sample2,sample3,sample1,...と補完する

longestだと、sampleまで補完して止まる

listだと、sample1,sample2,sample3をリスト表示し、補完は行わない。

list:fullだと、sample1,sample2,sample3をリスト表示し、sample1に補完する。さらにTABを押すごとに、sample2,sample3,sample1,...と補完する

list:longestだと、sample1,sample2,sample3をリスト表示し、sampleまで補完する。

さらに、カンマ区切ることで、タブの回数により動作を変更することができる。最大で4回目まで変更。

例えば、以下のようにlongest,listと設定すると、bashの補完に近く、sampleまで補完して、もう一度TABを押すと、sample1,sample2,sample3をタブ補完する。これが一番自分には使いやすかった。

set wildmode=longest,full

あと、fullとlongest:fullにあるwildmenuというのはヴィジュアルに候補表示をするものである。以下のようにwildmenuをオンにした後に、wildmodeをfullかlongest:fullにすると使えるのだが、自分にはイマイチ使いづらかった。

set wildmenu
set wildmode=full