Eclipseのリファクタリングツールのように、CまたはC ++コードでリファクタリングを実行するためのプラグインまたは組み込みメソッドがVimにありますか?
私は特にEclipseのextractメソッドリファクタリングツールに熱心です。このツールは新しいメソッドからパラメーターを決定し、通常は戻り値として使用する変数を推測します。
Eclipseのリファクタリングツールのように、CまたはC ++コードでリファクタリングを実行するためのプラグインまたは組み込みメソッドがVimにありますか?
私は特にEclipseのextractメソッドリファクタリングツールに熱心です。このツールは新しいメソッドからパラメーターを決定し、通常は戻り値として使用する変数を推測します。
いいえ、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のナビゲーション機能とテキスト編集機能は引き続き利用できます。リファクタリングのサポートに関するドキュメントには、抽出メソッド機能が提供されているとは示されていませんが、これはニーズに合っているようです。
一般的なリファクタリングプラグインを作成しました。C ++は、処理される主要言語の1つです(これは私の主要言語であるため)。メソッド抽出がサポートされています。
C ++の場合、プラグインは(ctagsのおかげで)抽出された関数に出入りする変数のほとんど(ただし、残念ながらすべてではありません-ctagsのおかげで...)を推測できます。イン/アウト変数の交換方法(const ref、rvalue ref、copy、pointer、tuples、structなど)を選択するための小さなダイアログボックスを作成する必要があります(ところで、GUIは私のものではないのでヘルプは大歓迎です事^^')。
C ++のリファクタリングでvimを高低で検索した後、これは私が思いついた最良のソリューションです。
これは、C ++の開発、デバッグ、およびリファクタリングで私が見つけた最良の組み合わせです。少なくとも3倍から5倍速くなります。それがあなたにも役立つことを願っています。