1

Vimでは、スタック オーバーフローの質問の回答のIように、コマンドを使用して一度に複数行にテキストを挿入することができます. ただし、これは実際の挿入に対してのみ機能します。同時にいくつかの文字を削除したい場合、これは機能しません。

例えば、変えたい

000 one
000 two
000 three
000 four

111 one
111 two
111 three
000 four

^V3ggllxこれを行うには、最初の 3 行から 000 を削除してから、同じ位置に 111 を挿入するように呼び出しますが^V3ggI111^[、これは非常に厄介に思えます。(上記は、ビジュアル ブロック モードに移行し、最初の 3 行のすべてのゼロをマークしてそれらを削除することを意味します。次に、再びビジュアル ブロック モードに移行し、最初の 3 行の開始をマークし、複数行の挿入モードに移行し、 111 で終了しEscます。)

これを行うためのより良い方法があるはずです。最も厄介なことは、ゼロを削除した後に領域を再度選択する必要があることです。削除後も領域が選択されていれば問題ありません。また、複数挿入モードで文字を削除することが可能であれば、それも問題ありません。しかし、これを試してみると、最初の行だけが変更されます。

4

3 に答える 3

5

再選択は簡単かつ迅速gvです。その後、 を使用I111^[して新しいテキストを挿入できます。しかし、@melpomene の回答が示すように、これは実際には必要ありません。

(しかし、この新しい知識を他の状況に適用できるように、言及したいと思いました。)

于 2013-01-21T15:00:13.940 に答える
2

または、同じ文字に置き換えているためr、選択後に使用できます。

^V2jer1

これには、挿入モードを完全に回避できるという利点があります。

ちなみに、3Gと同じことを実現し3ggます。

于 2013-01-21T15:01:47.340 に答える
1

s の列を選択したら0、それらを s に置き換える1のは簡単r1です:

<C-v>2jer111

(しかし、ニキータはすでにこれを投稿しました…ああ、マルチタスク…)

実際のユースケースの複雑さに応じて、代替が実行可能な代替手段になる場合があります。

V2j:s/^000/111<CR>

私たちはそれに取り組んでいるので、 と を使用する:normal<C-a>、この特定の状況であなたを助けることができます:

V2j:norm 111<C-a>
于 2013-01-21T15:53:10.073 に答える