1. ホーム
  2. vim

[解決済み] Vim - 検索レジスタにヤンクする

2023-05-02 18:04:46

質問

vim の "last search" 登録 ("/) に "yank" する簡単で素早い方法はありますか?

vim のドキュメントを見ると、答えはノーですが、"let" コマンドで割り当てることができるようです。

It is writable with ":let", you can change it to have 'hlsearch' highlight
other matches without actually searching.  You can't yank or delete into this
register.

理想的には以下のような感じです。

"/5yw

これは、カーソル & の下にある次の 5 つの単語を引っ張ってきて、最後の検索バッファに入れます。

あるいは、名前付きレジスタの内容を検索する方法があれば、それも動作するでしょう。 言い換えれば、もし私ができるのであれば。

"A5yw

と入力し、レジスターAにあるものを検索すれば、それもうまくいくでしょう。

私ができる最も近い方法は、名前の付いたレジスタ & にヤンクすることです; それから、そのレジスタを最後の検索レジスタにコピーします。

"A5yw
:let @/=@A

長い質問を長くする危険を冒して、私が "yank & search" したいのは常に 5 つの単語ではないことを述べたいと思います -- あるときは 17 文字、あるときは行末までなど...そのためハードコードされたマクロは私が望む柔軟性を与えません。

どのように解決するのですか?

を押した後 / を押して検索文字列を入力したら、次に Ctrl-R と入力し、使用したいレジスタを表す文字を入力します。

例えば

  • 最初に "Ayw を使って、単語をレジスタAに引っ張ってくる
  • では / ^R A でレジスタAの内容を検索文字列に入れます。