1. ホーム
  2. vim

[解決済み] Vimでリファクタリング

2022-11-13 15:42:46

質問

もちろん、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! ). リファクタリングについては、これらのビデオキャストをご覧ください。

ヴィムゴルフ も練習に最適です。