[解決済み] Vimでリファクタリング
質問
もちろん、IDE上でリファクタリングができるという事実は多くの人にとって貴重なものです。私はコーディングしているときにはほとんどリファクタリングを行いませんが、誰かのソースを編集するときには行うかもしれません。Vim で複数のファイルにわたってそのような些細なタスクをどのように達成するのでしょうか。
私は このプラグイン はRubyのリファクタリング用ですが、quot;any"言語ではどうでしょうか?
どのように解決するのですか?
Vim は IDE ではない」というパラダイムには賛成です。しかし、IDE が存在しない場合もあります。そんな時に私が使っているものを紹介します。
免責事項 : 私がこれを書いてから、Language Server Protocol サーバー、リンター、およびフィクサーの普及により、Vim (および他のエディター) にもいくつかの素晴らしいリファクタリング機能がもたらされました。IMO では、それらは専用の IDE の機能に匹敵するには程遠いものです。 ALE と nvim-lspconfig を参照してください)。より多くの情報については、この質問に対する他の回答を参照してください!
:grep、:vimgrep、:GrepperAg、:Ggrep
私が普段使っている通常の置換にもっと関係のあるリファクタリング :grep をプロジェクトツリー上で実行し、その後 マクロを記録する を記録して、リファクタリングを行います。通常、これによって私はほとんど労力をかけずに大量のファイルを素早く変更することができます。正直なところ、私はこの方法を他のどの方法よりも多く使用しています。
あなたのワークフローによっては、内蔵のコマンドは遅かったり不便だったりするかもしれません。もしあなたが git を使っているなら、優れた
Fugitive
プラグインとその
:Ggrep
コマンドで、git にチェックインしたファイルのみを検索することができます。また、私は
vim-grepper
は検索ツールにとらわれず(ag, sift, ripgrepなどをサポート)、高速に検索できるので気に入っています。
argdo, :cdo, そして :bufdo
:cdo と :argdo は、一連のファイルに対してvimコマンドを実行するのに便利です。
コマンドライン
で変更が必要なファイルのリストを決定するのが難しい場合、コマンドラインから
:vimgrep
によって変更が必要なファイルのリストを決定するのが難しい場合、私はコマンドラインの grep/find コマンドに頼って、リファクタリングが必要なファイルのリストをより綿密に調べます。リストをテキスト ファイルに保存し
:e
とマクロ レコーディングのマッシュアップを使用して、必要な変更を行います。
レジスタからの保存/復元、レジスタカウンタ変数のインクリメント/デクリメント、後で使用するためのマクロ記録のファイルへのクリーニング/保存など、マクロ記録のスキルを錆びつかせないようにすればするほど、リファクタリングのために Vim が有用であることがわかります。
更新
これを書いてから、私が説明した方法についてのビデオキャストが vimcasts.org で公開されました。 すべてのVimcasts! ). リファクタリングについては、これらのビデオキャストをご覧ください。
ヴィムゴルフ も練習に最適です。
関連
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] Vim 直前の検索ハイライトをクリアする
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Vimで行全体を複製する方法は?
-
[解決済み] Vimで行のコメント/アンコメントを素早く行う方法は?
-
[解決済み] vimにテキストをペーストする際の自動インデントをオフにする
-
[解決済み] Vimで最も生産性の高いショートカットは何ですか?
-
[解決済み】vimの「sudoで書く」トリックはどうやるの?
-
[解決済み】Vimで複数のファイルを効率的に操作する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Vimでファイルを開くとE325アテンションエラーが発生する
-
[解決済み] Netbeans IDE用Vimプラグイン [終了しました]。
-
[解決済み] vimのレジスタはどのように使うのですか?
-
[解決済み] すべての行をクリップボードにコピーする
-
[解決済み] Vimの設定ファイルにコメントを入れる方法。".vimrc" は?
-
[解決済み] VIMで、本当に長い1行を複数の行に分割するにはどうすればよいですか?
-
[解決済み] vimで改行を貼り付けるには?
-
[解決済み] Vim:letとsetはどう違うの?
-
[解決済み] vimでファイルを開いた後、バックディレクトリのブラウズに移動する
-
[解決済み] なぜvimが私のコードをラップするのを止められないのですか?