Ketika saya mengedit dokumen LaTeX di vim, sering kali saya ingin mencari frasa. Karena saya memiliki pengaturan LaTeX untuk membungkus baris, kadang-kadang setengah dari frasa akan berada pada satu baris sedangkan setengah lainnya pada baris berikutnya. Dalam kasus seperti itu, pencarian tidak menemukan apa yang saya cari. Jadi misalnya
blah blah blah hello
world blah blah blah
saat mencari menggunakan /hello world
, saya tidak menemukan apa yang saya cari. Apakah ada cara cepat dan mudah untuk memodifikasi pencarian ini untuk mendapatkan saya di tempat yang saya inginkan? Atau lebih baik lagi, cara untuk memberitahu vim agar cocok dengan spasi putih (spasi, tab, baris baru) dengan spasi di string pencarian?
hello\_s\+world
jika ada lebih dari satu karakter spasi putih di antara mereka, tentu saja.Masalah ini telah diatasi di http://vim.wikia.com/wiki/Search_across_multiple_lines . Termasuk adalah fungsi yang dapat melakukan apa yang saya butuhkan.
Kemudian Anda dapat melakukan pencarian multi-line menggunakan
:S hello world
dan itu akan mengubahnya menjadihello\s\+world
dan mencarinya. Fitur bagus lainnya adalah ini juga akan menambahkan pencarian baru ini ke histori pencarian. Ini memungkinkan Anda untuk kembali dan memodifikasi pencarian menggunakanq/
jika Anda perlu. Ini juga dapat digunakan untuk melakukan substitusi dengan:%s//new thing/g
. Kelemahan dari ini adalah tidak digunakanincsearch
jika Anda mengaktifkannya.sumber
Cara yang saya tahu tidak sulit, tetapi sedikit membosankan. Ganti setiap ruang dalam permintaan pencarian Anda dengan yang berikut:
(Catat spasi setelah
[
.) Ini adalah sintaks pencocokan ekspresi reguler. Rusak, artinya:[...]
berarti cocok dengan salah satu dari daftar karakter di dalam tanda kurung.\t
adalah Tab\n
adalah Newline...\+
berarti cocok dengan satu atau lebih dari yang sebelumnya.Untuk info lebih lanjut tentang ekspresi reguler, Anda dapat bertanya vim:
sumber
Saya pribadi akan menggunakan
[ \t\n]*
bukan spasi. Ini akan cocok dengan nol atau lebih dari '', tab, dan baris baru. Dengan cara ini jika satu contoh dari pola pencarian Anda membentang jeda baris, tetapi yang lain tidak, keduanya akan dicocokkan.sumber