7

挿入を使用すると、単語/セクションを消去して、その上に挿入するのは非常に簡単です。

  • cw単語の最後まで (スペースを使用して) 削除し、挿入モードに移動します
  • ce単語の終わりまで (スペースなしで) 削除してから、挿入モードに移動します
  • c3w次の 3 単語 (スペースを含む) の終わりまで削除してから、挿入モードに移動します
  • ct.生理前まで削除してから挿入モードへ
  • c$行末まで削除してから挿入モードに入る

貼り付け操作でこれを行うにはどうすればよいですか? 多くの場合、私はそのような行を持っています

var name = "John Smith"
var name = "Jane Smith"

そして、私はそれをに変更します

var name = "John Lee"
var name = "Jane Smith"

ywそして、( ) "Lee" をヤンクしますが、 dw"Smith" を "Jane Smith" から ( ) 削除すると、レジスターに貼り付けられる "Lee" がなくなります。名前付きレジスタを使用できることはわかっています。また、ビジュアルモードも使えると思います。ただし、これは非常に一般的なタスクであるため、貼り付けコマンドで移動演算子 ( ewt/ Tf/ F、 ) を使用して$0何を貼り付けるかを指定する方法があると考えました。

4

4 に答える 4

14

ビジュアルモードがいいと思います。vorを使用してビジュアル モードを有効にするだけですV(一度に行全体を上書きする場合)。通常の方法で移動演算子を使用して、置換する領域を選択し、貼り付けます。すでに知っていることを利用します。

Vp現在の行を上書きします。vwp現在の単語を上書きします。

代替案の概要については、Vim Wikiaを参照してください。

于 2012-03-06T03:09:20.290 に答える
10

そうそう、欲しいのは超便利な (皮肉な) ブラックホール レジスタです。ビジュアル モードで、交換したい部分を選択し、必要な動き ( などvw) を使用して、"_xP.

ブラック ホール レジスタ_は に似た特殊なレジスタ/dev/nullです。この操作により"、置き換えようとしているテキストの宛先レジスタが設定されるため、"_不要な「Smith」が確実にブラックホール レジスタに到達します。したがって、「Lee」は"レジスターに保存されます。これを何度も続けて行う場合は、マクロを使用することをお勧めします。

于 2012-03-06T03:09:07.943 に答える
4
I no longer have "Lee" in the register to paste back.

実際にLeeは、でreg:0、貼り付けるには少なくとも2つの方法があります。

方法1

  • カーソルをLeeに移動します。yw
  • カーソルをSmithに移動します。dw
  • "0P

方法2

  • カーソルをLeeに移動します。yw
  • カーソルをSmithに移動します。cw
  • Ctrl-R+0
于 2012-03-06T03:13:18.137 に答える
0

あなたはいつでもカスタムマッピングを作ることができます、私は以下を持っています:

nnoremap ,pw viw"0p

inner word (iw)最後にヤンクされたテキストの上に貼り付けます。0レジスタを使用しているので、ヤンクされたテキストを失うことなく、何度でも貼り付けることができます。残念ながら、他のマッピングを作成する必要があります。貼り付けるためのマッピングが好きですinside quoteinside bracketsそしてinside parentheses

nnoremap ,pi" vi""0p
nnoremap ,pi] vi]"0p
nnoremap ,pi) vi)"0p
于 2012-03-06T21:33:46.767 に答える