Dalam vim, saya sering melakukan pencarian untuk melompat ke kata atau frasa alih-alih menavigasi ke sana h/j/k/l
. Lalu aku memukul n
untuk melompat di antara kejadian.
Katakanlah saya punya teks ini:
Time flies like an arrow; fruit flies like a banana. - Groucho Marx
Saya mengetik /an arrow
dan menekan enter. Ungkapan itu disorot, dan saya langsung menggunakannya n
.
Sekarang saya ingin memilih teks itu secara visual , mungkin untuk mengubahnya atau menghapusnya. (Ya, saya mengetahui :s
perintah substitusi.)
Karena kursor saya berada di huruf "a" di awal "panah," saya bisa menekan v
, lalu tekan e
beberapa kali untuk menyorot seluruh frasa. Tapi saya punya perasaan ada cara yang lebih pendek dan lebih semantik. Lagi pula, saya sudah menentukan teks yang saya minati.
Bagaimana saya bisa membuat perintah untuk mengatakan "pilih secara visual pilihan pencarian saat ini?"
gn
lakukan persis seperti yang diminta. Menyerahkannya sebagai jawaban terpisah menekankan bahwa itu adalah pengganti yang lengkap untukv//e
. Saya baru saja mengedit jawaban saya untuk menambahkan dokumentasi, apakah itu lebih baik?Coba ini:
Ini masuk ke mode visual, mengulangi pencarian terakhir dan memilih sampai akhir.
sumber
gn
melakukan ini juga (tanpa mengubah apan
artinya)Saya menemukan bahwa
v//e
itu sendiri tidak cukup karena setelah Anda keluar dari mode visual, melompat ke hasil pencarian berikutnya / sebelumnya menempatkan kursor di akhir hasil, bukan pada awalnya seperti yang Anda harapkan.Untuk mengatasinya, pertama-tama kita harus melompat ke akhir hasil pencarian (
//e
) dan kemudian memilih secara visual ke awal (v??
):Tepuk tangan.
sumber
nnoremap g? ??b<cr>v//e<cr>
(melakukan hal yang sama tetapi mencari mundur alih-alih ke depan)Sekarang ada plugin Vim-Search-Objects yang membuat Vim memperlakukan pertandingan pencarian sebagai objek teks biasa, sehingga Anda dapat dengan mudah
va/
(memilih visual yang cocok) setelah Anda melakukan pencarian.sumber
Cara "dumbber" untuk melakukannya adalah memetakan kunci (dalam hal ini F5) seperti di bawah ini:
Setelah
/an arrow
menekan F5.sumber
+1
. Hapus itu dan hanya akan memilih bagian yang dicari. Di sisi lain,nnoremap <F5> v//e<CR>
tampaknya berfungsi dengan baik.x
atauc
setelah melakukanF5
tetapi tanpa+1
seluruh string pencarian, termasuk karakter di bawah kursor, dihapus.