Vim: Bagaimana Anda mencari teks secara efisien?


30

Setiap kali Anda ingin mencari teks di vim Anda akan mengetik /dan kemudian string yang Anda cari.

Namun, ketika string itu panjang, dan Anda ingin melakukan ini beberapa kali, apakah ada cara untuk melakukannya sehingga Anda tidak perlu mengetik /andthisreallylongstringlebih dari satu kali?


12
Saya sarankan Anda membaca sebentar Vim Cheat Sheet atau Vim Tips - Anda mungkin menemukan banyak cara lain untuk mendapatkan lebih banyak dari vim.
RedGrittyBrick

Protip: ada editor teks untuk Linux yang tidak memerlukan minggu belajar untuk menggunakan.
BlueRaja - Danny Pflughoeft

4
@BlueRaja: tidak yakin ini adalah tempat yang bagus untuk perang editor. Juga untuk perang OS karena ada juga editor teks yang bagus dan ramah pengguna untuk Windows atau Mac OS. Harus mempelajari bagaimana menjadi efisien dengan editor akan membuat Anda mungkin lebih efisien pada akhirnya daripada bertahan dengan fitur-fitur dasar.
Benoit

Jawaban:


61

Tekan "n" setelah Anda menyelesaikan pencarian, maka itu akan mengulangi tindakan sebelumnya (pencarian).


12
Juga, Nakan menuju ke hasil sebelumnya.
Jin

15
Juga, menekan panah atas setelah memukul /akan memanggil kembali istilah pencarian terakhir
bastibe

6
Juga q/akan menampilkan jendela yang dapat diedit dengan semua istilah pencarian terbaru.
UncleZeiv

7
Juga, menekan /dan Enter akan mengulangi pencarian sebelumnya. Menekan ?dan Enter akan mengulangi pencarian sebelumnya ke belakang.
Andy Lester

3
/Ctrl-Fadalah alternatif untuk q/itu mungkin mnemonic yang lebih mudah (ctrl-f == find). Seperti q, ini juga berfungsi untuk mode perintah.
idbrii

34

Jika string yang Anda cari berada di bawah kursor, maka Anda dapat mengetik *untuk mencarinya ke depan, atau #untuk mencarinya ke belakang.


19

Bagaimana saya biasanya mencari adalah sesuatu seperti;

  1. Tekan '/'
  2. Masukkan Istilah Pencarian
  3. tekan enter
  4. Gunakan 'n' dan 'N' untuk menavigasi maju dan mundur dalam pencarian.

Vim menyimpan riwayat pencarian Anda, jadi jika Anda membutuhkan pencarian sebelumnya, Anda dapat menekan '/' dan menggunakan tombol ATAS dan BAWAH atau <Ctrl-P> <Ctrl-N> untuk menelusuri riwayat pencarian.

Anda juga bisa menggunakan '?' alih-alih '/' untuk mencari mundur.

Saya juga suka menggunakan:

set ignorecase smartcase

Sekarang ini hanya akan menjadi pencarian case sensitif jika Anda memiliki karakter huruf besar dalam string pencarian.


15

Dua tips tambahan yang dapat membuat pencarian Anda lebih efisien adalah set hlsearchdan set incsearch.

  • set hlsearch, yah, sorot hasil pencarian Anda. Ketik :nohuntuk mematikannya saat Anda tidak membutuhkannya lagi.

  • set incsearch mengaktifkan pencarian tambahan.

    Diekstrak dari :help incsearch

    Saat mengetik perintah pencarian, tunjukkan di mana pola, seperti yang diketikkan sejauh ini, cocok. String yang cocok disorot. Jika polanya tidak valid atau tidak ditemukan, tidak ada yang ditampilkan. Layar akan sering diperbarui, ini hanya berguna pada terminal cepat.

    Tanpa incsearch, hasil Anda hanya akan ditampilkan setelah menekan <CR>kata kunci pencarian Anda.

    Contoh:

    Anda ingin mencari wildignore

    masukkan deskripsi gambar di sini

    Anda mengetik /wilddan kecocokan pertama disorot secara otomatis.

    masukkan deskripsi gambar di sini

    Kemudian ketik idan lanjutkan ke pasangan yang benar berikutnya.

    masukkan deskripsi gambar di sini


13

Kiat lain yang belum dicakup: Menekan karakter qlalu /, akan memberi Anda daftar istilah pencarian sebelumnya. Anda dapat mengeditnya seperti baris lain dalam dokumen, dan kemudian tekan enter untuk menggunakannya kembali untuk pencarian baru.


3
Sedang mencari ini. Ini adalah catatan penting, dan sangat sesuai topik.
cincodenada

8

Setelah menekan /untuk memulai pencarian, Anda dapat panah atas untuk menelusuri sejarah pencarian Anda.

Anda dapat memasukkan ekspresi reguler untuk menghindari keharusan mengetikkan seluruh istilah pencarian: and.*longstring


7

Apakah hanya memukul / tanpa argumen berikut tidak berfungsi untuk Anda? Di semua sistem kami, itu menyebabkan pengulangan pencarian apa pun yang dilakukan terakhir.


6

Ada pola yang bagus yang bisa Anda ikuti untuk mencari teks yang ditarik . Maka Anda bahkan tidak perlu mengetikkan kata itu sendiri, jika Anda menavigasi ke sana dengan cara selain pencarian. Singkatnya, jika Anda menggunakan karakter pertama dari kata yang ingin Anda cari:

v
e
y
/
Ctrl-r
0
Enter

(kemudian lanjutkan ke pertandingan berikutnya dengan n atau N)

Namun *(atau #) mencapai hal yang hampir sama dengan semua perintah ini. Satu-satunya perbedaan adalah Anda dapat fleksibel dengan seberapa banyak kata yang Anda tentukan (daripada e, hingga akhir kata, Anda dapat memilih sebanyak yang Anda inginkan, misalnya 9l)


1
  • /string - Cari maju untuk string
  • ?string - Cari kembali untuk string
  • n - Cari instance string berikutnya
  • N - Cari instance string sebelumnya

1

Banyak waktu ketika pemrograman saya ingin mencari aVeryLongVariableNameInTheProgram.

Dalam vim Anda dapat dengan mudah menarik teks ke dalam buffer / register dan kemudian mencarinya:

  • Letakkan kursor pada karakter kata pertama
  • "Bywuntuk menarik teks aVeryLongVariableNameInTheProgramke buffer B (pilih favorit Anda, saya menggunakan B)
  • /^RB (garis miring, Ctrl-R, B) untuk menempelkan buffer B pada baris pencarian

Tentu saja Anda juga dapat menarik ke akhir baris, dll bukannya menarik satu kata - Saya kebetulan menggunakan urutan di atas sepanjang waktu.


1

Selain itu, Anda dapat menempelkan isi register apa pun ke dalam prompt pencarian dengan menekan Ctrl+ Rdan kemudian nama register, misalnya, / Ctrl+ R0 Enter.


Saya pikir Anda sepatah kata pun.
dotancohen

0

Apakah string panjang yang Anda masukkan nama variabel? Atau string panjang yang ada di teks Anda? Kemudian tekan *untuk mencari kata / string di bawah kursor Anda.

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.