多くの場合、コードを編集するときは、ビジュアルモードでブロックを選択し、ブロックを検索して置換します。ただし、変更を加えた後、ビジュアルモードが終了します。同じ選択範囲で新しい検索と置換をどのように行いますか?
gv
を使用すると、最後に選択した視覚領域を再選択できます。
gv
は間違いなく最速の方法(最後の選択を使用)ですが、安定した保存済み選択領域(または複数)が必要な場合は、いつでもマクロを作成できます。
25行目から35行目までの現在のメソッドの選択を保存したいとしましょう。入力してメソッド全体を選択するマクロを作成できます
q //start recording
a //use register a
25G //Go to line 25
V //visual-line mode
35G //Go to line 35
q // stop recording
次に、@a
(レジスタaでマクロを実行)を入力して、その選択を取り戻すことができます。必要に応じて、レジスタ、ライン、またはラインのセクションを繰り返します。ファイルに変更を加えると、選択範囲も変わる可能性があるため、「ハードコーディング」された行番号の代わりにマークを使用することを検討してください。
gv
は、最後の選択を復元するのに最適です。しかし、もう少し必要になることもあります。
より永続的なレコードが必要な場合は、こちらをご覧ください このプラグイン 現在GitHubで作業中です。
VisualMarksを使用すると、ファイル内の特定の場所をm
で保存およびマークするのと同じように、視覚的に選択された領域を保存および復元できます。インストール後、デフォルトのオプションで、以下を使用します。
ma
ビジュアルモードで現在の選択を保存してa
をマークし、次に
<a
通常モードでは、この選択に戻ります。
さようならをこんにちはに置き換えたいと思い、以下のコードが選択されたとしましょう:
public static void main(String[] args){
System.out.println("Goodbye World");
}
:s/Goodbye/Hello/
と入力すると、vimはGoodbye
のすべてのインスタンスをHello
に置き換えます
これは単にvimの正規表現とビジュアルモードの選択を組み合わせたものです。選択すると、自動入力されます'<,'>
Vimは最後の選択を記憶しています。
ビジュアルモードで:と入力すると、: '<、'>が自動入力されるため、コマンドを続けて入力できます。
:'<,'>s/old/new/ # (Replace pattern in selected area)
同じビジュアル選択で別のコマンドを実行したい場合は、単に履歴から古いコマンドを呼び出して編集できます。
:'<,>'s/abc/xyz/ # (This will run the replace command on the same selection area)
Replaceコマンドと、以前の選択を使用するために一致パターンをサポートする他のコマンドを通知する別の方法は、パターンに\%Vを追加することです。
:s/\%Vabc/xyz/ # (Same as above)
詳細については、:help \%Vを参照してください。
以前の選択を再選択するには、gvを使用します。