Vim:ビジュアルモードでテキストのブロックを選択する高速な方法


189

私はかなり長い間vimを使用しており、ビジュアルモードでテキストのブロックを選択するのはSHIFT+ Vと同じくらい簡単で、矢印キーを行ごとに上下に移動して、テキストブロックの最後に到達するまで気づいています選択したい。

私の質問は-ビジュアルモードでテキストのブロックを選択するためのより高速な方法はありますか(たとえば、SHIFT+のV後に選択を停止する行番号を指定するなど)?(:35たとえば、35は私が選択したい行番号です-これは明らかに機能しないので、私の質問はこれに似たことができるかどうかを見つけることです...)


3
+1このようなことを頻繁に行っていることに気付いたので、良い質問です。おそらく、これが、v%または、v/patternまたは何か他のものを使用し始めた場所ではないのかと思います。
user786653 '09 / 09/13

9
vip内部の段落を選択vis内部の文を選択。
SergioAraujo 2011

27
V35G視覚的に、また、ライン35に、現在の行から選択するV10jか、V10k視覚的に次または前の10行を選択する
ステファン

1
@Stephan、それは私が探していたものです。ありがとう!!
悲鳴

行を選択するには、ショートカットを使用しますnnoremap <Space> V。ビジュアルラインモードでは、マウスで右クリックして選択を定義します(少なくともLinuxではそうです)。とにかく、キーボードのみの場合よりも効果的です。
ミハイルV

回答:


211

他の人が言ったことに加えて、パターン検索を使用して選択範囲を広げることもできます。

たとえばv/foo、現在の位置から「foo」の次のインスタンスまでを選択します。たとえば、35行目で実際に「foo」の次のインスタンスに展開したい場合は、を押しnて選択範囲を次のインスタンスに展開します。

更新

私は頻繁にそれをしませんが、一部の人々は視覚的な選択をするためにマークを広範囲に使用しています。私は5行目だと私はライン35を選択したい場合たとえば、私が押してありますma場所マークにa、その後、5行目の:3535行に移動するにはShift+ vビジュアルモード行指向入るように、そして最終的には`aマークに戻って選択するにはa


21
パターンを含める必要がある場合は、使用できますv/foo/ee一致したパターンの「終了」の略です。
Peter Rincker、2011

6
そして、あなたはオフセットでその行から修正することができます:V / foo / + 5またはV / foo / -5(私は筆者のように行ごとのビジュアルモードを使用しています)。
bheeshmar 2011

検索に一致するテキストの範囲を選択したい場合はどうしますか。すなわち:あなたの検索用語を(単語全体で)見つけて選択しますか?
Daniel Park

5
@DanielPark現在の単語を選択するには、を使用しますv i w。現在隣接している空白以外の文字を選択する場合は、v i Shift+を使用しますw。違いは、キャレットがここにあるMyCla|ss.Method場合で、最初のコンボが選択しMyClass、2番目が全体を選択します。
ジェイ

1
ありがとう。を使用v i w sすると、「置換」操作を効果的に実行できることがわかりました。
Daniel Park

113
G                       Goto line [count], default last line, on the first
                        non-blank character linewise.  If 'startofline' not
                        set, keep the same column.
                        G is a one of jump-motions.

V35Gはあなたが望むものを実現します


89

Vimは言語です。Vimを本当に理解するには、言語を知っている必要があります。多くのコマンドは動詞であり、vimにもオブジェクトと前置詞があります。

V100G
V100gg

これは、「100行目までの現在の行を選択する」ことを意味します。

テキストオブジェクトは、強力な機能を備えています。彼らは前置詞を持つより多くのオブジェクトを紹介します。

Vap

これは、「現在の段落の周囲を選択する」ことを意味します。つまり、現在の段落とそれに続く空白行を選択します。

V2ap

これは、「現在の段落と次の段落の周囲を選択する」ことを意味します。

}V-2ap

これは、「現在の段落の最後に移動してから、視覚的にそれと前の段落を選択する」ことを意味します。

Vimを言語として理解することは、Vimを最大限に活用するのに役立ちます。

下を選択した後、他のコマンドと組み合わせることができます:

Vapd

上記のコマンドを使用すると、段落の周りを選択して削除できます。をに変更しdyコピーするか、cに変更して変更するか、に変更しpて貼り付けます。

これらのすべてのコマンドがどのように連動するかを理解したら、最終的には視覚的に何も選択する必要がなくなります。視覚的に段落を選択してから削除する代わりに、dapコマンドを使用して段落を削除できます。


} V-2ap -2の使用は本当に賢いです。
アンベアイーッシュ

40

v35G カーソルから35行目までをすべて選択します。

v選択モードにし、行き35たい行番号を指定しますG

v}次の段落の始めまですべてを選択するのに使うこともできます。



9

Shift+V n j または Shift+V n k

これにより、現在の行と次/前のn行が選択されます。とても重宝しています。


これは私が探していた簡単な方法です。ありがとう
Arsal 2017

6

v 35 j

30文字以上のテキストが追加されました


6

v%

ブロック全体が選択されます。

また遊ぶ:

v}vpvs、など

ヘルプを参照してください:

:help text-objects

文字、単語、文、段落、ブロックなどを選択するさまざまな方法を示します。



4

を押しvi}て、{}現在カーソルが置かれている括弧で囲まれたブロックを選択できます。

そのブロックのどこにいるかは関係ありません(最も外側のブロックにいることを確認してください)。また{)またはのようなペアを持つものに変更できます]


3

常に前の番号を使用してアクションを繰り返すことができます:

  • ビジュアルモードで入力する35と、カーソルが35回下に移動し、次の35行を選択します
  • 通常モード:
    • 35行削除 35dd
    • 35回貼り付け 35p
    • 35個の変更を元に戻す 35u

2

押すだけ Shift v line number gg

例:現在の行から41行目まで Shift v 41 gg


1

}は、カーソルを次の段落に移動することを意味します。したがって、を使用v}して段落全体を選択します。


0

ビジュアルですべてを選択する場合:Escを入力して、通常モードであることを確認します

:0 

Enterキーを押して、ファイルの先頭に移動します

vG

gg通常モードで使用して、最初の行に移動することもできます。
huangzonghao 2018

0

知っておくと便利です。

たとえば、使用のように同じ行数を選択する1v には1v、ブロックワイズまたはラインワイズで使用できるようにいくつかの変更を行う必要があります。

今日私はここからこの素晴らしいヒントを見まし

 :5mark < | 10mark > | normal gvV
 :5mark < | 10mark > | normal gv

ビジュアルブロックの境界をリセットすることもできます。

m< .......... sets the visual mode start point
m> .......... sets the visual mode end point

0

私はこれをインデントモードの折り畳みで使用します:

v ブロックの任意の場所でビジュアルモードを開く

zaza それを2度飲みすぎる

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