web-dev-qa-db-ja.com

ビジュアルモードの選択をどのように再利用しますか?

多くの場合、コードを編集するときは、ビジュアルモードでブロックを選択し、ブロックを検索して置換します。ただし、変更を加えた後、ビジュアルモードが終了します。同じ選択範囲で新しい検索と置換をどのように行いますか?

171
labyrinth

gvを使用すると、最後に選択した視覚領域を再選択できます。

255
Heptite

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でマクロを実行)を入力して、その選択を取り戻すことができます。必要に応じて、レジスタ、ライン、またはラインのセクションを繰り返します。ファイルに変更を加えると、選択範囲も変わる可能性があるため、「ハードコーディング」された行番号の代わりにマークを使用することを検討してください。

15
AlexMA

gvは、最後の選択を復元するのに最適です。しかし、もう少し必要になることもあります。

より永続的なレコードが必要な場合は、こちらをご覧ください このプラグイン 現在GitHubで作業中です。

VisualMarksを使用すると、ファイル内の特定の場所をmで保存およびマークするのと同じように、視覚的に選択された領域を保存および復元できます。インストール後、デフォルトのオプションで、以下を使用します。

ma

ビジュアルモードで現在の選択を保存してaをマークし、次に

<a

通常モードでは、この選択に戻ります。

6
iago-lito

さようならをこんにちはに置き換えたいと思い、以下のコードが選択されたとしましょう:

public static void main(String[] args){
    System.out.println("Goodbye World");
}

:s/Goodbye/Hello/と入力すると、vimはGoodbyeのすべてのインスタンスをHelloに置き換えます

これは単にvimの正規表現とビジュアルモードの選択を組み合わせたものです。選択すると、自動入力されます'<,'>

1
Scott Nguyen

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を使用します。

0
Denis Khoroshev