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?


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


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/


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).


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 #.


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.