Di Vim, apakah ada cara untuk menempelkan teks di baris pencarian?

105

Saya ingin mencari $maximumTotalAllowedAfterFinishdan menggantinya dengan $minimumTotalAllowedAfterFinish. Daripada mengetik teks panjang:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Apakah ada cara untuk MENYALIN nama variabel panjang ini ke dalam baris pencarian, karena pada baris perintah saya tidak dapat mengetik " p" untuk menempel?

Edward Tanguay
sumber
2
Saya rasa tou juga harus melarikan diri terlebih dahulu $karena karakter ini berarti akhir baris.
Luc M
1
@LucM OP juga dapat digunakan \Vdi mana saja dalam pola pencarian untuk menonaktifkan karakter "ajaib".
dash-tom-bang

Jawaban:

128

Anda dapat memasukkan konten register bernomor atau bernama dengan mengetik CTRLR {0-9a-z"%#:-=.}. Dengan mengetik, CTRL-R CTRL-WAnda dapat menempelkan kata saat ini di bawah kursor. Lihat:

:he cmdline-editing

untuk informasi lebih lanjut.

WMR
sumber
8
terima kasih atas jawabannya, yang paling umum bagi saya adalah: CTRL+ R +(seperti yang berlaku untuk konten clipboard)
Peter Butkovic
4
The 0register terdiri terakhir-menyentakkan tali.
Evgeni Sergeev
52

Salin seperti biasa, lalu lakukan CtrlR"paste. Ada banyak CtrlRpintasan lain (mis., Kalkulator, nama file saat ini, konten clipboard). Ketik :help c_<C-R>untuk melihat daftar lengkapnya.

Ned
sumber
16

Salin:
1) v(atau sorot dengan mouse, dalam mode visual)
2) y(yank)

Tempel:
1) /(mode pencarian)
2) Ctrl + R + 0(tempel dari daftar yanked)

Jason
sumber
1
Saya mencari jawaban ini ketika saya mencari pertanyaan ini di google, saya bertanya-tanya mengapa ini memiliki suara negatif.
santiago arizti
15

Ketik q:untuk masuk ke mode pengeditan riwayat di buffer baru. Kemudian edit baris terakhir buffer dan tekan Enteruntuk menjalankannya.

Johannes Hoff
sumber
3
Jadi untuk itulah buffer itu! Terima kasih (Saya selalu kebetulan tersandung saat mengetik: q dan bingung)
gsk
3
q/juga berguna untuk mengakses riwayat pencarian dan menempelkan pencarian baru.
79E09796
3

Atau buat perintah dalam buffer vim, misalnya ketikkan di buffer:

s/foo/bar/gci

Dan salin ke register bernama, dengan "ayy(jika kursor ada di baris itu!).

Sekarang Anda dapat mengeksekusi isi aregister " " dari baris perintah Ex Vim dengan:

:[OPTIONAL_RANGE]@a

Saya menggunakannya sepanjang waktu.

Zsolt Botykai
sumber
"ayy" Anda entah dikutip (dan karena itu salah) atau tidak (dan oleh karena itu ada "yang salah" di bagian akhir)
tzot
2

Biasanya, Anda akan melakukannya dengan memilih mouse (mungkin CtrlInsatau CtrlCsetelah memilih) dan kemudian, saat berada di baris perintah / pencarian, klik tengah (atau ShiftInsatau CtrlV).

Cara lain, adalah menulis baris perintah / pencarian Anda di buffer teks dengan semua pengeditan tersedia di buffer teks, dimulai dengan :dan semua, kemudian, pada baris tersebut, lakukan:

"add@a

yang akan menyimpan seluruh baris perintah dalam buffer a, dan kemudian menjalankannya. Itu tidak akan disimpan dalam riwayat perintah.

Coba buat baris berikut di buffer teks sebagai contoh untuk penekanan tombol di atas:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Terakhir, Anda dapat masuk q:untuk memasuki pengeditan riwayat dalam buffer teks.

tzot.dll
sumber
1

Anda dapat menempatkan kursor pada kata yang ingin Anda tambahkan ke pola, lalu tekan /atau :untuk masuk ke mode pencarian atau perintah, lalu tekan CtrlRCtrlWuntuk menyalin kata. Sumber

regressor yang dikuatkan
sumber