Cari pilihan di vim

107

Saya menggunakan plugin vim dan vim untuk studio visual saat menulis C ++. Seringkali, saya menemukan diri saya ingin mencari string dalam suatu fungsi, misalnya setiap panggilan ke object->public_member.memberfunc().

Saya tahu vim menawarkan cara mudah untuk mencari satu kata, dengan menekan *dan #, dan itu juga dapat mencari string yang diketik menggunakan /perintah slash di mana-mana . Saat mencoba mencari semua contoh string yang lebih panjang seperti yang di atas, perlu beberapa saat untuk mengetik ulang setelahnya /.

Apakah ada cara untuk mencari pilihan? Misalnya, sorot dengan v, lalu salin dengan y, apakah ada cara untuk menempelkan setelahnya /? Apakah ada jalan pintas yang lebih mudah?

Marcin
sumber
Kemungkinan duplikat dari Bagaimana cara mencari teks yang dipilih?
acm

Jawaban:

154

Periksa tip Vim ini: Cari teks yang dipilih secara visual

Atau Anda cukup menarik teks yang dipilih dengan y dan masuk ke mode pencarian / , lalu Anda dapat menempelkan teks yang terakhir ditarik dengan Ctrl + R 0

CMS
sumber
4
@Tokopedia Terima kasih. Tip bagus! Menggunakan: reg untuk melihat apa yang ada di register Anda dan kemudian menggunakan cntl-R N untuk mendapatkan apa yang ada di register N sangat bagus!
Rob Wells
85

Menjawab

  1. Tarik teks yang ingin Anda cari
  2. q/p
  3. Enter

Penjelasan

q/bekerja mirip dengan pencarian vanilla /kecuali Anda dalam mode perintah jadi psebenarnya "paste" daripada mengetik karakter p. Jadi di atas akan menyalin teks yang Anda cari dan menempelkannya ke dalam pencarian.

Untuk tipe lebih detail :help q/

Cory Klein
sumber
4
Saya suka yang ini, karena menurut saya mengetik <ctrl-r> sangat tidak nyaman.
Jan
Luar biasa! Menggunakan emacs in evil-mode, ini benar-benar berfungsi, sedangkan jawaban yang diterima rusak parah (mungkin karena penggunaan Ctrlkunci).
eestrada
2
Bagus untuk string sederhana, tetapi tidak luput dari karakter khusus regex, seperti yang disebutkan dalam komentar jawaban lain ini .
Bluu
1
Dan Anda bahkan tidak perlu menariknya. Pilih di visual, di q/gvpmana gvsingkatan dari pemilihan visual terakhir ...
1
@nwildner, q/gvptidak bekerja untuk saya. Bisakah Anda menjelaskan saran Anda?
bam
38

Gunakan q / bukan hanya / . (Sama dengan q : ). Sekarang Anda dapat mengedit VIM melalui perintah dan riwayat pencarian Anda! (Coba Ctrl-N dan Ctrl-P kapan-kapan).


sumber
10

Saya baru saja mengetahui (melalui buku bagus Practical Vim ) bahwa ada plugin untuk itu. Anda dapat menemukan plugin tersebut di GitHub .

Plugin memungkinkan Anda mencari pilihan visual dengan *dan #.

mesin potong
sumber
5
Perhatikan bahwa jawaban lain tidak melakukan pelarian apa pun. Dengan menggunakan metode tersebut, setiap karakter meta yang dipilih tidak akan dicari secara harfiah, tergantung pada magicpengaturan saat ini . Ini bahkan bisa membuat pencarian gagal untuk karakter meta yang membutuhkan keseimbangan. Plugin yang disebutkan di sini akan melakukan pelolosan sebelum mencari teks yang dipilih.
Kurt Hutchinson
1
itu berfungsi, tetapi sayangnya, Anda tidak dapat menggunakan nuntuk pergi ke item yang ditemukan berikutnya, sementara pendekatan Cory dan CMS memungkinkan ..
Ayrat
2

Anda sebenarnya dapat memilih teks secara visual dan menekan * dan # untuk mencari kejadian berikutnya ... Ini akan berfungsi sama, satu-satunya peringatan adalah:

Spasi kosong dalam pilihan cocok dengan spasi kosong mana pun, saat menelusuri (menelusuri "hello world" juga akan menemukan "hello" di akhir baris, dengan "world" di awal baris berikutnya).

http://vim.wikia.com/wiki/Search_for_visually_selected_text

AhHatem
sumber
2
bagi saya, memilih teks secara visual lalu menekan * hanya memperluas pilihan visual saya.
martin jakubik
Anda tidak dapat secara default kecuali Anda memasukkan ke vimrc pemetaan dari halaman ..
Ayrat