Vimで、検索行にテキストを貼り付ける方法はありますか?


105

検索し$maximumTotalAllowedAfterFinishてに置き換えたいです$minimumTotalAllowedAfterFinish。長いテキストを入力する代わりに:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

コマンドラインで「p」を入力して貼り付けることができないため、これらの長い変数名を検索ラインにコピーする方法はありますか?


2
$この文字は行末を意味するので、touも最初から脱出する必要があると思います。
Luc M

1
@LucM OPは\V、検索パターンの任意の場所を使用して、「マジック」文字を無効にすることもできます。
ダッシュトムバン

回答:


128

と入力して、番号付きまたは名前付きレジスタの内容を挿入できますCTRLR {0-9a-z"%#:-=.}。入力CTRL-R CTRL-Wすると、カーソルの下に現在の単語を貼り付けることができます。見る:

:he cmdline-editing

詳細については。


8
答えてくれてありがとう、私のための最も一般的なものがある:CTRL+ R +(それはクリップボードの内容のために行くように)
ピーターButkovic

4
0レジスタは、最後にヤンク文字列が含まれています。
Evgeni Sergeev 2017年

52

通常どおりコピーしてCtrlR"から貼り付けてください。他にもたくさんのCtrlRショートカットがあります(電卓、現在のファイル名、クリップボードの内容など)。入力:help c_<C-R>して完全なリストを表示します。


15

q:新しいバッファで履歴編集モードに入るにはタイプしてください。次に、バッファの最後の行を編集し、を押しEnterて実行します。


3
それが、そのバッファの目的でした!おかげで(私はいつも:qを入力して混乱しました)
gsk

3
q/検索履歴にアクセスして新しい検索を貼り付ける場合にも便利です。
79E09796 2015年

15

コピー:
1)v(またはビジュアルモードでマウスでハイライト)
2)y(ヤンク)

貼り付け:
1)/(検索モード)
2)Ctrl + R + 0(ヤンクレジスタから貼り付け)


1
私がグーグルでこの質問を検索したときに私はこの答えを探していました、なぜこれが反対票を持っているのかと思います。
サンティアゴアリスティ2017年

3

または、vimバッファにコマンドを作成します。たとえば、バッファに入力します。

s/foo/bar/gci

そして、"ayy(カーソルがその行にある場合は!)という名前のレジスタにコピーします。

これで、aVimのExコマンドラインから" "レジスタの内容を実行できます。

:[OPTIONAL_RANGE]@a

いつも使っています。


あなたの "ayy"は引用符で囲まれている(したがって正しくない)か、引用符で囲まれていない(したがって最後に誤った "がある")
tzot

2

通常は、マウスで(おそらく、CtrlInsまたはCtrlC選択後に)選択し、コマンド/検索行で中クリック(またはShiftInsまたはCtrlV)します。

別の方法として、コマンド/検索行をテキストバッファーに書き込み、テキストバッファーですべての編集を利用できるようにします:

"add@a

これは、コマンドライン全体をbuffer aに保存してから実行します。ただし、コマンド履歴には保存されません。

上記のキーを押す例として、テキストバッファーに次の行を作成してみてください。

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

最後q:に、テキストバッファに履歴の編集を入力することができます。


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