通常モードで単語をヤンクされた単語に置き換える方法


25

単語を以前にヤンクした別の単語に置き換える必要があるとき、私は通常、私にとって不自然なワークフローを使用します。

このテキストがあるとしましょう:

foo bar buzz

そして、私はヤンクfooしてbar、以前にヤンクしたものに置き換えたいと思います。

ヤンクした後foo、次のオプションが表示されます。

オプション1

  1. カーソルを合わせbar持ちますw

  2. 入れfoo目の前にbarしてP

  3. b残りのにカーソルを合わせてbar、単語を削除しますde

オプション2

  1. カーソルをバーに置く w

  2. de消去に使用bar

  3. レジスタ0の内容を入れて"0P(私は消去するのでbarfooシンプルにもうアクセスできませんp

どちらの方法も私には複雑すぎるようで、このアクションを達成するためのより効率的な方法があると確信していますが、その方法を見つけることはできません。このアイデアは、deleteアクションとputアクションを1つだけにまとめるか、少なくとも削除した単語をyankレジスタに保持することを避けて、必要な単語をsimpleで挿入できるようにすることpです。

また、私はトリガーされRた置換モードを知っていますが、ヤンクされたものを置くことはできません。

TL; DR:単語をヤンクレジスタの内容に置き換える方法は?

回答:


31

既にヤンクfooyeたり、似たようなものがあり、カーソルがどこかにあると仮定するとfoo、次を使用できますWvep

  • W移動しますbar(これは明らかにオプションで、現在のカーソル位置に依存します)。
  • v ビジュアルモードを開始します。
  • e単語の最後に移動します(ここで他のモーションを使用することもできますiw)。
  • p貼り付けますfoo。これは、現在の視覚的な選択(名前のないレジスタに置かれます)を置き換え""ます。


6

別の方法を見つけました。オプション2と少し似ていますが、レジスタの状態を乱さないという利点があります。

考えは「ブラックホールレジスタ」を使用することです:このレジスタは経由"_でアクセスでき、書き込みはできるが読み取りはできないという特殊性があります。ここでは、削除後もヤンクレジスタにとどまるように使用できます。foobar

このソリューションでは、ヤンク後のワーフローfooは次のようになります。

  • 行くbarW(またはコースのいずれかの必要な単語)
  • 「ブラックホールレジスタ」を使用barして削除する"_de
  • fooヤンクレジスタから入れPます。ブラックホールに入ったfooため、ヤンクレジスタにはまだ含まれていますbar

@Carpersmokerのソリューション(vimgolf @Carpetsmokerが勝つという点)よりも良い解決策かどうかはわかりませんが、ブラックホールレジスタについては知りませんでした。


3
  1. 「foo」の先頭に移動します。を押しyiwます。それは内なる言葉を引き抜く。

  2. 文字を押して「バー」に移動しますw。それを選択して、ヤンクバックします:viw"0p

I使用ciwしてyiwたくさん。


4
のようなテキストオブジェクトの使用iwは興味深いですが、実際のソリューションは@CarpetSmokerのソリューションと同じです。2番目の単語を視覚的に選択して最初の単語を入力します。また、レジスタpを使用するのではなく、シンプルでソリューションが機能すると思います"0
statox

1
  • カーソルが単語のどこかにあると、

    • yiw-単語をヤンクし、0レジスタに保存します。
  • 置換するターゲット単語に移動します

    • ciw 単語を削除して挿入モードにします。
    • ctrl-r。Aが"呼び出されるレジスタを尋ねるポップアップ表示されます。
    • 0 ヤンクした単語を貼り付けます。

ヤンクされた単語は(通常!)0レジスタに保存されます。参照:registersして、保存されたバッファを表示します。これは長い手順のように思えるかもしれませんが、私見では、はるかに洗練されたレジスタートリックへの扉を開きます。

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