Unix-commands-ctags
ctags-Unix、Linuxコマンド
link:/unix_commands/index [previous] link:/unix_commands/index [next] [[1]] php [AddThis Social Bookmark Button]
NAME
概要
Tag
説明
*ctags* [ *options* ] [_file(s)_] *etags* [ *options* ] [_file(s)_]
説明
- ctagsetagsctags * file(s)
または、 ctags は、言語ファイルのセットで見つかったさまざまなソースオブジェクトに関する情報を人間が読める形式でリストする相互参照ファイルを生成できます。
タグインデックスファイルは多数のエディターでサポートされており、ユーザーはソースファイルに表示される名前に関連付けられたオブジェクトを見つけ、名前を定義するファイルと行にジャンプできます。 このリリースの時点で知られているものは次のとおりです。
*Vi* (1)およびその派生物(例: Elvis、Vim、Vile、Lemmy)、 *CRiSP* 、 *Emacs* 、 *FTE* (折りたたみテキストエディター)、 *JED* 、 *jEdit* 、 *Mined* 、 *NEdit* (Nirvana Edit)、 *TSE* ( SemWareエディター)、 *UltraEdit* 、 *WorkSpace* 、 *X2* 、 *Zeus*
*Ctags* は、さまざまな言語ごとにさまざまな種類のタグを生成できます。 サポートされる言語の完全なリスト、それらが認識される名前、およびそれぞれに生成されるタグの種類については、*-list-languages *および*-list-kinds *オプションを参照してください。
ソースファイル
-language-force *オプションを指定しない限り、各ソースファイルの言語は、ファイル名と言語のマッピングに基づいて自動的に選択されます。 各言語で有効なマッピングは、-list-maps オプションを使用して表示でき、-langmap *オプションを使用して変更できます。 それをサポートするプラットフォームでは、ファイルの名前が言語にマップされておらず、ファイルが実行可能である場合、ファイルの最初の行がチェックされ、ファイルが「#!」であるかどうかが確認されます。認識された言語のスクリプト。
デフォルトでは、他のすべてのファイル名は無視されます。 これにより、単一ディレクトリ内のすべてのファイルで ctags を実行できます(例: 「ctags *」)、またはソースディレクトリツリー全体のすべてのファイル(例: 「ctags -R」)。名前が言語にマッピングされているファイルのみがスキャンされるためです。
[。h拡張子がCファイルではなくC ファイルにマッピングされる理由は、C で.h拡張子を使用するのが一般的であり、C ++ファイルとして処理しても害がないためです。]
オプション
豊富なオプションがありますが、デフォルトは ctags がオプションなしで実行されるように設定されています(例: 「ctags *」、または「ctags -R」)、すべての認識されたソースファイルの現在のディレクトリにタグファイルを作成します。 以下に説明するオプションは、特別なニーズに合わせてカスタム調整できるようにするためにのみ提供されています。
パラメーターから1文字のオプションを区切るスペースはオプションです。
また、長い形式のオプション(「-」で始まり、「[= yes | no] _」パラメータを取るもの)のブールパラメータは省略できることに注意してください。この場合、「* = yes」暗示されています。 (例えば。 -sort *は-sort = _ yes)と同等です。 さらに、「= 1」と「= on」は「= yes」の同義語と見なされ、「= 0」と「= off」は「= no」の同義語と見なされます。
一部のオプションは無視されるか、etagsモードで実行中に使用される場合にのみ有用です( -e オプションを参照)。 そのようなオプションに注意してください。
ほとんどのオプションはコマンドラインのどこにでも表示され、オプションに続くファイルにのみ影響します。 ただし、いくつかのオプションは最初のファイル名の前に表示される必要があり、そのように注記されます。
言語名をとるオプションは、大文字または小文字の名前を受け入れます。 組み込みの言語名の完全なリストについては、*-list-languages *オプションを参照してください。
Tag
説明
-a
- -append *と同等です。
-B
後方検索パターンを使用する(例: ?パターン?)。 [etagsモードでは無視されます]
-e
Etagsモードを有効にします。これにより、Emacsエディターで使用するタグファイルが作成されます。 あるいは、文字列「etags」を含む名前で(実行可能ファイルの名前を変更するか、リンクを作成することにより) ctags が呼び出されると、etagsモードが有効になります。 このオプションは、最初のファイル名の前に表示する必要があります。
*-f* _tagfile_
タグファイルに_tagfile_で指定された名前を使用します(etagsモードで実行する場合、デフォルトは「tags」または「TAGS」です)。 _tagfile_が "-"として指定されている場合、タグファイルは代わりに標準出力に書き込まれます。 Ctags は、_tagfile_が存在し、その最初の行に有効なタグ行以外のものが含まれている場合、注文を拒否します。 これにより、誤って「ctags -f * .c」と入力した場合に首が救われます。そうしないと、最初のCファイルが残りのタグで生成されたタグで上書きされてしまいます。 また、「-」(ダッシュ)文字で始まる複数文字のファイル名の受け入れを拒否します。これは、おそらくタグファイル名を省略し、このオプションが次のオプションをファイル名として取得しようとしたためです。 出力タグファイルに「-ugly」という名前を付けたい場合は、「./- ugly」と指定します。 このオプションは、最初のファイル名の前に表示する必要があります。 このオプションを複数回指定すると、最後のオプションのみが適用されます。
-F
前方検索パターンを使用する(例:/pattern/)(デフォルト)。
*-h* _list_
インクルード(またはヘッダー)ファイルとして解釈されるファイル拡張子のリストを、ピリオドで区切って指定します。 拡張子のないファイルを示すには、ピリオドを使用し、その後にピリオド以外の文字を続けないでください(例: 「。」、「.. x」、「。x。」)。 このオプションは、特定の種類のタグのスコープの解釈方法にのみ影響します(つまり、 グローバルに表示されると見なされるか、定義されているファイル内でのみ表示されると見なされるかどうか);拡張機能を特定の言語にマッピングしません。 非インクルードファイルにあり、表示できないタグ(例: 別のファイルから)がファイル制限されていると見なされます(例: 静的)スコープ。 インクルードファイルに表示されるタグの種類は、ファイルが制限されたスコープを持つとは見なされません。 リストの最初の文字がプラス記号の場合、リストの拡張子は現在のリストに追加されます。そうでない場合、リストは現在のリストを置き換えます。 -file-scope *オプションも参照してください。 デフォルトのリストは「.h.H.hh.hpp.hxx.h ++。inc.def」です。 デフォルトのリストを復元するには、-h * _default_を指定します。 このオプションに指定された拡張機能が特定の言語にマッピングされていない場合(上記の SOURCE FILES を参照)、-langmap *または-language-force *オプションも使用する必要があることに注意してください。
*-I* _identifier-list_
CおよびC +ソースファイルの解析中に特別に処理される識別子のリストを指定します。 このオプションは、プリプロセッサマクロの使用により発生する特殊なケースを処理するために特に提供されています。 リストされた識別子が単純な識別子である場合、これらの識別子はソースファイルの解析中に無視されます。 識別子の末尾に「」文字が付いている場合、 ctags は、ソースファイル内の識別子の直後に続く括弧で囲まれた引数リストも無視します。 2つの識別子が「=」文字で区切られている場合、解析のために最初の識別子が2番目の識別子に置き換えられます。 識別子のリストは、コマンドラインで直接指定するか、別のファイルから読み込むことができます。 _identifier-list_の最初の文字が「@」、「。」、またはパス名の区切り記号(「/」または「#146;」)である場合、または最初の2文字がドライブ文字を指定している場合(例: "C:")、パラメーター_identifier-list_は、入力行ごとに1つずつ、識別子のリストを読み取るファイル名として解釈されます。 それ以外の場合、_identifier-list_は、特別に処理される識別子(または識別子のペア)のリストであり、それぞれコンマまたは空白で区切られます(この場合、リスト全体を1つのコマンドライン引数として保持するためにリストを引用する必要があります) )。 複数の -I オプションを指定できます。 無視する識別子のリストをクリアするには、_identifier-list_に単一のダッシュ( "-")を指定します。
この機能は、プリプロセッサマクロが存在するために構文上の混乱を引き起こすような方法で使用される場合に役立ちます。 実際、これは、ソースファイル内の構文無効化マクロの存在によって引き起こされる多くの問題を回避する最良の方法です(以下の CAVEATS を参照)。 いくつかの例でこの点を説明します。
Tag | Description |
---|---|
int foo ARGDECL4(void *, ptr, long int, nbytes) |
上記の例では、マクロ「ARGDECL4」は、「foo」という正しい名前ではなく、関数の名前であると誤って解釈されます。 -I _ARGDECL4_を指定すると、正しい動作になります。
Tag | Description |
---|---|
/creates an RCS version string in module/MODULE_VERSION("$Revision: 1.41 $") |
上記の例では、マクロ呼び出しはセミコロンが後に続かないため、関数定義に非常に似ています(実際、K&Rスタイルの関数パラメーター宣言のように見えるグローバル変数定義が続くこともあります)。 実際、この見かけの関数定義は、定義を完了する際にファイルの残りの部分をスキップする可能性さえあります。 -I _MODULE_VERSION + _を指定すると、このような問題を回避できます。
Tag | Description |
---|---|
CLASS Example \{ }; |
上記の例では、プラットフォームごとに異なるものに展開するプリプロセッサマクロとして「CLASS」を使用しています。 たとえば、CLASSはWin32プラットフォームでは「class __declspec(dllexport)」、UNIXでは単に「class」として定義できます。 通常、C ++キーワード「class」が存在しないと、ソースファイルが正しく解析されません。 -I _CLASS = class_を指定することにより、正しい動作を復元できます。
*-L* _file_
タグを生成するファイル名のリストを_file_から読み取ります。 _file_が「-」として指定されている場合、ファイル名は標準入力から読み取られます。 このオプションを使用して読み取られたファイル名は、コマンドラインに表示されるファイル名に従って処理されます。 この入力ではすべてのオプションも受け入れられます。 このオプションを複数回指定すると、最後のオプションのみが適用されます。 注意: _file_は行指向モードで読み取られます。この場合、改行が唯一の区切り文字であり、スペースが重要であると見なされ、スペースを含むファイル名が提供されます。これは、入力に含まれる場合のオプションの解析方法に影響を与える可能性があります。
-n
-excmd = _ number_と同等です。
-N
-excmd = _ pattern_と同等です。
*-o* _tagfile_
*-f* _tagfile_と同等です。
-R
- -recurse *と同等です。
-u
-sort = _ no_(つまり、 「未ソート」)。
-V
- -verbose *と同等です。
-w
このオプションは、SVR4 Unixのctagsとの後方互換性のために静かに無視されます。
- -x *
タグファイルを生成する代わりに、人間が読み取れる表形式の相互参照(xref)ファイルを標準出力に出力します。 出力に含まれる情報は次のとおりです。タグ名。タグの種類。タグを定義するファイルの行番号、ファイル名、およびソース行(余分な空白が圧縮されている)。 タグファイルは書き込まれず、タグファイルの出力に影響するオプションはすべて無視されます。 この機能のアプリケーション例は、ソースファイルにあるすべての関数のリストを生成しています(例:* ctags -x --c-kinds = _ f_ file)、またはソースファイルにあるすべての外部から見えるグローバル変数のリストを生成します(例: ctags -x --c-kinds = _ v_ -file-scope * = _ no file_)。 このオプションは、最初のファイル名の前に表示する必要があります。
-追加 [= yes | no]
指定されたファイルから生成されたタグを、タグファイルに既に存在するタグに追加するか、置き換えるかを示します。 このオプションはデフォルトではオフです。 このオプションは、最初のファイル名の前に表示する必要があります。
-etags-include = _ file_
タグファイルに_file_への参照を含めます。 このオプションは、必要な回数指定できます。 これは、他のタグファイルを「含む」タグファイルを使用するEmacsの機能をサポートします。 [etagsモードでのみ利用可能]
- -exclude * *= [_ pattern_]
除外されたファイルとディレクトリのリストに_pattern_を追加します。 このオプションは、必要な回数指定できます。* ctags によって考慮される各ファイル名について、このオプションを使用して指定された各_pattern_は、完全なパス(たとえば、 some/path/base.ext)およびベース名(例: base.ext)を使用して、パスに関係なく特定のファイル名に一致するパターン、または特定のパスのみに一致するパターンを許可します。 Cコンパイラのランタイムライブラリから適切なサポートが利用できる場合、_pattern_には、Unixで一般的な通常のシェルワイルドカード(正規表現ではない)が含まれる場合があります(オプションパラメータを引用して、 *ctags に渡されます;また、ワイルドカードはスラッシュ文字「/」と一致する可能性があることに注意してください。 コンパイル済みの機能リストに「+ wildcards」が含まれる*-version *オプションの出力を調べると、プラットフォームでシェルワイルドカードが使用可能かどうかを判断できます。それ以外の場合、_pattern_は単純なテキスト比較を使用してファイル名と照合されます。
_pattern_が文字「@」で始まる場合、文字列の残りの部分は、1行に1つずつ除外パターンを読み取るファイル名として解釈されます。 _pattern_が空の場合、除外されたパターンのリストはクリアされます。 プログラムの起動時に、デフォルトの除外リストには「EIFGEN」、「SCCS」、「RCS」、および「CVS」が含まれます。これらは、*-recurse *の処理中に下降することが一般的に望ましくないディレクトリの名前です。オプション。
- -excmd * *= _ type_
ソースファイル内のタグを見つけるために使用されるEXコマンドのタイプを決定します。
_type_の有効な値(単語全体または最初の文字が受け入れられます)は次のとおりです。
Tag | Description |
---|---|
number | Use only line numbers in the tag file for locating tags. This has four advantages: |
|Tag |Description |1. |Significantly reduces the size of the resulting tag file. |2. |Eliminates failures to find tags because the line defining the tag has changed, causing the pattern match to fail (note that some editors, such as* vim*, are able to recover in many such instances). |3. |Eliminates finding identical matching, but incorrect, source lines (see BUGS, below). |4. |Retains separate entries in the tag file for lines which are identical in content. In pattern mode, duplicate entries are dropped because the search patterns they generate are identical, making the duplicate entries useless.
However, this option has one significant drawback: changes to the source files can cause the line numbers recorded in the tag file to no longer correspond to the lines in the source file, causing jumps to some tags to miss the target definition by one or more lines. Basically, this option is best used when the source code to which it is applied is not subject to change. Selecting this option type causes the following options to be ignored: -BF. | pattern | Use only search patterns for all tags, rather than the line numbers usually used for macro definitions. This has the advantage of not referencing obsolete line numbers when lines have been added or removed since the tag file was generated. | mixed | In this mode, patterns are generally used with a few exceptions. For C, line numbers are used for macro definition tags. This was the default format generated by the original ctags and is, therefore, retained as the default for this option. For Fortran, line numbers are used for common blocks because their corresponding source lines are generally identical, making pattern searches useless for finding all matches. |
-extra = _ [+ |-] flags_
特定の種類の情報に追加のタグエントリを含めるかどうかを指定します。 パラメータ_flags_は1文字のフラグのセットで、それぞれがタグファイルに含める1種類の追加タグエントリを表します。 _flags_の前に「+」または「-」文字が付いている場合、各フラグの効果は、現在有効になっているフラグに追加または削除されます。それ以外の場合、フラグは現在の設定を置き換えます。 各フラグの意味は次のとおりです。
Tag | Description |
---|---|
|Tag |Description |f |Include an entry for the base file name of every source file (e.g. "example.c"), which addresses the first line of the file. |q |Include an extra class-qualified tag entry for each tag which is a member of a class (for languages for which this information is extracted; currently C, Eiffel, and Java). The actual form of the qualified tag depends upon the language from which the tag was derived (using a form that is most natural for how qualified calls are specified in the language). For C, it is in the form "class::member"; for Eiffel and Java, it is in the form "class.member". This may allow easier location of a specific tags when multiple occurrences of a tag name occur in the tag file. Note, however, that this could potentially more than double the size of the tag file.
-fields = _ [+ |-] flags_
タグファイルのエントリに含まれる利用可能な拡張フィールドを指定します(詳細については、下記の TAG FILE FORMAT を参照)。 パラメーター_flags_は、1文字のフラグのセットであり、それぞれが含める1つのタイプの拡張フィールドを表し、次の意味を持ちます(指定がない限り、デフォルトでは無効になっています)
Tag | Description |
---|---|
|Tag |Description |a |Access (or export) of class members |f |File-restricted scoping [enabled] |i |Inheritance information |k |Kind of tag as a single letter [enabled] |K |Kind of tag as full name |l |Language of source file containing tag |m |Implementation information |n |Line number of tag definition |s |Scope of tag definition [enabled] |S |Signature of routine (e.g. prototype or parameter list) |z |Include the "kind:" key in kind field |t |Type and name of a variable or typedef as "typeref:" field [enabled]
各文字または文字のグループの前には、デフォルトセットに追加する「」、または除外する「-」が付いています。 先行する「」または「-」記号がない場合、_flags_に明示的にリストされている種類のみが出力に含まれます(つまり、 デフォルトセットをオーバーライドします)。 オプション-format = _ 1_が指定されている場合、このオプションは無視されます。 このオプションのデフォルト値は_fks_です。
- -file-scope *[= yes | no]
タグのスコープが単一のファイル(つまり、 「静的」タグなど、定義されているファイルの外部で見ることができないタグは、出力に含める必要があります。* -h *オプションも参照してください。 このオプションはデフォルトで有効になっています。
- -filter * [= yes | no]
*ctags* をフィルターとして動作させ、標準入力からソースファイル名を読み取り、ファイルごとにタグを標準出力に出力します。 *-sorted *が有効な場合、タグは定義されているソースファイル内でのみソートされます。 ファイル名は、行指向入力モードの標準出力( *-L* オプションについての注を参照)から、コマンドラインにリストされたファイル名の後、または *-L* オプションを使用して提供されたファイルからのみ読み取られます。 このオプションを有効にすると、オプション *-f* 、*-o *、および*-totals *は無視されます。 このオプションは非常に難解であり、デフォルトでは無効になっています。 このオプションは、最初のファイル名の前に表示する必要があります。
-filter-terminator = _ string_
-filter *オプションが有効な場合に解析される各ファイル名のタグに続く標準出力に出力する文字列を指定します。 これにより、アプリケーションはctagsの出力を読み取って、各ファイルの出力がいつ終了するかを判断できます。 読み込まれたファイル名がディレクトリで、-recurse *が有効になっている場合、この文字列は、ディレクトリを降順にすることで見つかったすべてのタグの最後に1回だけ出力されることに注意してください。 この文字列は、ファイルの最後のタグ行から終了改行で常に区切られます。 このオプションは非常に難解で、デフォルトでは空です。 このオプションは、最初のファイル名の前に表示する必要があります。
-format = _ level_
出力タグファイルの形式を変更します。 現在、_level_の有効な値は_1_または_2_のみです。 レベル1は元のタグファイル形式を指定し、レベル2は拡張フィールドを含む新しい拡張形式を指定します(ただし、元の vi (1)実装との後方互換性を保持する方法で)。 デフォルトのレベルは2です。 このオプションは、最初のファイル名の前に表示する必要があります。 [etagsモードでは無視されます]
- - 助けて*
詳細な使用法の説明を標準出力に出力して、終了します。
- -if0 * [= yes | no]
プリプロセッサ条件の「#if 0」ブランチ内のコードを非マクロタグで検査する必要があるかどうかを示します(マクロタグは常に含まれます)。 このコンストラクトの目的はコードを無効にすることであるため、このオプションのデフォルト値は_no_です。 これは設定のみを示し、「#if 0」ブランチ内のコードのスキップを保証しないことに注意してください。プリプロセッサの条件が複雑すぎる場合にタグを生成するフォールバックアルゴリズムが条件のすべてのブランチに続くためです。 このオプションはデフォルトで無効になっています。
-<LANG> -kinds = _ [+ |-] kinds_
特定の言語の出力ファイルに含める言語固有の種類のタグ(または種類)のリストを指定します。 <LANG> は大文字と小文字を区別せず、組み込み言語名の1つです(*-完全なリストについては、-list-languages *オプション)。 パラメーター_kinds_は、出力に含めるまたは除外するタグの種類(言語固有)を指定する1文字のフラグのグループです。 *-list-kinds *オプションを使用して、各言語で認識される特定のフラグセット、その意味、およびデフォルトをリストできます。 各文字または文字のグループの前には、デフォルトセットに追加する「」または削除する「-」のいずれかを付けることができます。 先行する「」または「-」記号がない場合、_kinds_に明示的にリストされている種類のみが出力に含まれます(つまり、 指定された言語のデフォルトをオーバーライドします)。
C言語の例として、タグの種類のデフォルトセットにプロトタイプと外部変数宣言を追加し、マクロを除外するには、-c-kinds = _ + px-d_;を使用します。関数のタグのみを含めるには、-c-kinds = _ f_を使用します。
-langdef = _ name_
正規表現で解析される新しいユーザー定義言語_name_を定義します。 定義すると、name_は言語名を取得する他のオプションで使用できます。 このオプションの一般的な使用方法は、最初に言語を定義し、次に-- langmap_を使用してファイル名をマッピングし、次に_-- regex- <LANG> _を使用して正規表現を指定してタグの検索方法を定義することです。
-langmap = _ map [、map […]] _
ファイル名を言語にマップする方法を制御します(-list-maps *オプションを参照)。 コンマで区切られた各_map_は、言語名(組み込み言語またはユーザー定義言語)、コロン、およびファイル拡張子とファイル名パターンのリストで構成されます。 ファイル拡張子は、拡張子の前にピリオドを付けて指定します(例: 「.c」)。 ファイル名のパターンは、パターンを括弧で囲むことで指定されます(例: 「([Mm] akefile)」)。 Cコンパイラのランタイムライブラリから適切なサポートが利用できる場合、ファイル名パターンには、Unixで一般的な通常のシェルワイルドカードが含まれている場合があります(ワイルドカードが渡される前にシェルによって展開されないように、オプションパラメータを引用してください) *ctags )。 コンパイル済みの機能リストに「+ wildcards」が含まれる*-version *オプションの出力を調べると、プラットフォームでシェルワイルドカードが使用可能かどうかを判断できます。それ以外の場合、ファイル名のパターンは、単純なテキスト比較を使用してファイル名と照合されます。 ファイル拡張子をマッピングする場合、最初に他の言語からマッピング解除されます。
マップの最初の文字がプラス記号である場合、そのマップの拡張子とファイル名パターンがその言語の現在のマップに追加されます。そうでない場合、マップは現在のマップを置き換えます。 たとえば、拡張子が.cおよび.xのファイルのみをC言語ファイルとして扱うように指定するには、「-langmap = _ c:.c.x_」を使用します。 .jの拡張子を持つファイルをJava言語ファイルとして追加するには、「-langmap = _ c:.c.x、java:+。j_」を指定します。 メイクファイル(たとえば、「メイクファイル」、「メイクファイル」、または拡張子「.mak」を持つファイル)を「メイク」と呼ばれる言語にマッピングするには、「-langmap = _ make:([Mm] akefile).mak_ "。 拡張子のないファイルをマップするには、ピリオドを指定し、その後にピリオド以外の文字を続けないでください( 「。」、「.. x」、「。x。」)。 特定の言語のマッピングをクリアするには(その言語のタグの自動生成を禁止するため)、空の拡張リストを指定します(例: 「-langmap = _ fortran:」)。 特定のすべての言語のデフォルトの言語マッピングを復元するには、マッピングにキーワード「default」を指定します。 すべての言語のデフォルト言語マッピングの復元を指定するには、「-langmap = _ default」を指定します。 ファイルの言語を推測するとき、ファイル拡張子はファイル名パターンの前にテストされることに注意してください。
-言語力 = _ language_
デフォルトでは、 ctags はソースファイルの言語を自動的に選択し、言語が決定できないファイルを無視します(上記の SOURCE FILES を参照)。 このオプションは、拡張子に基づいて言語を自動的に選択するのではなく、指定された_language_(大文字と小文字を区別せず、組み込みまたはユーザー定義)を指定されたファイルごとに強制的に使用します。 さらに、特別な値_auto_は、言語が自動的に選択されることを示します(これにより、このオプションは事実上無効になります)。
-言語 = _ [+ |-] list_
タグ生成を有効にする言語を指定します。_list_には、カンマ区切りの言語名のリストが含まれます(大文字と小文字は区別されません。組み込みまたはユーザー定義)。 _list_の最初の言語の前に「」または「-」が付いていない場合、_list_の言語を追加または削除する前に現在のリストがクリアされます。 「-」が見つかるまで、リスト内の各言語が現在のリストに追加されます。 それぞれ「」または現在のリストから削除されます。 したがって、現在のリストを新しいリストに置き換えるか、現在のリストに言語を追加または削除するのが簡単になります。 タグが生成されるファイルの実際のリストは、有効な言語拡張マッピングによって異なります(-langmap *オプションを参照)。 このオプションを使用して明示的に無効にしない限り、ユーザー定義言語を含むすべての言語が有効になります。 _list_に含まれる言語名は、任意の組み込み言語または以前に-langdef で定義された言語です。 デフォルトは「all」で、有効な引数としても受け入れられます。 組み込みの言語名の完全なリストについては、-list-languages *オプションを参照してください。
- - ライセンス*
ソフトウェアライセンスの概要を標準出力に出力して、終了します。
- -line-directives * [= yes | no]
「#line」ディレクティブを認識するかどうかを指定します。 これらはプリプロセッサの出力に存在し、プリプロセッサ出力ファイルが生成された元のソースファイルの行番号、および場合によってはファイル名を含みます。 このオプションを有効にすると、 ctags は、プリプロセッサ出力の実際の場所ではなく、元のソースファイルの場所のファイル名と行番号でマークされたタグエントリを生成します。 タグファイルに配置される実際のファイル名は、元のソースファイルがプリプロセッサ出力ファイルに対して相対的であると想定されるため、プリプロセッサ出力ファイルと同じ主要なパスコンポーネントを持ちます(もちろん、#lineディレクティブが絶対パス)。 このオプションはデフォルトではオフです。 注意:*このオプションは通常、-excmd = _ number_( *-n )オプションと一緒に使用した場合にのみ役立ちます。 また、プリプロセッサ出力ファイルの拡張子が ctags に認識されていない場合は、-langmap *または-language-force *オプションを使用する必要があります。
-リンク [= yes | no]
シンボリックリンク(サポートされている場合)をたどるかどうかを示します。 無効にすると、シンボリックリンクは無視されます。 このオプションはデフォルトでオンになっています。
- -list-kinds * [= language | all]
指定された言語またはすべての言語のいずれかで認識されるタグの種類を一覧表示して、終了します。 タグファイルに記録されている各種類のタグは、1文字のフラグで表されます。このフラグは、-<LANG> -kinds *オプションを使用して出力に配置されるタグをフィルタリングするためにも使用されます。 一部の言語やタグの種類は正規表現を使用して実装され、regexサポートが *ctags にコンパイルされていない場合は使用できない場合があります(*-regex- <LANG> *オプションを参照)。 リストされた各種類は、「[off]」が後に続かない限り有効です。
- -list-maps * [= language | all]
指定された言語またはすべての言語のいずれかの言語にファイル名を関連付けるファイル拡張子とファイル名パターンをリストし、終了します。 上記の*-langmap オプション、および *SOURCE FILES を参照してください。
- -list-languages *
*ctags* が理解できる言語の名前をリストして、終了します。 これらの言語名は大文字と小文字を区別せず、*-language-force *、*-languages *、*-<LANG> -kinds *、および*-regex- <LANG> *オプションで使用できます。
-options = _ file_
_file_から追加オプションを読み取ります。 特別な場合として、-options = _ NONE_がコマンドラインの最初のオプションとして指定されている場合、ファイルまたは環境からの設定オプションの自動読み取りを無効にします( FILES を参照)。
-再帰 [= yes | no]
提供されたファイルのリストにあるディレクトリに再帰します。 提供されたファイルのリストが空で、-L *オプションでファイルリストが指定されていない場合、現在のディレクトリ(つまり、 「。」)が想定されます。 シンボリックリンクが続きます。 これらの動作が気に入らない場合は、ファイルを明示的に指定するか、代わりに *find (1)の出力を ctags -L- にパイプしてください。 注意:*現在、このオプションはすべてのプラットフォームでサポートされているわけではありません。 *-help *オプションの出力にこのオプションが含まれている場合に使用できます。 再帰を制限するには、-exclude *も参照してください。
-regex- <LANG> = _/regexp/replacement/[kind-spec/] [flags] _
_/regexp/replacement/_のペアは、スタイルが sed 置換コマンドに似た正規表現置換パターンを定義します。これにより、名前付き言語 <LANG> にマップされたソースファイルからタグを生成します(大文字と小文字は区別されません) ;組み込み言語またはユーザー定義言語のいずれか)。 正規表現_regexp_は、拡張正規表現(大体 egrep (1)で使用されるもの)を定義します。これは、タグを含む単一のソース行を見つけるために使用され、\ tを使用してタブ文字を指定できます。 一致する行が見つかると、_replacement_で定義された名前のタグが生成されます。通常、_regexp_内の一致するサブ式グループを参照する特別な後方参照\ 1〜\ 9が含まれます。 オプションのパラメーターに表示される「/」区切り文字は、実際には任意の文字に置き換えることができます。 使用されるセパレータ文字は、パラメータ内でセパレータ以外のものとして使用される場合は、バックスラッシュ( ’#146;)文字でエスケープする必要があることに注意してください。 このオプションで定義された正規表現は、パラメーターが省略されない限り、指定された言語の正規表現の現在のリストに追加されます。その場合、現在のリストはクリアされます。
flags_によって変更されない限り、_regexp_はPosix拡張正規表現として解釈されます。 _replacement_は、一致するすべての行で空でない文字列に展開する必要があります。そうしないと、警告メッセージが報告されます。 _regexp_に一致するタグのオプションの種類指定子は、_replacement_の後に続く場合があります。これは、「種類」拡張フィールドで報告されるタグの種類を決定します(下記の TAG FILE FORMAT を参照)。 _kind-spec_の完全な形式は、単一文字、コンマ、名前(スペースなし)、コンマ、説明、それに続く区切り文字の形式で、種類の値の短い形式と長い形式を指定し、テキストの説明(*-list-kinds *を使用して表示)。 種類名および/または説明は省略できます。 _kind-spec_を省略すると、デフォルトで「_r、regex」になります。 最後に、_flags_は、_regexp_の解釈に次の効果を持つ1文字以上の文字です。
Tag | Description |
---|---|
|Tag |Description |b |The pattern is interpreted as a Posix basic regular expression. |e |The pattern is interpreted as a Posix extended regular expression (default). |i |The regular expression is to be applied in a case-insensitive manner.
このオプションは、プラットフォームに依存する正規表現のサポートを使用して ctags がコンパイルされた場合にのみ使用できることに注意してください。 正規表現のサポートがコンパイルされているかどうかを判断するには、コンパイルされた機能リストに「+ regex」を含む*-version *オプションの出力を調べます。
*ctags* で使用される正規表現の詳細については、* regex(5,7)* manページ、またはregexのGNU情報ドキュメント(例: 「情報正規表現」)。
- -sort * [= yes | no | foldcase]
タグファイルをタグ名でソートするかどうかを示します(デフォルトは_yes_)。 元の vi (1)ではソートされたタグが必要でした。 _foldcase_値は、大文字と小文字を区別しない(または大文字と小文字を区別する)並べ替えを指定します。 大文字と小文字を区別してソートされたタグファイルの高速バイナリ検索には、ctags readtagsライブラリまたはVimバージョン6.2以降(「set ignorecase」を使用)にあるタグファイルを使用するツールからの特別なサポートが必要です。 このオプションは、最初のファイル名の前に表示する必要があります。 [etagsモードでは無視されます]
- -tag-relative * [= yes | no]
コマンドラインで指定されたファイルが絶対パスで指定されていない限り、タグファイルに記録されるファイルパスは、現在のディレクトリではなく、タグファイルを含むディレクトリに相対的であることを示します。 このオプションは、最初のファイル名の前に表示する必要があります。 デフォルトは、etagsモードで実行している場合は_yes_( -e オプションを参照)、そうでない場合は_no_です。
-合計 [= yes | no]
*ctags* の現在の呼び出し中に読み取られたソースファイルと書き込まれたタグファイルに関する統計情報を出力します。 このオプションはデフォルトではオフです。 このオプションは、最初のファイル名の前に表示する必要があります。
- -verbose * [= yes | no]
詳細モードを有効にします。 これにより、オプション処理に関する情報と、 ctags によって考慮される各ファイルに対して実行されるアクションを説明する短いメッセージが出力されます。 通常、 ctags は、オプションが構成ファイル(下記の FILES を参照)および CTAGS 環境変数から読み取られるまで、コマンドライン引数を読み取りません。 ただし、このオプションがコマンドラインの最初の引数である場合、これらのソースからオプションが読み取られる前に有効になります。 デフォルトは_no_です。
- バージョン*
*ctags* のバージョン識別子を標準出力に出力して、終了します。 これには、常に文字列「Exuberant Ctags」が含まれることが保証されています。
運用の詳細
*ctags* は各ファイル名を順番に検討するため、次の3つのテストを順番に適用してファイルの言語を決定しようとします:ファイル拡張子が言語にマッピングされている場合、ファイル名がマッピングされているシェルパターンと一致する場合最後に、ファイルが実行可能で、その最初の行がUnixスタイルの「#!」を使用するインタープリターを指定している場合仕様(プラットフォームでサポートされている場合)。 言語が識別された場合、ファイルが開かれ、適切な言語パーサーが呼び出されて現在開いているファイルを操作します。 パーサーはファイルを解析し、処理するように記述された各言語オブジェクトのタグファイルにエントリを追加します。 これらのエントリの詳細については、以下の* TAGファイル形式*を参照してください。
*ctags* のこの実装は、レガシー実装のようにCコードにフォーマット要件を課しません。 ctagsの古い実装は、プリプロセッサの条件に起因するコーディングのジレンマを解決するために、特定のフォーマットの前提に依存する傾向がありました。
一般に、 ctags は条件付きプリプロセッサディレクティブについて賢くしようとします。 タグを定義するステートメント内でプリプロセッサ条件が検出された場合、 ctags はその条件の最初のブランチのみに従います(「#if 0」の特別な場合を除き、最後のブランチのみに従います)。 これは、次の例のように、1つのブランチのみを追跡しないと、あいまいな構文になる可能性があるためです。
- ifdef TWO_ALTERNATIVES struct \ {#else union \ {#endif short a;長いb; }
両方のブランチをたどることができなかったり、中括弧が不均衡になったり、 ctags が構文を理解できなくなります。
一般に条件内の複雑で一貫性のないペアリングにより、このヒューリスティックのアプリケーションがファイルを適切に解析できない場合、 ctags は、条件付きプリプロセッサブランチを選択的にたどらない別のヒューリスティックを使用してファイルを再試行しますが、代わりに依存にフォールバックします#if条件付き分岐をたどることによってブレースのアンバランスが発生すると、ブロック1の終了ブレース( "}")がブロックの終わりを示す。
*Ctags* は、次の条件付き構造を受け入れるために、二重の括弧で囲まれた引数リストを特別に処理しようとします。
extern void foo __ARGS((int one、char two));
「((」の直前の名前はすべて自動的に無視され、以前の名前が使用されます。
C ++演算子の定義は特別に処理されます。 すべてのタイプの演算子(オーバーロードおよび変換)との一貫性を保つために、タグファイル内の演算子名の前には、常に文字列「operator」(つまり、 実際の演算子定義が「operator <<」と記述されていた場合でも)。
タグファイルを作成または追加すると、タグ名でソートされ、同一のタグ行が削除されます。
タグファイル形式
etagsモードで実行していない場合、タグファイルの各エントリは個別の行で構成され、各行は最も一般的なケースでは次のようになります。
tag_name <TAB> file_name <TAB> ex_cmd; "<TAB> extension_fields
これらの行のフィールドとセパレータは、次のように指定されます。
Tag | Description |
---|---|
1. | tag name |
2. | single tab character |
3. | name of the file in which the object associated with the tag is located |
4. | single tab character |
5. | EX command used to locate the tag within the file; generally a search pattern (either/pattern/or ?pattern?) or line number (see --excmd). Tag file format 2 (see --format) extends this EX command under certain circumstances to include a set of extension fields (described below) embedded in an EX comment immediately appended to the EX command, which leaves it backward-compatible with original vi(1) implementations. |
内部目的のために、いくつかの特別なタグがタグファイルに書き込まれます。 これらのタグは、常にファイルの先頭にソートされるように構成されています。 したがって、これらのタグの最初の2文字は、ソースファイルではなく有効なタグファイルが上書きされているかどうかを判断するために、マジックナンバーを使用してタグファイルを検出します。
各ソースファイルの名前は、コマンドラインに表示されるとおりにタグファイルに記録されることに注意してください。 したがって、コマンドラインで指定したパスが現在のディレクトリからの相対パスである場合、同じ方法でタグファイルに記録されます。 ただし、この動作を変更する方法については、*-tag-relative *オプションを参照してください。
拡張フィールドは、前述のように、EXコマンドの最後にコメントとして追加される、タブで区切られたキーと値のペアです。 これらのキーと値のペアは、一般的な形式「key _: value_」で表示されます。 タグファイルの行におけるそれらの存在は、*-fields *オプションによって制御されます。 可能なキーとその値の意味は次のとおりです。
Tag
説明
アクセス
このクラスメンバの可視性を示します。_value_は言語に固有です。
ファイル
タグの可視性がファイル制限されていることを示します。 このキーには対応する値がありません。
種類
タグのタイプまたは種類を示します。 その値は、上記のさまざまな*-<LANG> -kinds オプションで説明されている対応する1文字のフラグのいずれか、またはフルネームです。 このフィールドのキー部分を省略することは許可されています(実際、デフォルトです)。 オプションの動作は、-fields *オプションで制御されます。
実装
存在する場合、これは実装が制限されていることを示します(抽象vs. 具体的な)ルーチンまたはクラスの、_value_は言語に固有(C ++の場合は「仮想」または「純粋仮想」、Javaの場合は「抽象」)。
inherits
存在する場合、value。 は、このクラスの派生元のクラスのコンマ区切りリストです(つまり、 から継承)。
署名
存在する場合、value。 ルーチンの署名の言語依存表現です。 完全な形式のルーチンシグネチャは、ルーチンの戻り値の型とその正式な引数リストを指定します。 この拡張フィールドは現在、Cベースの言語でのみサポートされており、戻り値の型は含まれていません。
VIの使用方法
Tag | Description |
---|---|
vi -t tag | Start vi and position the cursor at the file and line where "tag" is defined. |
:ta tag | Find a tag. |
Ctrl-] | Find the tag under the cursor. |
Ctrl-T | Return to previous location before jump to tag (not widely implemented). |
GNU EMACSでの使用方法
Tag
説明
*M-x visit-tags-table <RET> FILE <RET>*
使用するタグファイル「FILE」を選択します。
- M-. [タグ] <RET> *
TAGの最初の定義を見つけます。 デフォルトのタグは、カーソルの下の識別子です。
- M-**
以前に「M-。」を呼び出した場所に戻ります。
- C-u M-。*
最後のタグの次の定義を見つけます。
タグ
NEDITを使用する方法
- - フォーマット*
警告
*ctagsctagsctagsctags-I*
空白は、-L *オプションを使用して指定されたリストファイルから読み取られたファイル名とオプションの区切り文字として、およびフィルターモード(-filter *オプションを使用して指定された)として扱われます。 したがって、現在のところ、これらのオプションを使用してファイル名や埋め込み空白(スペースなど)を含むその他のオプションを提供することはできません。
*ctags* がタグの検索にパターンを使用する場合(*-excmd *オプションを参照)、次を含む行と同一の別のソース行が存在する場合、間違った行がエディターによって検出される可能性があることに注意してくださいタグ。 次の例は、この状態を示しています。
int変数。
/…/void foo(variable)int variable; \ {/…/}
使用するエディタとコード内の場所に応じて、実際のグローバル変数定義を見つける前に、検索パターンがfoo()のローカルパラメータ宣言を見つける可能性があります。パターンは同一です)。 これは、-excmd = _ n_オプションを使用することで回避できます。
BUGS
*Ctagsls*
- C ++メンバー関数定義を解析するとき(例: "className
- function")、 ctags はスコープ指定子がクラス名または名前空間指定子であるかどうかを判断できず、拡張フィールドのスコープ部分に常にクラス名としてリストします。 また、C 関数がクラス宣言の外側で定義されている場合(通常の場合)、アクセス仕様(つまり、 パブリック、保護、またはプライベート)および実装情報(例: 関数定義にタグが生成されるとき、関数宣言に含まれる仮想、純粋仮想)は不明です。 ただし、プロトタイプには使用できます(例:**-c -kinds ** = _ + p_)。
クラスに継承された言語オブジェクトの修飾タグは生成されません。
環境変数
Tag | Description |
---|---|
*CTAGS * | If this environment variable exists, it will be expected to contain a set of default options which are read when* ctags starts, after the configuration files listed in FILES*, below, are read, but before any command line options are read. Options appearing on the command line will override options specified in this variable. Only options will be read from this variable. Note that all white space in this variable in considered a separator, making it impossible to pass an option parameter containing an embedded space. If this is a problem, use a configuration file instead. |
*ETAGS * | Similar to the* CTAGS variable above, this variable, if found, will be read when etags starts. If this variable is not found, etags will try to use CTAGS* instead. |
*TMPDIR * | On Unix-like hosts where mkstemp() is available, the value of this variable specifies the directory in which to place temporary files. This can be useful if the size of a temporary file becomes too large to fit on the partition holding the default temporary directory defined at compilation time.* ctags creates temporary files only if either (1) an emacs-style tag file is being generated, (2) the tag file is being sent to standard output, or (3) the program was compiled to use an internal sort algorithm to sort the tag files instead of the the sort utility of the operating system. If the sort utility of the operating system is being used, it will generally observe this variable also. Note that if ctags *is setuid, the value of TMPDIR will be ignored. |
ファイル
/ctags.cnf(MSDOS、MSWindowsのみ)/etc/ctags.conf/usr/local/etc/ctags.conf$HOME/.ctags(MSDOSの$ HOME/ctags.cnf、MSWindows).ctags(ctags。 MSDOS、MSWindowsのcnf)
Tag | Description |
---|---|
If any of these configuration files exist, each will be expected to contain a set of default options which are read in the order listed when* ctags starts, but before the CTAGS environment variable is read or any command line options are read. This makes it possible to set up site-wide, personal or project-level defaults. It is possible to compile ctags to read an additional configuration file before any of those shown above, which will be indicated if the output produced by the --version option lists the "custom-conf" feature. Options appearing in the CTAGS *environment variable or on the command line will override options specified in these files. Only options will be read from these files. Note that the option files are read in line-oriented mode in which spaces are significant (since shell quoting is not possible). Each line of the file is read as one command line parameter (as if it were quoted with single quotes). Therefore, use new lines to indicate separate command-line arguments. | |
tags | The default tag file created by* ctags*. |
TAGS | The default tag file created by etags. |
関連項目
また、 ex (1)、 vi (1)、 elvis 、または vig ( ctags の公式エディター)があります。 vim の詳細については、次のVIM Pages Webサイトを参照してください。
著者
動機
「最高の動機と人類に奉仕する意志に促された場合、人間の心の充満からのすべての努力と努力は礼拝です。」
- バハイの著作から
クレジット
ctagskirkenda@cs.pdx.edu
また、 vim の作者であるBram Moolenaar <Bram@vim.org>は、編集者を他者へのサービスとして開発し、ウガンダの孤児を支援することに多大な時間とエネルギーを費やしてきました。
「GNU EMACSを使用する方法」というタイトルのセクションは、GNU etags の情報ページから恥知らずに盗まれました。 リンク:/unix_commands/index [previous]リンク:/unix_commands/index [next]リンク:/cgi-bin/printversion.cgi?tutorial = unix_commands&file = ctags [Printer Friendly]
Advertisements |