Setelah melakukan pencarian di Vim, saya mendapatkan semua kejadian yang disorot. Bagaimana saya bisa menonaktifkannya? Sekarang saya melakukan pencarian lain untuk sesuatu omong kosong yang tidak dapat ditemukan.
Apakah ada cara untuk menonaktifkan sementara highlight dan kemudian mengaktifkannya kembali saat diperlukan lagi?
nnoremap <esc> :noh<return><esc>
solusi yang disarankan oleh @StewartJohnson bekerja dengan baik di GUI vim, tetapi menyebabkan masalah dengan tombol panah dan tombol ESC-dikodekan lainnya ketika menjalankan vim dalam terminal. Jangan memasukkannya ke dalam Anda~/.vimrc
tanpa membungkusnya dalamif has('gui_running')
...end
.Jawaban:
Untuk mematikan penyorotan hingga pencarian berikutnya:
Atau matikan penyorotan sepenuhnya:
Atau, untuk mengaktifkannya:
sumber
:noh
bekerja lebih baik.set nohlsearch
akan menonaktifkan sorotan untuk pencarian berikutnya juga. Perilaku:noh
ini sangat berbeda: penyorotan akan secara otomatis diaktifkan kembali ketika Anda melakukan pencarian baru atau bahkan ketika Anda melakukan sesuatu yang berkaitan dengan pencarian saat ini (misalnya ketika Anda mengetikn
untuk pergi ke item berikutnya).'\/'
(atau apa pun Pemimpin Anda):map <Leader>/ :nohlsearch<CR>
Dari Dokumentasi VIM
Untuk menghapus pola pencarian yang terakhir digunakan:
Ini tidak akan mengatur pola ke string kosong, karena itu akan cocok di mana-mana. Polanya benar-benar dihapus, seperti saat memulai Vim.
sumber
:command C let @/=""
Menggunakan ini memungkinkan Anda mengetik:C
untuk menghapus string pencarian ... sangat cepat dan tidak memengaruhi pencarian atau penyorotan di masa depan.:he registers
). Vim memiliki beberapa register bawaan yang menyimpan teks, kadang-kadang untuk data yang disentak, kadang-kadang untuk pencarian terakhir, dll. Ketika Anda melakukan pencarian, vim menempatkan pola dalam register "/", yang Anda rujuk menggunakan@/
. Anda juga dapat menetapkan nilai ke register menggunakan di@regname=value
manaregname
adalah nama register. Jadi,@/=""
cukup atur register "/" ke string kosong (kecuali bahwa untuk "/" register vim akan menghapus pencarian terakhir jika mengandung string kosong).noremap <silent> <c-_> :let @/ = ""<CR>
Anda dapat melakukan
atau
:nohlsearch
untuk sementara menonaktifkan penyorotan pencarian sampai pencarian berikutnya.sumber
Saya menemukan jawaban ini bertahun-tahun yang lalu di vim.org:
Tambahkan berikut ini ke .vimrc Anda:
Dengan demikian, setelah pencarian Anda, tekan kembali lagi dalam mode perintah, dan sorotan menghilang.
sumber
n
untuk menemukan kejadian berikutnya (yang akan disorot lagi). BTW, saat scripting, saya akan menghindari bentuk singkatan, dan bukannya menulis:nohlsearch
.Dari http://twitter.com/jonbho/status/2194406821
Baris kedua diperlukan untuk pemetaan ke tombol escape karena Vim secara internal menggunakan escape untuk mewakili kunci-kunci khusus.
sumber
Solusi asli saya (di bawah) kotor dan boros. Sekarang saya gunakan
:noh
Seperti banyak fitur di Vim, cara yang tepat seringkali tidak mudah ditemukan.
-
(JANGAN LAKUKAN INI)
Cari urutan karakter yang tidak mungkin (tumbuk tombol pada baris beranda):
/;alskdjf;
Ini berfungsi dalam vim dan kurang, dan lebih mudah diingat / diketik daripada solusi logis ShaunBouckaert "untuk menghapus pola pencarian yang terakhir digunakan":
:let @/ = ""
Kelemahan potensial adalah menambahkan sampah ke riwayat pencarian Anda.
sumber
:nohl
perintah. Begitu saya mengetahui yang terakhir, saya langsung berhenti untuk melakukan pencarian itu./$4
. Bukan hanya tidak mungkin cocok dengan apa pun, tetapi sebenarnya benar-benar MUNGKIN.$
harus selalu diikuti oleh baris baru atau menjadi akhir file, dan 4 bukan baris baru atau akhir file. (Alasan untuk 4 secara khusus hanya karena itu pada kunci yang sama, jadi sangat mudah untuk mengetik dengan cepat)Dipetakan kembali dalam file .vimrc.local saya, cepat dan kotor tetapi sangat fungsional:
sumber
Dengan begitu saya menyingkirkan
:noh
ditampilkan di commandline, ketika memukul entersetelah pencarian.:seperti memulai memasukkan perintah baru, Backspacemengosongkannya, dan mengembalikan fokus ke jendela editor.
sumber
[a-z]
dan karakter semacam itu.:<Backspace>
, Anda bisa menambahkan<silent>
setelahnnoremap
memberitahu Vim untuk tidak menampilkan output apapun di daerah perintah:nnoremap <silent> <cr> :noh<CR><CR>
.Jawaban yang mengusulkan
:noh
atau:nohlsearch
(misalnya, Matt McMinn) benar untuk sementara menonaktifkan penyorotan pencarian - seperti yang ditanyakan dalam pertanyaan awal.Saya pikir saya akan berkontribusi pemetaan yang saya temukan berguna dalam mode Normal:
Secara default, CtrlLdi Vim membersihkan dan menggambar ulang layar. Sejumlah program baris perintah (kebanyakan yang menggunakan pustaka GNU Readline , seperti Bash) menggunakan kombinasi tombol yang sama untuk menghapus layar. Fitur ini berguna dalam situasi di mana suatu proses yang berjalan di latar belakang dicetak ke terminal, bagian-bagian dari proses foreground yang ditulis secara berlebihan.
Pemetaan mode Normal ini juga menghapus penyorotan istilah pencarian terbaru sebelum menggambar ulang layar. Saya menemukan dua fitur saling melengkapi dan lebih mudah menggunakan satu CtrlLuntuk kedua tindakan bersama daripada membuat pemetaan terpisah untuk menonaktifkan sorotan pencarian.
NB:
noremap
digunakan daripadamap
sebaliknya, pemetaan akan bersifat rekursif.Tip: Saya biasanya remap Caps Lockuntuk Ctrluntuk membuatnya lebih mudah untuk mengetik kombinasi kunci seperti; rincian untuk melakukan ini tergantung pada pilihan OS / sistem windowing Anda (dan di luar topik untuk jawaban ini). Kedua tips berikut mencakup informasi tentang pemetaan Caps Lockke CtrlsertaEsc :
sumber
Saya biasanya memetakan
:noh
ke tombol backslash. Untuk mengaktifkan kembali penyorotan, tekan saja n, dan itu akan menyoroti lagi.sumber
Nonaktifkan sorotan pencarian secara permanen
Kecocokan tidak akan disorot setiap kali Anda melakukan pencarian menggunakan /
Hapus highlight hingga pencarian berikutnya
atau
:nohlsearch
(kosong sampai natau Nditekan)Hapus sorotan saat menekan ESC
Hapus sorotan saat menekan tombol lain atau peta khusus
Hapus highlight pada penekanan \(garis miring terbalik)
Hapus highlight saat memukul ESCdua kali
sumber
nnoremap <silent> <esc> :noh<return><esc>
solusi bekerja dengan baik di GUI vim, tapi menyebabkan masalah berat dengan tombol panah dan tombol ESC-dikodekan lainnya ketika menjalankan vim dalam terminal. Jangan memasukkannya ke dalam Anda~/.vimrc
tanpa membungkusnya dalamif has('gui_running')
...end
. Juga pertimbangkan untuk menambahkan<silent>
yang menghindari mem-flash:noh
perintah di bilah status.Inilah yang saya gunakan (diekstrak dari banyak pertanyaan / jawaban yang berbeda):
Dengan "dobel" EscAnda menghapus sorotan, tetapi segera setelah Anda mencari lagi, sorotan muncul kembali.
Alternatif lain:
Menurut dokumentasi vim:
sumber
.vimrc
dan masukkan entri berikut di dalamnya:nnoremap <silent> <Esc><Esc> :let @/=""<CR>
@/=""
memiliki efek samping dari membuatn
tidak berfungsi untuk mendapatkan pencarian Anda kembali. Saya lebih suka:noh
yang menyimpan pencarian sebelumnya di register untuk digunakan kembali.Untuk mematikan penyorotan hingga pencarian berikutnya
sumber
Jika Anda menginstal plugin incsearch.vim , maka ada pengaturan untuk secara otomatis menghapus sorotan setelah pencarian:
sumber
Janus untuk VIM dan GVIM memiliki sejumlah hal yang dipanggang untuk pemula seperti saya, termasuk
itulah yang Anda butuhkan. Ketikkan saja
\hs
dalam mode normal. (Kunci pemimpin dipetakan ke\
secara default.)HTH.
sumber
Ada dua plugin 'must have' untuk ini:
Ctrl-l
untuk nohlsearch dan redraw layar.[oh
,]oh
dancoh
untuk mengontrol hlsearch.sumber
co
menjadiyo
di v2, jadi begituyoh
. Lihat github.com/tpope/vim-unimpaired/blob/v2.0/doc/unimpaired.txt dan github.com/tpope/vim-unimpaired/issues/150coh
masih berfungsi, meskipun ada pesan yang menyarankan untuk digunakanyoh
jika Anda menggunakancoh
Nonaktifkan penyorotan segera setelah Anda memindahkan kursor:
Instal vim-cool . Itu dibuat untuk memperbaiki masalah khusus ini. Ini mematikan penyorotan segera setelah Anda memindahkan kursor. Berhati-hatilah, itu membutuhkan versi vim baru-baru ini!
sumber
Ini akan menghapus sorotan pencarian setelah
updatetime
milidetik tidak aktif.updatetime
default ke 4000ms atau 4s tapi saya atur 10s. Penting untuk dicatat bahwaupdatetime
lakukan lebih dari ini, jadi bacalah dokumen sebelum Anda mengubahnya.sumber
Jika Anda ingin dapat mengaktifkan / menonaktifkan penyorotan dengan cepat , Anda dapat memetakan kunci untuk
Masukkan saja cuplikan di atas ke dalam file .vimrc Anda
Itu cara yang paling nyaman bagi saya untuk menunjukkan dan menyembunyikan sorotan pencarian dengan stroke kunci bernyanyi
Untuk informasi lebih lanjut, lihat dokumentasi http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
sumber
Satu lagi solusi dengan menggabungkan 2 jawaban teratas:
sumber
@/=""
memiliki efek samping dari membuatn
tidak berfungsi untuk mendapatkan pencarian Anda kembali. Saya lebih suka:noh
yang menyimpan pencarian sebelumnya di register untuk digunakan kembali. Anda dapat mengikatnya<F3>
dengannnoremap <F3> :noh<CR>
Saya pribadi suka memetakan
esc
ke perintah:noh
sebagai berikut:map <esc> :noh<cr>
Saya menulis seluruh artikel baru-baru ini tentang pencarian Vim : cara mencari vanilla Vim dan plugin terbaik untuk meningkatkan fitur pencarian.
sumber
Saya hanya menggunakan nohl sederhana di bawah ini dan tidak ada plugin yang diperlukan.
:nohl
sumber
Dugaan saya adalah bahwa pertanyaan awal yang bersangkutan tidak dinonaktifkan penyorotan pencarian tetapi hanya menghapus penyorotan dari pencarian terakhir. Solusi mencari string omong kosong, yang disebutkan oleh poster aslinya, adalah yang telah saya gunakan selama beberapa waktu untuk menghapus penyorotan dari pencarian sebelumnya, tapi jelek dan rumit.
Beberapa saran yang saya temukan untuk ditambahkan
nnoremap ...
ke ~ / .vimrc di sini memiliki efek menempatkan vim ke dalam mode ganti saat startup, yang sama sekali tidak seperti yang saya inginkan. Solusi paling sederhana yang saya temukan adalah menambahkan bariske ~ / .vimrc saya. Ini mengacu pada prinsip KISS dan tidak mengganggu tombol panah, yang menggunakan <esc> tunggal. Sebuah double-<esc> diperlukan dalam mode perintah (atau triple-<esc> dari mode insert atau replace) untuk menghapus penyorotan dari pencarian sebelumnya, tetapi dari perspektif UI ini membuat operasi menjadi sesederhana mungkin.
sumber
nmap <esc><esc> :noh<return> - to turn off search highlighting and nmap <esc>` :set hlsearch<return> - to turn on search highlighting
Saya menggunakan berikut ini di blog saya
~/.vimrc
nnoremap <Leader><space> :noh<Enter>
Ini membuatnya sangat mudah dan cepat untuk menghapus pencarian yang disorot saat ini. Kunci pemimpin saya dipetakan
\
sehingga ini membuat tindakan sangat mudah dilakukan dengan jari dan ibu jari kelingking kanan saya.sumber
Saya pikir mencampur @ShaunBouckaert dan 19 Maret 2009 di 16:22 jawaban adalah kompromi yang baik:
Tekan Enterdan teks yang disorot tidak lagi disorot, sementara penyorotan pencarian masih diaktifkan.
sumber
Anda dapat menggunakan : noremap untuk menghidupkan / mematikan hasil pencarian, seperti ini
:noremap <F3> :set hls! hls?<CR>
sumber
Berdasarkan jawaban @ baruch-even, Anda dapat menghapus istilah pencarian dengan ESCdua kali tekan saat dalam mode normal dengan:
sumber
<esc>
berfungsi dengan baik dalam GUI vim, tetapi menyebabkan masalah parah dengan tombol panah dan kunci yang dikodekan ESC lainnya saat menjalankan vim di terminal. Jangan memasukkannya ke dalam Anda~/.vimrc
tanpa membungkusnya dalamif has('gui_running')
...end
. Juga pertimbangkan untuk menambahkan<silent>
yang menghindari mem-flash:noh
perintah di bilah status.Saya juga tidak suka. Saya menemukan itu melelahkan untuk memasukkan
:nohl
semua waktu ... jadi saya menempatkan pemetaan berikut di blog saya.vimrc
Bit pertama (
:nohl<cr>
) menghapus penyorotan; bit kedua (:<backspace>
) adalah trik untuk membersihkan baris perintah. Pencarian masih ada di latar belakang, jadi jika Anda menekan sajan
itu akan menyorot kembali dan membawa Anda ke kejadian berikutnya.sumber
Saya menambahkan ini ke
vimrc
file saya .command! H let @/=""
Setelah Anda melakukan pencarian dan ingin menghapus highlight dari pencarian Anda lakukan saja
:H
sumber
Anda dapat menambahkan pemetaan pada file .vimrc Anda sebagai,
lalu Anda bisa menekan
ke kapan saja untuk menghapus teks yang disorot
sumber