変更した単語の次の出現箇所にジャンプ


11

次の場合:

function foo(bar) {
    return bar + 1;
}

そしてcw、最初のbarをに変更するために使用していますbazが、次の一致にジャンプして、同じ変更を行うためにbar使用.するにはどうすればよいですか?

カーソルの下に*ある現在の単語を検索するので、私は使用できません。また、愚かなことにbar、初めて検索しなかったため、機能しnません。

変更すると同じように、次に出現する単語を検索する簡単な方法はありますか?

私はしていないいずれかの他の発生があるため、検索を行うと、交換したいbarの唯一の2つのインスタンスがあった、またはので、私は変更したくないというのが私のファイルではbar、と私は忘れてしまった:%s/bar/baz/私が開始する前に、それはあまりにもです残っている唯一のインスタンスを変更するための多大な努力。


2
それはあなたが説明したワークフローに完全には従いませんが、vim-oblique*検索を改善します。特に*、カーソルを動かさずに現在の単語を視覚的に選択します。インストールしたら*ciw、古い単語を検索レジスターに入れて単語を変更できます。次にn、およびを使用できます.
statox

nを押すと、最後に検索されたパターンの次の出現に移動します。なぜそれを試しなかったのですか?
SibiCoder 2016年

...最初の出現に到達するために検索しなかったので、機能しnません。
Roger Lipscombe 2016年

回答:


13

変更しcwたばかりのテキストは名前のないレジスタにカットされているので、次のコマンドで再利用できます。

/<C-r>"<CR>

最後の変更でカバーされるテキストの次の出現にジャンプします。


4

完全なワークフローとしてromainlを拡張するには...

この種の編集を行うことに夢中になっていて、同じ編集を段落/関数に適用する必要があることに気付いた場合は、"および.レジスタを使用できます。

あなたの例では、引数の初期編集を実行できます。ビジュアルモードに入ると(すべてを正しく選択するためにVisual Lineを使用します)、検索と置換を適用します。

V]] -ビジュアルライン、段落/機能の終わりまで。

  • : -あなたはビジュアルモードにいるので、これは :'<,'>
  • s/ -検索
  • CTRL+ "-最後のヤンク/アイテムの削除(例ではバー)
  • / -そして交換
  • CTRL+ .-最後の挿入(例ではbaz)

このパターンは、使用する必要があるため、慣れるまで少し時間がかかります。ほとんどの場合、引数を含む関数全体に検索と置換を適用するだけですが、アンチパターンを実行しないことをお勧めします。正しく。」


1

以外の組み合わせを押してもかまわない場合はcw、ショートカットを定義することで、簡単に目的のものを取得できると思います。あなたができることは以下を配置することです

nmap <leader>a "1yiw:let @/=@1^Mciw

あなたの中.vimrcのファイル。 ^Mリターンキーのキャプチャではなく、文字^M。挿入モードでCtrl+ Vを押し、続いてを押すと表示されEnterます。これを定義すると、を押す<leader>aとと同じようcwに動作しますが、単語(変更前)は「最後の検索レジスタ」(つまり、/レジスタ)にあるためn、変更を加えてから戻ったときにを押します。通常モードにすると、次の発生に移動します。同様に、を押すNと前の発生に戻ります。

ショートカット もちろん、とは異なるショートカットを選択できますが、<leader>aこれは非常にアクセスしやすいショートカットであることがわかりました。個人的に私は設定している<leader>,私はちょうどプレスに必要となるよう,に続いてa、私はアメリカのキーボードを使用していないので、これは私がそのようにということ、である\(私は信じてやや離れて隠されている\デフォルトです<leader>)。

説明 アイデアは本当にシンプルです。カーソルの下の単語を検索レジスタにヤンクしてから/実行しますcw。したがってnmap <leader>a "/yciw、私が目指していたものでしたが、残念ながら、検索レジスタにヤンクできないと思います。そのため、回避策は、カーソルの下の単語をレジスタにヤンクしてから、1レジスタをそれに/等しく設定してから実行しますcw。だから、"1yiwレジスタへのカーソルの下の内側の単語をヤンク部分があります1。内面の言葉がわからない場合は、チェックしてください:help iw。その後、の:let @/=@1キャプチャが続きEnter1レジスタの内容をに書き込み/ます。この時点nNカーソルの下の単語の次および前の出現として機能し、a ciwが実行されて、カーソルの下の単語が削除され、Vimが挿入モードになります。

単語と内面の単語カーソルのポイントからだけでなく、カーソルの下に単語全体 が必要だと思いました。これが私iwwどこでも使用した理由です。これが当てはまらない場合は、

nmap <leader>a "1yw:let @/=@1^Mcw

代わりに。カーソルが単語の最初の文字の上にある場合、違いはありません。

免責事項 あなたが上のカーソルスタンドを持つことにより、例えば、文字からスタッフ異なるが含まれている何かにそれを使用しようとすると、このソリューションは、おそらくうまく動作しません\または交換によりiwによりiWibisまたはipか何か(私はあなたがなぜ分からないのに全文でこの機能が欲しい)

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