20

Rでのctagsの文書化された使用法はありますか?これは役に立ちますか?実装するのは難しいでしょうか?

具体的には、Vimを使い始めたばかりです。あるファイルにR関数を記述し、別のファイル(Rnwファイル、テストファイル、その他のスクリプトなど)で関数を使用し、Ctrl+]を使用して関数に移動できると便利です。ソース。

更新:それ以来、rtags関数に出くわしました。以下では、vimで動作することをお勧めします。

4

7 に答える 7

10

これは Henrico の回答を修正したもので、次のコードをコピーして ~/.ctags ファイルに貼り付けることで実装できます。Henrico のコードはインデントされた関数では機能しませんでしたが、次のコードでは機能します。

--langdef=R
--langmap=r:.R.r
--regex-R=/^[ \t]*"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t]function/\1/f,Functions/
--regex-R=/^"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t][^f][^u][^n][^c][^t][^i][^o][^n]/\1/g,GlobalVars/ 
--regex-R=/[ \t]"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t][^f][^u][^n][^c][^t][^i][^o][^n]/\1/v,FunctionVariables/

これにより、関数だけでなく ctags で変数を認識できるようになります。taglist vim アドオンを使用している場合は、グローバル変数と他の変数を区別できます。また、taglist を使用している場合は、次を vimrc に貼り付ける必要があります。

let tlist_r_settings = 'R;f:Functions;g:GlobalVariables;v:FunctionVariables'
于 2013-01-26T23:43:36.530 に答える
9

これは、ホームディレクトリにある.ctagsファイルの内容です。インターネットのどこかで見つけました。これを使用して、vimのタグファイルを生成できます。

 --langdef=Splus
 --langmap=Splus:.s.S.R.r.q
 --regex-Splus=/^[ \t]+"?([.A-Za-z][.A-Za-z0-9_]*)"?[\t]*<-[\t]*function/\1/
 --regex-Splus=/^"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-/\1/
于 2011-01-25T16:41:39.253 に答える
3

おそらく、ctagsに新しい言語のサポートを追加する方法を読むことができます。

于 2011-01-25T14:51:04.433 に答える