17

Objective-c をサポートする ctags と cscope に代わるものはありますか。これはココアの開発に関連しているので、必然的に Xcode を使用することになるでしょう (そして、おそらく Xcode を使用する必要があります)。私のVimオプションは何だろうと思っていました。

eclim のようなプラグイン システムがあるかもしれませんが、xcode の場合はどうでしょうか。

編集

Objective-C をサポートするために ctags を更新する以外に、私は運が悪いようです。cscopeが同じかどうかは誰にもわかりますか?

4

9 に答える 9

30

この質問から長い間、vimで「遊んで」、特にtaglistプラグインでObjCのサポートが必要でした。私はその質問を見つけて、少し掘り下げました、そしてここにそれほど汚い解決策はありません:

  1. ObjectiveCパーサーがExuberantCTagsトランクに追加されましたが、リリースされていません(まだ?)
  2. 自作を介してOSXに簡単にインストールできます。

    $ brew install ctags --HEAD

  3. ctagsを使用する場合、.mはMatlabとして.h扱われ、C++として扱われることに注意してください。オーバーライドするには、次を使用します。

    $ ctags --langmap=ObjectiveC:.m.h

  4. 次に.vimrc、タグリストのサポートのために次のようなものを追加しました。

    let tlist_objc_settings = 'ObjectiveC;P:protocols;i:interfaces;types(...)'

    そのリストから興味のあるタイプを追加します。

    ctags --list-kinds=all
    ObjectiveC
        i  class interface
        I  class implementation
        p  Protocol
        m  Object's method
        c  Class' method
        v  Global variable
        F  Object field
        f  A function
        p  A property
        t  A type alias
        s  A type structure
        e  An enumeration
        M  A preprocessor macro
    

それが誰かを助けることを願っています!

于 2011-04-26T13:09:13.330 に答える
3

Universal-ctags ( https://ctags.io ) は、Objective-C のプロパティをキャプチャできます。

[jet@localhost objectivec_property.h.d]$ cat input.h 

@interface Person : NSObject {
    @public
        NSString *m_name;
    @private
        int m_age;
}

@property(copy) NSString *personName;
@property(readonly) int personAge;

-(id)initWithAge:(int)age;
@end
[jet@localhost objectivec_property.h.d]$ ../../../ctags -x -o - input.h 
Person           interface     2 input.h          @interface Person : NSObject {
initWithAge:     method       12 input.h          -(id)initWithAge:(int)age;
m_age            field         6 input.h          int m_age;
m_name           field         4 input.h          NSString *m_name;
personAge        property     10 input.h          @property(readonly) int personAge;
personName       property      9 input.h          @property(copy) NSString *personName;
于 2017-04-12T18:02:34.267 に答える
1

私が書いたobjcscopeもお試しいただけます。

objcsope

于 2012-12-17T02:41:54.390 に答える
1

Objective-C に ctags を使用するオプションがあります。ctags モードで etags を使用できます。しばらく前に ctags から派生した etags と、そのソース コードで ctags 互換のタグが、特定のマクロ スイッチを定義することによって生成されます。

実際、Mac OS の man ページでは、同じページに etags と ctags が既に記載されています。object-c が ctags でサポートされていると記載されています。次のコマンドを使用してタグ ファイルを生成できるはずです: ctags -l objc *.[mh]

残念ながら、Mac OS の ctags プログラムは、Apple が台無しにして以来、文書化されているとおりには動作しません。しかし、Ubuntu Linux を使用してこの種の ctags をインストールすることができました。そこに emacs22-bin-common パッケージをインストールする必要があります。

したがって、Mac OS では、このパッケージを自分でコンパイルするだけです。

  • Debian サーバー (リンク)などから、対応するソース パッケージをダウンロードします。
  • 解凍してソースディレクトリに移動
  • run ./configure
  • configure は、lispref が見つからないため、エラーを返します。
  • lib-src を含むものにもかかわらず、作成されたファイル config.status の変数 config_files のすべてのターゲットを削除しました
  • ./config.status を実行します
  • cd lib-src
  • 作る
  • ctags などを /usr/local/bin にコピーして、パーミッションを変更します
    • sudo cp ctags /usr/local/bin
    • chmod a+rx /usr/local/bin/ctags

これで完了です。タグ付けおめでとう!!!

于 2010-08-13T06:27:01.810 に答える
1

私の知る限り、ctags は、新しい言語のいくつかのルールを定義するのに役立ちます。私は、laszlo (flex と同様) を使用して開発を行ったときにそれを行いました。詳細については、ctags のマンページを参照してください。これは難しくありません。

ここにcocoa での開発をサポートする vim ファイルタイプ プラグインがあることがわかりました。

于 2010-06-04T01:25:56.463 に答える
0

もう1つの答えは適切です。MacPortsを使用してEMACSをかなり簡単にインストールでき、Objective-Cサポートがコンパイルされたバージョンのetagsが/ opt / local/binに含まれます。

% sudo port install emacs
% find . -name ‘*.[hm]’ -print0 | xargs −0 /opt/local/bin/etags

そしてvimの内部:

:setlocal tags=TAGS

これは、MacVimでうまく機能します。

于 2010-08-17T14:56:02.713 に答える
0

タグバーのタグを生成するための ctags を取得するのは難しいことがわかりました。Objective-C エディター用の vim プラグインを使用する方が簡単でした。 XVimは XCodeで動作します。私のように Appcode を使用している場合、IdeaVimは適切に統合されています。

ただし、プラグインを使用して Vi/Vim の機能を完全に利用することはできません。ネイティブ IDE コマンドと組み合わせて使用​​することで、十分に補うことができると思います。

于 2014-04-23T13:11:49.817 に答える