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


164

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


さて、私は1つの方法を見つけましたが、それは少し面倒です:: '<、'> s / old / new / g
ラビリンス

回答:


244

を使用して、最後に選択した表示領域を再選択できますgv


4
驚くばかり!@Heptite Stackoverflowと自分でこのコマンドを見つける方法は?
スカイワインダー

6
@skywinder:help gv
ヘプタイト

4
@Heptite:あなたがここで頬をかいているかどうかはわかりませんが、そのコマンドはあなたがそれについて知ったら:gvが何をするかを示します。しかし、もし私がしなかったら?(wo)manに魚などを教えます。
ベンThul

@BenThul:質問を誤解したと思います。Vimの機能の多くについては、単に「:help」で始まるドキュメントの大部分を時間をかけて読むだけでわかります。
ヘプタイト

2
:help select-visualvim @skywinder内の正しいマニュアルに導かれるはずです。

14

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


行番号を知る必要があることを入力してください。私は2つのマークを定義するのより良いと思うし、次に使用:「」bは、それらの間の範囲で動作する(または交換「バッククォートでライン内の粒度たい場合)
sillyMunky

ええ、行番号の問題は愚かでした-選択マクロを作成する方法の例として使用しました。マークの範囲を使用すると...しかし面白いアイデアです
AlexMA

6

gv最後の選択を回復するのに最適です。しかし、もう少し必要な場合があります。

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

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

ma

ビジュアルモードで、現在の選択を保存してmarkにしてaから、

<a

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


うわー、それは本当にクールに聞こえます。そのプラグインを試してみる必要があります!ところで、これらのVisualMarkは、マークの場合と同様にmkviewでも保持できますか?
ラビリンス

@labyrinthわからない mkviewが.. マークは別のファイルに保存されるので、そうだと思う。GitHubでリクエストし、try'daで処理します。
iago-lito

1

さようならをHelloに置き換えたいと思っていて、次のコードが選択されたとします。

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

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

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


1
申し訳ありませんが、それは私が尋ねていたものではありません。私が求めているのは、以前に選択したのと同じ範囲で別の検索と置換を行うために選択をどのように再利用するのですか?
ラビリンス

1
交換後、視覚モードを終了します。入力するgvと、視覚モードは前の選択状態に戻ります。
スコットグエン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.