とほほのVim入門(タグジャンプ)

トップ > Vim > タグジャンプ

目次

タグファイルの作成

まず 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 が正規表現と見なされます。例えば /FooBarFooBar を含むシンボル、/^FooBarFooBar で始まるシンボルが対象となります。

: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 と同じだがタグジャンプ先の一覧をロケーションリストに設定する

Copyright (C) 2023 杜甫々
初版:2023年8月6日 最終更新:2023年8月13日
http://www.tohoho-web.com/vim/others.html