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.