Ctags学習ノート
8272 ワード
私は最近の学習過程でctagsツールに触れた.
ブログの参考になりましたctags使用詳細 プログラマーの七種類の武器のCtags Exuberant Ctags中国語マニュアル 概要
ファイル形式
tagsファイルは動作単位で、各行のフォーマットは以下の通りです.
{
ここで、タブはtagsファイルの分割子です.
さらに、上記の3つの項目にタブを含めることはできません.
最後に、
共通パラメータ
多くのオプションがあるにもかかわらず、
配合Vim
tagの使用指定したtagにジャンプします.例: ショートカット をリストします.ショートカット 現在のウィンドウを分割し、指定した ショートカット 同名 複数の
Vim
を使用する学生は、Vim
やEmacs
などのエディタがコードを使用してジャンプするのを助けることができ、プログラマーの神器とも言える.そこで、私は特にノートを書いて皆さんに共有します.ブログの参考になりました
Ctags
は、様々なプログラミング言語のソースファイルとヘッダファイルで見つかった名前のインデックスファイル(.tag
)を生成するプログラミングツールです.言語によっては、関数、変数、クラスメンバー、マクロなどのインデックスを作成できます.ファイル形式
tagsファイルは動作単位で、各行のフォーマットは以下の通りです.
{
tagname
}{ tagfile
}{ tagaddress
}{ extension_fields
} ここで、タブはtagsファイルの分割子です.
tagname
-->は変数名に類似し、tagname
はctags
は関数、変数、クラスメンバー、マクロなどによって確立されたインデックス名である.注意すべきは、tagname
にスペースが含まれていないことです.tagfile
-->名前の通り、.tags
ファイルのファイルパスであり、現在のディレクトリの相対パスである.tagaddress
-->カーソル位置に移動可能なExコマンド.通常、行番号または検索コマンドのみが含まれます.安全を考慮すると、vimはいくつかのコマンドの実行を制限します.tagname
-->拡張フィールドは、ユーザー自身が定義します.さらに、上記の3つの項目にタブを含めることはできません.
最後に、
extension_fields
はctags
を使用して注釈を追加し、すなわち;"
である.共通パラメータ
多くのオプションがあるにもかかわらず、
;" comment
にはデフォルト値が設定されているため、通常はctags
(たとえば、ctags
やctags *
など)を実行するオプションはありません.これにより、現在のディレクトリの下にあるすべての識別可能なソースファイルにラベルファイルが生成されます.下に表示されるオプションは、特別な必要がある場合にのみユーザーがカスタマイズできるようになります.ctags -R
は--appendに等しい.-a
イネーブル-e
モードで、Emacsエディタで使用されるラベルファイルが作成されます.etags
-f
ラベルファイルの名前として指定されたtagfile
を使用します(デフォルトは「tags」、または「TAGS」がtagfile
モードで実行されている場合).etags
ファイル拡張子リストを定義し、ピリオドで区切られ、これらのファイルはファイル(またはヘッダファイル)を含む解析として処理されます.-h
識別子リストを定義する.-I
ラベルファイルを生成する必要があるファイルのリストをファイルに読み込む.-L
同-o tagfile
;-f tagfile
同-R
;--recurse
指定されたファイルに生成されたラベルが、ラベルファイルの既存のコンテンツの後に追加されるか、置換されるかを指定します.このオプションはデフォルトで閉じられます.このオプションは、最初のファイル名の前に表示する必要があります.--append[=yes|no]
は--exclude=[pattern]
を除外ファイル/ディレクトリリストに追加する.pattern
特定のタイプの情報に追加のラベルエントリを追加するかどうかを指定します.--extra=[+|-]flags
ラベル・ファイル・テーブル・アイテムの有効な拡張フィールドを定義します(詳細は、前述の--fields=[+|-]flags
です).extension_fields
は--filter[=yes|no]
をフィルタのように表現し、標準入力でファイルの名前を読み取り、1つのファイルが1つのファイルの出力ラベルに続く.ctags
詳細な使用方法の説明を標準出力に印刷し、終了します.--help
新しいユーザー定義言語を定義し、正規表現を使用して解析します.--langdef=name
制御ファイル名がプログラム言語にどのようにマッピングされるか(--langmap=map[,map[...]]
オプションを参照).--list-maps
デフォルト、--language-force=language
は、プログラム言語を特定できないファイルを無視して、自動的にソースファイルの言語を選択します.ctags
カンマで区切られたラベルを生成する言語リストを定義します.--languages=[+|-]list
オプションは、完全な組み込み言語名を取得します.--list-languages
オプションは、サポートされている言語をリストします.--list-kinds
指定された言語またはすべての言語のファイル拡張子とファイル名モードをリストし、終了します.--list-maps[=language|all]
ファイルリストで遭遇したディレクトリに再帰的にアクセスします.--recurse[=yes|no]
サポートされている言語は非常に豊富で、20種類以上あり、対応は以下の通りです.Ant
p projects
t targets
Asm
d defines
l labels
m macros
t types (structs and records)
Asp
d constants
c classes
f functions
s subroutines
Basic
c constants
f functions
l labels
t types
v variables
g enumerations
v variables
C
c classes
d macro definitions
e enumerators (values inside an enumeration)
f function definitions
g enumeration names
l local variables [off]
m class, struct, and union members
n namespaces
p function prototypes [off]
s structure names
t typedefs
u union names
v variable definitions
x external and forward variable declarations [off]
C++
c classes
d macro definitions
e enumerators (values inside an enumeration)
f function definitions
g enumeration names
l local variables [off]
m class, struct, and union members
n namespaces
p function prototypes [off]
s structure names
t typedefs
u union names
v variable definitions
x external and forward variable declarations [off]
C#
c classes
d macro definitions
e enumerators (values inside an enumeration)
E events
f fields
g enumeration names
i interfaces
l local variables [off]
m methods
n namespaces
p properties
s structure names
t typedefs
Fortran
b block data
c common blocks
e entry points
f functions
i interface contents, generic names, and operators [off]
k type and structure components
l labels
L local, common block, and namelist variables [off]
m modules
n namelists
p programs
s subroutines
t derived types and structures
v program (global) and module variables
HTML
a named anchors
f JavaScript functions
Java
c classes
e enum constants
f fields
g enum types
i interfaces
l local variables [off]
m methods
p packages
JavaScript
f functions
c classes
m methods
p properties
v global variables
Lisp
f functions
Lua
f functions
Make
m macros
MatLab
f function
Pascal
f functions
p procedures
Perl
c constants
f formats
l labels
p packages
s subroutines
d subroutine declarations [off]
PHP
c classes
i interfaces
d constant definitions
f functions
v variables
v variables
j javascript functions
Python
c classes
f functions
m class members
v variables
i imports
Ruby
c classes
f methods
m modules
F singleton methods
Sh
f functions
SQL
c cursors
d prototypes [off]
f functions
F record fields
l local variables [off]
L block label
P packages
p procedures
r records [off]
s subtypes
t tables
T triggers
v variables
i indexes
e events
U publications
R services
D domains
V views
n synonyms
x MobiLink Table Scripts
y MobiLink Conn Scripts
Tex
c chapters
s sections
u subsections
b subsubsections
p parts
P paragraphs
G subparagraphs
Verilog
c constants (define, parameter, specparam)
e events
f functions
m modules
n net data types
p ports
r register data types
t tasks
VHDL
c constant declarations
t type definitions
T subtype definitions
r record names
e entity declarations
C component declarations [off]
d prototypes [off]
f function prototypes and declarations
p procedure prototypes and declarations
P package definitions
l local definitions [off]
Vim
a autocommand groups
c user-defined commands
f function definitions
m maps
v variable definitions
配合Vim
Ctags
に~/.vimrc
を加えると、set tags+=./tags
は現在のパスの下のvim
ファイルで特定のジャンプ方式を位置決めしてジャンプすることができ、tag
でドキュメントvim
を表示することができます.tagの使用
tag tagname
:h tags
現在のカーソルの下にあるwordをtagの名前として取り出してジャンプします.Ctrl+]
コマンドは、アクセスしたtags
のリストtag
前回のtagへジャンプCtrl+T
コマンドstag tagname
stag
にジャンプします.tag
現在のウィンドウを分割し、カーソルの下にあるCtrl+W+]
にジャンプします.tag
同名のtag
が複数存在する場合、tag
コマンドはtag
のリストを与え、tag
のシーケンス番号を入力することによってtag
を選択することができる.また、tag
によってtagをフィルタリングすることもできる.例えば、tselect
:tselect tagname
間を移動する場合は、次のコマンドを使用します.:tfirst go to first match
:[count]tprevious go to [count] previous match
:[count]tnext go to [count] next match
:tlast go to last match