Geçerli belgede vurgulanan kelimeyi nasıl silebilirim (örneğin bir kelimeyi aradıktan sonra gibi)?


61

Bir dosyadaki bir kelimeyi benzer bir şeyle aradığınızda /console.log, tüm örnekleri console.logvurgulanır.

Artık bunlarla ilgilenmiyorsanız, vurgulama dikkatinizi dağıtabilir. Vurgulamayı kaldırmak için şu anki stratejim, bunun gibi bir şey yapmak /asntehua. Bu sözcüğü vurgulamanın kaldırılması için uygun bir yol var mı?


2
/skldafjlksjdf
Yazmaktan

1
Senin .vimrc için aşağıdaki ekleyin: :nnoremap <silent> <CR> :nohlsearch<CR><CR>. Komut modundayken return tuşuna basın; vurgulama kaybolur
nilon,

Yanıtlar:


47

Alternatif olarak :noh, :let @/=""bir klavye kısayoluyla eşleştirilmeyi severim .

Aradaki fark, :noharama terimini arama kaydında bırakır, bu nedenle nve Nnormal modda önceki / sonraki eşleşmeye atlayarak ve yeniden vurgulayarak aramaya devam edin. Kullanılması :let @/="", diğer taraftan, mesajı neden olur E25: No previous regular expressionve o was imleci bırakır henüz bilmiyorum eğer özellikle uygundur, ctrl- ohenüz ve yanlışlıkla çarptı n.

Bu, başka bir şekilde de kullanılabilir. Vim'in bazı metinleri atlamadan vurgulamasına neden olmak için:let @/="some text"

Bu ifadelerde, @ bir sicile başvurmanıza izin verir ve @ / son arama düzenini tutan sicildir.


31

Basitçe yazın

:noh<cr>

( <cr>Bir satırbaşının sembolize edildiği yerde, örneğin Enter.) Bu komutun kısaltılmamış versiyonunun tamamıdır :nohlsearch.

Kolaylık sağlamak için,

nnoremap <Leader><space> :noh<cr>

senin içinde .vimrc. Liderim Uzay olduğu için, bu sadece uzaya iki kez dokunarak vurguyu silmeme izin veriyor. (Varsayılan olarak, <Leader>ayarlanır \)

Diğer bir popüler seçenek onu Ctrl+ ' ya bağlamaktır L, çünkü bu aşağı yukarı yaptığınız ' kabaca yeniden yapılmış olan terminal ekranı 'için varsayılan değerdir :

nnoremap <silent> <C-L> :nohlsearch<CR><C-L>

Bu, aynı zamanda terminal bağlantınız yavaşsa (bu günlerde çok nadir görülür) yavaş olabilen terminal ekranının yeniden çizilmesinin yan etkisidir .
NOT: Eğer tpope / vim-sensible kullanıyorsanız , <C-l>yukarıda listelenen eşlemeyi zaten sunar .


21

Arama vurgulamayı kalıcı olarak devre dışı bırak

Kullanarak arama yaptığınızda, eşleşmeler vurgulanmayacak /

:set nohlsearch

Bir sonraki aramaya kadar vurguyu temizle

:noh

veya :nohlsearch( nveya Nbasılana veya temiz bir arama yapılıncaya kadar silinir )


Basarken vurguyu temizle ESC

nnoremap <esc> :noh<return><esc>

Başka bir tuşa veya özel haritaya basıldığında vurgulamayı temizleyin

  • Basarken dikkat çekici noktaları temizleyin \(ters eğik çizgi)

    nnoremap \ :noh<return>
    
  • ESCİki kere vurmak için vurgular

    nnoremap <esc><esc> :noh<return>
    

Eklediğim nnoremap <esc> :noh<return><esc>kardeşime karşı vimrcama işe yaramıyor. jkKaçmak için harita çizdim, bu yüzden olabilir mi?
mbigras

Tam olarak ne oluyor? Belki ESCanahtarı devre dışı bıraktın ?
Sheharyar

