Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vimのコマンドライン補完を自作する。

$
0
0

vimのコマンドライン補完関数の基本的な作り方まとめ。

書式

コマンドに独自の補完関数を指定するときは、コマンド定義時に引数に-complete=customlist,{func}を指定する。

command!-nargs=1-complete=customlist,{func} {cmd} {rep}

補完関数は補完候補のリストを返せばいい。

function {func}(lead, line, pos)return ['abc','efg']
endfunction

引数の意味

仮引数名説明
leadカーソル下の引数文字列
lineコマンド名を含めたコマンドライン全体の文字列
poslineの先頭文字を0とした時のカーソル位置

サンプル

:editをラップしただけの:Editコマンドと補完候補を3つ返すだけの補完関数。

" コマンドを定義
command!-nargs=1-complete=customlist,CompSamp Edit :edit <args>" 補完関数を定義function! CompSamp(lead, line, pos)return ['~/.bashrc','~/.zshrc','~/vimrc']
endfunction

デバッグ

補完関数中では出力ができないようなので、:echomsg {str}でメッセージ領域に出力して、:messageコマンドで確認する。

デバッグ (vimconsole)

毎回:messageを呼ぶのが面倒ならrbtnn/vimconsoleを使う手もある。
プラグインを導入したら以下の設定をするといい。

letg:vimconsole#auto_redraw =1

最低限の使い方説明(詳細はdocを参照)。

:VimConsoleOpen              # 出力用ウィンドを開く。
:VimConsoleLog 'message'     # メッセージを出力する。

参考資料

:h :command-completion-customlist

複雑な補完を書きやすくするためのプラグインもあるらしい(使ったこと無い)。
LeafCage/lim.vim


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>