Vim での C/C++ のリファクタリング (例:Eclipse のようなメソッド抽出)
-
20-09-2019 - |
質問
Vim には、Eclipse のリファクタリング ツールのような、C または C++ コードでリファクタリングを実行するためのプラグインまたは組み込みメソッドはありますか?
私が特に気に入っているのは、Eclipse のメソッド抽出リファクタリング ツールです。このツールは、新しいメソッドからパラメーターを決定し、通常は戻り値として使用する変数も推測します。
解決
いいえ、Vimは編集のために良い環境ですが、むしろセマンティックレベルよりも、これらのほとんどは、構文レベルで行われます(コードの折りたたみ、構文の色分け、マクロ展開など)多くの点でカスタマイズすることができます。でも、コードの折りたたみはちょうど反対側の括弧を一致します。
適切なリファクタリングを行うには、変数のようにどのスコープで宣言されており、どのようなAST、およそセマンティック多くの知識を持っている必要があります。彼らはすぐに彼らは名前を変更し、場所をするかを決定するという点で使用されている場所に戻って参照できるように、EclipseのようなIDEは、各レキシカルスコープで定義された変数のキャッシュを構築します。
それはあなたが構文的にいくつかのことを行うことができないと言うことはありません。結局、人は単にコードのブロックを取り出すことができ、簡単に十分な別の関数にそれを置きます。あなたも、(例えば、変数のリストを見つけるいくつかのパラメータを推測ローカル宣言を持っているものを見つける、それらを削除することができるかもしれないと、あなたのパラメータは、どのような残っている。しかし、Eclipseはまた、任意の変数があるかどうかを考え出すのようなもの、他を行います関数内で変更され、そしてそれらは、戻り値で戻されている保証する。それはまた、任意の例外がスローされたかどうかをチェックし、リストに追加します。
正味の効果は、あなたがVimの中でこれらのいくつかを近似することができるかもしれ一方で、あなたが本当にのVim専用環境でこの作業を取得できるようにするつもりはないということです。あなたは、どちらかの適切なEclipseでVimのようなキーバインドを使用するか、 eclimするで見ることができます。ホームページから:
eclimの第一の目標は持っています Vimのに機能をEclipseの 編集者。当初の目標は、することでした EclipseのJava機能を提供 vimのではなく、様々な他のサポートで 言語(C / C ++、PHP、Pythonの、ルビー、 CSS、HTML、XMLなど)が追加されました そして、いくつかのより多く計画されています。
Eclimであるアプリケーションの少なくと 素晴らしい2の統合のより プロジェクト。まず、Vimは、間違いなくあります 最高のテキストエディタの1 存在。二、Eclipseの、 以下のための多くの偉大なツールを提供しています 様々な言語での開発。各 そのことができる多くの機能を提供します 開発者の生産性を向上させるが、 両方ともまだあることを何かを残します 希望。 VimはネイティブのJavaサポートを欠い そして、高度な機能の多く Eclipseで利用できます。上のEclipse、 一方では、まだを使用する必要があります 多くのもののためのマウス、およびとき Vimのと比較して、より少ない提供 テキスト編集のための理想的なインタフェースます。
eclimは出番があります。 代わりにIDEを作成しようとします VimのまたはEclipseでVimのエディタ、eclim Eclipseはプラグインに提供すること Eclipseの機能を公開 サーバ・インタフェース、およびVimのセット Eclipseと通信するプラグイン そのインターフェイスを介し。
このだけではなく、Eclipseのような環境を与え、それが のEclipseのです。しかし、あなたはまだvimののナビゲーションとテキスト編集機能を得ます。サポートをリファクタリングrel="noreferrer">の
他のヒント
私は、プラグインをリファクタリング一般的なを書きました。 (それは仕事で私の第一言語だとして)C ++を扱う主要言語の一つです。メソッド抽出がサポートされています。
抽出された機能の中から出てくると、変数の - (ctagsのおかげで...しかし、残念ながら、常にすべて)C ++の場合は、プラグインがほとんどを推定する(ctagsのおかげで)ことが可能です。 私はまだイン/アウトの変数が交換されなければならない方法を選択するために、少しダイアログボックスを記述する必要があります(constの参照、ように右辺値参照、コピー、ポインタ、タプル、構造体、および)の(ところで、ヘルプはGUIのように歓迎されています私のものではありません^^ ')の
C++ のリファクタリングを使用して vim を徹底的に探した結果、これが私が思いついた最良の解決策です。
- Visual Studio 2013 以降 - C++ 開発とデバッグに優れた IDE ですが、十分なリファクタリングや vim がありません
- vsvim プラグインをインストールします。これで、vim のナビゲーション、検索、文字列の置換などがすべて可能になります。(一部の高度な機能はサポートされていません)
- Resharp C++ のインストール - 速度を犠牲にしてリファクタリングに最適です。少し使いにくくなりますが、メソッド/変数の自動生成を推論したり、ローカル/グローバル/メソッド変数や関数の名前を変更したり、ソリューション内での使用状況を検索したり、その他の機能を実行したい場合には、非常に価値があります。
これは、C++ 開発、デバッグ、リファクタリングに関して私が見つけた最良の組み合わせです。少なくとも 3 倍から 5 倍速くなります。あなたにも役立つことを願っています。