basılması jkvurgulanan metni kapatmaz (ancak yine de aynı şekilde çalışır Esc). Klavyemin Escsol üst köşesindeki düğmesine basmak , vurgulanan metni kapatır.
mbigras

Yani cevabın orada. Senin koy jkaşağıdaki haritayı ESCharita ve basit kullandığınızdan emin olun mapyerinenoremap
Sheharyar

Kaçışın yeniden işaretlenmesi ok tuşlarında sorunlara neden olabilir ve bir kaçış kodu kullanan diğer senaryoları varsayardım. vi.stackexchange.com/questions/11144/…
Rob Mosher

2

~ / Vimrc içindeki kısayollar için önerilen birkaç çözümü denedikten sonra, basitçe eklemeye karar verdim nmap <esc><esc> :noh<return>. Çift çıkış, ok tuşlarının işleviyle etkileşimi önler. Ekleme modundaysanız, üçlü bir kaçış gereklidir. Uygulaması hızlı ve hatırlaması kolaydır.


2

.Vimrc'ime, ekleme moduna girdiğinizde vurgulamayı kaldıran bir autocmd ekledim.

 autocmd InsertEnter * :let @/=""

2
nohlBunun yerine kullanmak let @/=""daha iyi bir yaklaşım olacaktır, o zamandan beri mevcut aramanızı engellemiyorsunuz.
jamessan

@ jamessan :let @/=""komutu ile çalışır ancak autocmd InsertEnter * :nohnedense, herhangi bir fikir neden yok mu?
tobek

1
Aslında sebebini buldum: 'Arama-vurgulama, bir otomatik komutta ": nohlsearch" ile kapatılamıyor
dokümanlarına göre

1

Herhangi bir aramadan sonra vurgulamak istemiyorsanız, bunu (daha iyi) kullanabilirsiniz:

:set nohls

veya bu (daha kötü):

:hi Search NONE

1

Yazarken :help incsearch, kılavuzda aşağıdakileri buldum:

augroup vimrc-incsearch-highlight
  autocmd!
  autocmd CmdlineEnter /,\? :set hlsearch
  autocmd CmdlineLeave /,\? :set nohlsearch
augroup END

denedim, çünkü denedim diğer çözümler mükemmel değildi ve bu çözüm tabiri caizse "atın ağzından" geliyor. Geçerli penceredeki tüm arama eşleşmelerini vurgular.


1
/asdfasdf

Bu, tam olarak yazmanız gerekmediği avantajına sahiptir. Dezavantajı, 4096 baytlık bir dosyada 1: 68719476736 şansının bulunmaması ve imlecinizin farklı bir yere sıçramasıdır. Bu şans daha büyük dosyalar için artar.


1
Vi SE'ye hoş geldiniz! Dizginin asdfasdfpratik dosyalarda rastgele seçilen 8 baytlık bir diziden çok sık sık olması açısından özel olduğunu düşünüyorum . Bu nedenle, şans çok daha yüksektir. :-)
user259412

0

Hls'yi kaldırmanın iyi bir şey olduğunu düşünmüyorum, kolay bir kısayol oluşturmayı etkinleştirmeyi veya devre dışı bırakmayı (boolean) nasıl benim durumumda ->

" to reselect use gv in normal mode
nnoremap <S-F11> <ESC>:set hls!<cr>
inoremap <S-F11> <C-o>:set hls!<cr>
vnoremap <S-F11> <ESC>:set hls!<cr> <bar> gv

Büyü !, ayarın sonunda " " nedeniyle olur.


0

Vurgulamak istediğim için çok nadir olduğunu ve vurgulamak istediğimde sadece kısa bir süre için olduğunu biliyorum. Benim çözümüm

nnoremap <Leader>/ set hls!<CR>

Bu, bastığınızda vurgulamayı \/ve tekrar basarsanız tekrar devre dışı bırakmanızı sağlar. Bu, nadir durumlarda ihtiyaç duyduğunuzda vurgulamaya kolay erişim sağlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.