まず ctags コマンドをインストールします。yum/dnf や apt でインストールすると Exuberant ctags がインストールされますが、2009年頃に開発が止まっているので Universal ctags をインストールします。
# Ubuntu 22.04 $ sudo apt -y install git gcc make autoconf pkg-config # RHEL8系 # yum -y install git gcc make autoconf automake # 共通 $ git clone https://github.com/universal-ctags/ctags.git $ cd ctags $ ./autogen.sh $ ./configure $ make $ sudo make install $ ctags --version Universal Ctags 6.0.0(ce46d938), Copyright (C) 2015-2022 Universal Ctags Team
ctags がサポートしている言語は下記で調べられます。C言語, C++, C#, Perl, Python, Ruby, Java, JavaScript など一通りの言語はサポートされています。
$ ctags --list-languages
ctags コマンドを利用して tags ファイルを作成します。
$ ctags -R ./src
Vim 起動時に -t
オプションをつけるとそのシンボルが定義された位置に移動した状態で起動します。
$ vi -t getElements
tags ファイルが存在するディレクトリで Vim を起動すると、下記のコマンドが利用できるようになります。
Ctrl-] : カーソルのある単語に対してタグジャンプ [N]Ctrl-t : N個前のタグ位置に戻る(タグスタックは保持) :[N]pop(:po) : N個前のタグ位置に戻る(タグスタックを削除) :tags : タグスタックを表示
:tag(:ta) keyword : キーワードの定義位置にタグジャンプする :tselect(:ts) keyword : キーワードのジャンプ先候補を表示 :tjump(:tj) keyword : キーワードのジャンプ先候補を表示(1個しかない場合は直接ジャンプ) :tnext(:tn) : 次の候補へジャンプ :tNext(:tN) : 前の候補へジャンプ :tprevious(:tp) : 前の候補へジャンプ :trewind(:tr) : 最初に一致した候補へジャンプ :tfirst(:tf) : 最初に一致した候補へジャンプ :tlast : 最後に一致した候補へジャンプ g] : カーソル位置の単語に対して :tselect を実行 g Ctrl-] : カーソル位置の単語に対して :tjump を実行
keyword の先頭に /
をつけると、keyword が正規表現と見なされます。例えば /FooBar
は FooBar
を含むシンボル、/^FooBar
は FooBar
で始まるシンボルが対象となります。
:tjump /getElements
:stag(:sta) keyword : :tag のウィンドウ分割版 :stselect(:sts) keyword : :tselect のウィンドウ分割版 :stjump(:stj) keyword : :tjump のウィンドウ分割版 Ctrl-w ] : カーソル位置の単語に対してウィンドウを分割して :tag を実行 (Ctrl-w Ctrl-]でも可) Ctrl-w g ] : Ctrl-] カーソル位置の単語に対してウィンドウを分割して :tselect を実行 Ctrl-w g Ctrl-] : カーソル位置の単語に対してウィンドウを分割して :tjump を実行
:ptag(:pt) : プレビューウィンドウでタグを表示 :ptselect(:pts) : プレビューウィンドウで :tselect を実行、タグを表示 :ptjump(:ptj) : プレビューウィンドウで :tjump を実行、タグを表示 :ptnext(:ptn) : プレビューウィンドウで :tnext を実行 :ptNext(:ptN) : プレビューウィンドウで :tNext を実行 :ptprevious(:ptp) : プレビューウィンドウで :tprevious を実行 :ptrewind(:ptr) : プレビューウィンドウで :trewind を実行 :ptfirst(:ptf) : プレビューウィンドウで:tfirst を実行 :ptlast(:ptl) : プレビューウィンドウで :tlast を実行 Ctrl-w } : カーソル位置の単語に対するタグをプレビューウィンドウに表示 Ctrl-w g } : カーソル位置の単語に対してプレビューウィンドウで :ptjump を実行 Ctrl-w z : プレビューウィンドウを閉じる (Ctrl-w Ctrl-zでも可)
:ltag(:lt) : :tag と同じだがタグジャンプ先の一覧をロケーションリストに設定する