30

Eclipseのリファクタリングツールのように、CまたはC ++コードでリファクタリングを実行するためのプラグインまたは組み込みメソッドがVimにありますか?

私は特にEclipseのextractメソッドリファクタリングツールに熱心です。このツールは新しいメソッドからパラメーターを決定し、通常は戻り値として使用する変数を推測します。

4

3 に答える 3

19

いいえ、Vimは編集に適した環境であり、さまざまな方法(コードの折り畳み、構文の色付け、マクロの展開など)でカスタマイズできますが、これらのほとんどはセマンティックレベルではなく構文レベルで行われます。コード折り畳みでさえ、反対側の中括弧と一致します。

適切なリファクタリングを行うには、AST、どの変数がどのスコープで宣言されているかなどに関する多くのセマンティック知識が必要です。EclipseのようなIDEは、各字句スコープで定義された変数のキャッシュを構築するため、名前を変更する場所と場所を決定する際に、使用されている場所をすばやく参照できます。

構文的にいくつかのことができないと言っているわけではありません。結局のところ、コードのブロックを取り出して、それを別の関数に簡単に入れることができます。いくつかのパラメーターを推測できる場合もあります(たとえば、変数のリストを見つけ、ローカル宣言があるものを見つけ、それらを削除し、残っているのはパラメーターです。しかし、Eclipseは他のことも行います。たとえば、変数が関数で変更され、戻り値によって返されることを確認します。また、スローされた例外をチェックし、それらをリストに追加します。

正味の効果は、Vimでこれらのいくつかを概算できるかもしれませんが、実際にはVimのみの環境でこれを機能させることはできないということです。Eclipse本体でVimのようなキーバインディングを使用するか、eclimを調べることができます。ホームページから:

eclimの主な目標は、Eclipseの機能をVimエディターに導入することです。当初の目標はvimでEclipseのJava機能を提供することでしたが、他のさまざまな言語(c / c ++、php、python、ruby、css、html、xmlなど)のサポートが追加され、さらにいくつかが計画されています。

Eclimは、アプリケーションではなく、2つの優れたプロジェクトの統合です。最初のVimは、間違いなく、現存する最高のテキストエディタの1つです。2番目のEclipseは、さまざまな言語で開発するための多くの優れたツールを提供します。それぞれが開発者の生産性を向上させることができる多くの機能を提供しますが、どちらもまだ望ましいものを残しています。VimにはネイティブJavaサポートとEclipseで利用可能な多くの高度な機能がありません。一方、Eclipseは依然として多くの目的でマウスを使用する必要があり、Vimと比較すると、テキストを編集するための理想的とは言えないインターフェイスを提供します。

そこでeclimが登場します。eclimは、VimでIDEを作成したり、EclipseでVimエディターを作成したりする代わりに、サーバーインターフェイスを介してEclipse機能を公開するEclipseプラグインと、そのインターフェイスを介してEclipseと通信する一連のVimプラグインを提供します。

これはEclipseのような環境を提供するだけでなく、Eclipseです。ただし、vimのナビゲーション機能とテキスト編集機能は引き続き利用できます。リファクタリングのサポートに関するドキュメントには、抽出メソッド機能が提供されているとは示されていませんが、これはニーズに合っているようです。

于 2010-03-20T08:33:48.823 に答える
19

一般的なリファクタリングプラグインを作成しました。C ++は、処理される主要言語の1つです(これは私の主要言語であるため)。メソッド抽出がサポートされています。

C ++の場合、プラグインは(ctagsのおかげで)抽出された関数に出入りする変数のほとんど(ただし、残念ながらすべてではありません-ctagsのおかげで...)を推測できます。イン/アウト変数の交換方法(const ref、rvalue ref、copy、pointer、tuples、structなど)を選択するための小さなダイアログボックスを作成する必要があります(ところで、GUIは私のものではないのでヘルプは大歓迎です事^^')

于 2011-09-07T22:50:27.537 に答える
1

C ++のリファクタリングでvimを高低で検索した後、これは私が思いついた最良のソリューションです。

  • Visual Studio2013以降-C++の開発とデバッグに最適なIDEですが、十分なリファクタリングやvimがありません
  • vsvimプラグインをインストールする-これで、すべてのvimナビゲーション、検索、文字列置換などが可能になりました(一部の高度な機能はサポートされていません)
  • ResharpC++のインストール-速度を犠牲にしてリファクタリングに最適です。少し不格好になりますが、メソッド/変数の自動生成を推測したり、ローカル/グローバル/メソッド変数または関数の名前を変更したり、ソリューションでの使用法を検索したり、その他の機能を使用したりする場合は、非常に価値があります。

これは、C ++の開発、デバッグ、およびリファクタリングで私が見つけた最良の組み合わせです。少なくとも3倍から5倍速くなります。それがあなたにも役立つことを願っています。

于 2017-04-27T02:32:49.553 に答える