5

私がemacsとvimで最も見逃しているIDE機能は、コードナビゲーションと使用法の検索です。これらのエディタは両方とも、次の同様の機能を備えています。

  • タグ-指定されたファイルの識別子にインデックスが付けられ、識別子である単語のショートカットを押すと、そこに移動します
  • CScope-識別子の「使用法」に移動できます

私が理解している限り、これらのシステムはどちらも非常に不正確です。同じ名前の類似した識別子がある場合、タグとスコープの両方がそれらを混同する可能性があります。より良い選択肢はありますか、そしてそれらは実際にどれほど正確ですか?

4

4 に答える 4

6

私はEmacsでcscopeとセマンティックを使用しています。私にはそれで十分です。

cscopeで私が頻繁に使用した2つの関数は、cscope-find-global-definitionとcscope-find-this-symbolです。前の関数は非常に正確です。

C-c s s         Find symbol. 
C-c s d         Find global definition.

セマンティック(動的インデックス、TAGSを生成する必要はありません)に関しては。

(global-set-key [f8] 'semantic-ia-fast-jump) ;; jump to definition.
(global-set-key [S-f8]                       ;; jump back
                (lambda ()
                  (interactive)
                  (if (ring-empty-p (oref semantic-mru-bookmark-ring ring))
                     (error "Semantic Bookmark ring is currently empty"))
                  (let* ((ring (oref semantic-mru-bookmark-ring ring))
                         (alist (semantic-mrub-ring-to-assoc-list ring))
                         (first (cdr (car alist))))
                    (if (semantic-equivalent-tag-p (oref first tag)
                                                   (semantic-current-tag))
                        (setq first (cdr (car (cdr alist)))))
                    (semantic-mrub-switch-tags first))))
于 2012-11-18T13:56:01.987 に答える
5

たとえば、 GNU Globalは重複する識別子を許可し、必要なものを選択できるようになります。

于 2012-11-18T13:43:04.833 に答える
5

tagsctags互換ファイルを出力するプログラムはたくさんあります。ctagsには低レベルの制限があるため、言語固有であることがよくありますが、同じ名前のメソッドが複数ある場合、これらのツールはジョブのインデックス作成部分のみを実行するため、ctagsもctagsも役に立ちません。インデックスを検索するのは実際にはVimの仕事であり、IDEではなくおかしなテキストエディタであるため、どのメソッド宣言が正しいかを判断する意味はありません。

幸い、複数のヒットがある場合、Vimは実用的なリストを表示します。しかし、それはあなたがどこまで行けるかです。

Cscopeはctagsよりも少し賢く、Vimから使用すると、検索とインデックス作成を行います。ただし、ctagsと同様に、cscopeは依然としてコードインデクサーです。

実際には両方を同時に使用することは可能set cscopetagsですが、名前の問題には役立ちません。

GNUグローバルを試すことができます。しかし、JavaScriptをサポートしていないので、意見を述べるのに十分な時間、JavaScriptを実際に使用したことはありません。

IDEは通常、コードに対してバックグラウンドで実行される言語固有のパーサー/静的分析ツールを介して魔法を実行します。Vimには少なくとも1つの制限と1つの機能があり、探しているように見えるコード認識のレベルに到達することを想像することさえ困難です。

  1. Vimはマルチスレッドではありません。そのため、バックグラウンドで静的分析ツールを実行することはできません。

  2. Vimは何百もの言語をサポートしています。そのような多くの言語にそのような機能を提供することは、あらゆる規模の組織にとって不可能です。

しかし、 VimはIDEではないので、これは私にとって問題ではありません。

また、プロジェクトに同じ名前のメソッドが複数ないためです。

<C-]>、、、そして私の謙虚なニーズ<C-w>}には十分です。:tag /foo<Tab>:cs f c bar

于 2012-11-18T14:15:22.697 に答える
3

Eclipseと同じレベルのJavaのコードナビゲーションをサポートする非常に使いやすいemacsインターフェースを備えたeclimを参照してください。

EclimはとりわけC/C ++もサポートしていますが、これのサポートはまだemacs-eclimに実装されていませんが、Elispを知っている場合は、実装するのは非常に簡単です。Javaの場合、必要なインフラストラクチャはすべてすでに存在するため、必要なのはc++呼び出しの実装を追加します。

于 2012-11-19T09:20:43.183 に答える