vimで変数名をリファクタリングする最良の方法は何ですか?


8

ソースファイル全体で変数の出現箇所を検索して置換する方法が1つあることは知っています。

しかし、ある場所で変数の名前を変更した場合、検索や置換または置換を行わずに、他の場所でも変数の名前が変更されるより良い方法はありますか?


答えは言語によって異なります。一部のコードベースでは、状況に正確に一致する正規表現を作成することが実際的です。
aebabis 2016年

回答:


13

通常のワークフローsearchを使用して、次のことができますreplace

/original
cwreplaced
n.n.

gnモーションを利用することもできます:

/original<CR>
cgnreplaced<ESC>
.....

cgnextに一致したパターンをcぶら下げnます。そのため、n.n.to を使用する代わりにgo to nextrepeatあなたは..どちらが意味するかを知ることができますreplace next

gn「次の出現箇所を検索し、その上で視覚的な選択を開始する」ことを意味します。詳細については、次のドキュメントをご覧ください:h gn


gnモーションについて説明していただけますか?私はvimにかなり慣れていません。
WitVault 2016年

3
常に最初にVimに尋ねます:help gn
romainl 2016年

@ nobe4:答えを改善できます。:)ユーザーは、$ first_variableではなく、すべての$ firstを$ secondに置き換えたい場合があります。\ <パターン\>を使用できますか?または、より良い方法を提案してください!
SibiCoder 2016年

6

代用できます:

:%s/original/replaced/g

ウィルsファイル全体(全体にubstitute %originalreplaced。そして、同じ行にある複数のオカレンスを置き換えますg

自動的に置き換えることに自信がない場合は、cフラグを追加して、毎回確認を求めることができます。


私は盲目的に検索と置換をしたくありません。
WitVault 2016年

3
次に、cフラグは進むべき道です。
nobe4 2016年

2

別のオプションを追加したいのですが。

あなたがすることができ/original、それから行う:%s//replacement。(/c確認が必要な場合は最後に使用してください)。

さらに3つのキーを押すことになりますが、これは、%s/original/replacement検索が正しいことの視覚的な手掛かりを提供するというだけの理由で行うよりも有利です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.