bash変数のctagを生成しますか?


7

bashで記述されたプロジェクトに対してctagsを実行すると、関数のタグは生成されますが、変数のタグは生成されません。
例えば私が走ればctags --list-kinds=sh

f関数

「c」言語のリストを実行した場合と比較して、多くのタグタイプが含まれます。
bash変数のタグを生成することは可能ですか?または誰かが~/.ctagsこれを有効にするために追加できるカスタム正規表現を知っていますか?


考えられる回答へのリード:stackoverflow.com/q/11740202/1600630
Cometsong

@Cometsongに感謝しますが、ctagsでfiletypeを認識しても、シェルファイル用に生成できるタグタイプctagsは、デフォルトでは関数のみです。基本的に、正規表現ルールを記述する必要があります。ルールは非常に簡単に記述できるため、他のユーザーが解決できなかった問題があるため、正規表現のルールは現時点ではありません。
the_velour_fog

回答:


4

@Cometsongからのプロンプトに基づいて、私が追加した正規表現を下に書いて追加しました ~/.ctags

--regex-sh=/^[ \t]*(local)?[ \t]*([A-Za-z0-9_-]+)=/\2/v,variable,variables/

これまでのところ、かなりうまく機能しているようです


3

正規表現を構築して、次のような変数宣言を見つけることができます。 [A-z]…=[A-z0-9]

変数の使用法のもう1つ\$は、前にaを含める

私自身のyaml固有の.ctagsの例は次のとおりです。

--regex-c=/^( YAML langdef config )/\1/k,t/
--langdef=yaml
--langmap=yaml:.yml.yaml
--regex-yaml=/^[ \t]*-[ \t]*.*:[ \t]*(.+)/\1/k,tasks/
--languages=+yaml

もちろんbash-ismsのために修正されました。

--regex-sh=/^.*[ \t]*([A-Za-z][A-Za-z0-9_]*)=[".]*/\1/k,tasks/
--languages=+sh

ありがとう、なぜ正規表現を削除したのですか?^プラス=foo="hello world"
記号が

たとえば、編集を参照してください(現在はテストされていません)。
Cometsong
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.