1. ホーム
  2. vim

[解決済み] Vimで変数名を素早く変更するには?

2022-10-10 12:50:11

質問

私は Vim を使って、多くの一文字の変数名を含む C や Perl のコードを読み込んでいます。

コードを読んでいる途中で、変数名をより意味のあるものに変更するコマンドがあれば、残りの部分をより速く読むことができるのにと思います。

Vim にこれを素早く行えるようなコマンドはありますか?

正規表現ではうまくいかないと思うのですが、なぜですか?

  1. 同じ一文字の名前が、異なるスコープブロックにおいて異なる目的を持つ可能性がある。

  2. 同じ文字の組み合わせが、別の長い変数名、文字列リテラル、またはコメントの一部である可能性があります。

既知の解決策はありますか?

どのように解決するのですか?

現在のスコープで定義されている変数の名前を変更する方法は次のとおりです。 {} .

変数の使用法にカーソルを移動します。押す gd . つまり、カーソルを定義に移動させるということです。 次に [{ - を押すと、スコープの始まりになります。 次に V - を押すと、ビジュアルラインの選択がオンになります。 このとき % - を押すと、反対側の } にジャンプし、全範囲が選択されます。 押す :s/ - を押すと、代入コマンドが開始される。 <C-R>/ - を押すと、変数名と一致するパターンが挿入されます (その変数名は gd ). /newname/gc<CR> - を指定すると、検索と置換が開始され、一致するたびに確認が行われます。

ここで、マクロを記録するか、より良い方法として、キーをマッピングする必要があります。

最終的なマッピングは以下の通りです。

" For local replace
nnoremap gr gd[{V%::s/<C-R>///gc<left><left><left>

" For global replace
nnoremap gR gD:%s/<C-R>///gc<left><left><left>

これをあなたの .vimrc に記述するか、そのまま実行します。 この後 gr を押すと、ローカル変数に :s コマンドを入力する必要があります。 new_variable_name を入力し 入力 .