24

Goソースのタグファイルを生成する方法

Macでは、あふれんばかりのctagsをインストールし、ソースディレクトリで以下のコマンドを試しました

ctags -f gosource.tags -R `pwd`

ただし、*。goファイルは考慮されません。-hオプションを使用する必要がありますか?しかし、マニュアルのように、それはヘッダーファイルだけではありませんか?

タグファイルをvimで使用できるように、正しいコマンドを教えてください。また、ファイルをどこにでも保存できるように、絶対パスを使用します

ありがとう。

編集: http ://groups.google.com/group/golang-nuts/browse_thread/thread/3a4848db231b02c9を参照して、現在のctagsがGoをサポートしていると仮定しました。

しかし、http: //ctags.sourceforge.net/languages.htmlはリストに載っていません。

4

4 に答える 4

46

〜/.ctagsに以下を追加します

--langdef=Go
--langmap=Go:.go
--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/
--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/
--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/

http://go-wise.blogspot.com/2011/09/using-ctags-with-go.htmlから)

于 2011-11-23T03:02:30.800 に答える
19
--langdef=Go
--langmap=Go:.go
--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/f,func/
--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/v,var/
--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/t,type/

確かにctags5.8で動作します。前のポスターからのわずかな変更の1つである、ctagsでは、正規表現行の最後に一意の1文字のタイプが必要です。したがって、直感的に/d,func/読む必要があります。/f,func/これにより、ctagsはタイプを区別して識別できるようになりctags --go-types=fvt

于 2012-08-24T17:20:56.157 に答える
5

私はあなたの投稿を見て、仕事に適したツールを見つけようとして少しぶらぶらし、ctagsを試しましたが、最終的には満足できませんでした。Goコード用のctagsファイルを生成するプログラム「gotags」をGoで作成しました。たとえば、構造体フィールド名と構造体名自体にタグを付けるため、現在のctagsサポートよりも優れています。ここで入手できます:https ://github.com/necro351/gotags 。

標準ライブラリパーサーを使用し、優れたGo解析とタグ付け以外の追加機能がないため、これは短くてシンプルなGoプログラムです。それをチェックして(または入手して)、インストールを実行してください。また、それを改善するための提案やアイデアがあれば、私に知らせてください。

編集:私はアクティブなGopherなので、このツールを時間の経過とともに使用しながら更新していきます。

編集:私はもうGoを積極的に開発していません。しかし、私のツールは非常に短く、ほとんどそのまま機能するので、「正しく機能する」はずです:)

于 2014-11-29T06:28:39.413 に答える
0

Go Dashborad/Projectsの「TagGenerators」セクションを確認してください。それらのツールのステータスは私にはわかりません。

編集2011-11-22:本日発表された最新のegotagsフォーク(周期的な参照が可能;-)

于 2011-11-21T10:47:08.300 に答える