Soru Vim son arama vurgulamayı temizle


Vim'de bir arama yaptıktan sonra, tüm olayları vurguladım. Bunu nasıl iptal edebilirim? Artık bulunamayan bir şey için başka bir araştırma yapıyorum.

Vurgulamayı geçici olarak devre dışı bırakmak ve gerektiğinde tekrar etkinleştirmek için bir yol var mı?


1599
2018-03-18 09:00


Menşei


Sanırım "nnoremap <esc>: noh <return> <esc>" çözümü, soruna daha eksiksiz bir cevaptır. Bunu, .vimrc'inize ekleyerek, vurgulamayı temizlemek için arama yaptıktan sonra sadece <esc> tuşuna basmanız yeterlidir. önceki aramadan (ama iyi için vurgulamayı devre dışı bırakmayın). - Stewart Johnson
: set invhlsearch, eğer vurgulanmışsa vurgulamayı devre dışı bırakır ve değilse de etkinleştirir. Bunu Shift-H ile eşleyebilirsiniz. - puffadder
Kabul edilen cevap en iyisi değil. - qed
3 yıldır merak ettiğim soruyu sorduğun için teşekkürler (cevap ver) - psynnott
@StewartJohnson Dikkatli olun! Haritalamada en çok yorumlanan olan yorumunuz, aşağıdaki yorumlarda açıklandığı gibi hatalara ve beklenmeyen davranışlara neden olur stackoverflow.com/a/1037182/1698467 - skywinder


Cevaplar:


Bir sonraki aramaya kadar vurgulamayı kapatmak için:

:noh

Ya da vurgulamayı tamamen kapatınız:

set nohlsearch

Ya da değiştirmek için:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>

1293
2018-03-18 09:02



Nohlsearch ayarlanarak vim yeniden başlatıldığında vurgulanır. :noh daha iyi çalışır. - Dharmit
Bu tür bir hileli dize aramak için sadece hızlı olabilir: / oajf3w9 yazdığı gibi: noh. Avocade'in uzay anahtarını haritalama çözümünü beğendim: noh - nnyby
Bu cevap ve yorumlardan net değil: not set nohlsearchsonraki aramalar için vurgulamayı da devre dışı bırakır. Davranışı :noh çok farklıdır: yeni bir arama yaptığınızda veya mevcut arama ile ilgili bir şey yaptığınızda bile vurgulama otomatik olarak yeniden etkinleştirilir (örneğin, yazarken n sonraki maddeye gitmek için). - Skippy le Grand Gourou
Bunların gerçekte ne yaptığını ve sonuçlarını açıklama yok. Bazılarını açıklamak için @SkippyleGrandGourou'ya teşekkürler. - Jason S
Onun değerine göre, bunu '\/' (ya da Lideriniz ne olursa olsun): map <Leader>/ :nohlsearch<CR> - brianmearns


İtibaren VIM Belgeleri

Son kullanılan arama modelini temizlemek için:

:let @/ = ""

Bu, deseni boş bir dizeye ayarlamaz, çünkü bu eşleşir her yerde. Desen, Vim'i başlatırken olduğu gibi gerçekten temizlenir.


641
2018-03-18 09:12



Bu, aramayı devre dışı bırakmaz, deseni temizler. - Shaun Bouckaert
... anladığım kadarıyla problemine daha iyi bir çözüm olurdu. - Shaun Bouckaert
Oy verilmiş. Bu onun sorusuna cevap vermeyebilir, ancak sık sık cevabın tam olarak ne yaptığını öğrenmek isterim. Teşekkürler - skinp
Sorunun neyle ilgili olduğunu düşündüğüm şey buydu ... buradaki arama dizgisini temizlemeyi hızlandırmak için yaptığım bir komut (ve bu nedenle tüm vurgular): :command C let @/="" Bunu kullanarak yazmanıza izin verir :C arama dizesini temizlemek için ... çok hızlı ve gelecekteki arama veya vurgulamayı etkilemez. - Jason
@ jcreamer898, "register'larda" vim yardımına bakın (:he registers). Vim'in metinleri tutan, bazen de son arama için bazen de veriyi saklayan birkaç farklı yerleşik kaydı vardır. Bir arama yaptığınızda, vim modeli "/" yazmacına yerleştirir, @/. Kayıtları kullanarak değerleri de atayabilirsiniz. @regname=value nerede regname registerın adıdır. Yani, @/="" sadece boş bir dizgeye "/" registerini ayarlamaktır ("/" register vim için boş bir dize içeriyorsa son aramayı temizleyecektir). - Ben Davis


Yapabilirsin

:noh

veya :nohlsearch arama vurgulamayı bir sonraki aramaya kadar geçici olarak devre dışı bırakmak için


558
2018-03-18 14:26



teşekkürler, bu yardımcı oldu ... vurguyu döndürmek için herhangi bir komut? - Gabriel Solomon
: nohs sadece mevcut vurgulamayı kapatır. Eğer varsa: hlsearch'i ayarladıysanız, aramalarınızı vurgulamaya devam edecektir. - greyfade
OP'nin aradığı şey bu olduğunu düşünüyorum (Shaun'un cevabı da işe yaramıyor olsa da). Daha kısa olduğu için bunu reddediyorum. Nohls cevabını kabul ettiğini biliyorum, ancak daha sonra başka bir arama deneniyor olsa bile, tüm arama vurgulamalarını devre dışı bırakacak. - Thiago Arrais
Bu muhtemelen OP'nin ilk sırada istediği ve en kısa, en iyi cevap olan IMHO.
Bu fani alanda bile mükemmellik elde edilebilir! Bunu daha fazla kullanacağım: yardım ve kirletmek istemiyorum <esc>: nnoremap <F1>: noh <CR> - Sam Watkins


Bu cevabı yıllar önce vim.org'da buldum:

Aşağıdakileri .vimrc dosyanıza ekleyin:

"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>

Böylece, aramanızdan sonra, sadece komut modunda geri dönmek ve vurgulama kaybolur.


269
2018-03-19 16:22



Bence bu bir çok Aslında kabul edilenlerden daha iyi bir çözüm - ya bu ya da bunun yerine <ESC> ile eşlendiği diğer. - Stewart Johnson
Bu, "nnoremap <esc>: noh <return> <esc>" için çok daha iyi bir yanıttır çünkü garip davranışlara neden olmaz. - Dennis Hodapp
Dikkat edilmesi gereken önemli bir nokta, bir remapın sağ tarafına yorum yazmadığınızdan emin olmanız. Yorumun aksine, remap için komut olarak yorumlanacaktır. - codybuell
Yorum yanlış; komut yapar değil Son arama modelini kaldırın, ancak mevcut sonuçların vurgulanmasını kapatır; vurabilirsin nBir sonraki olayı bulmak için (tekrar vurgulanacak). BTW, komut yazarken kısaltılmış formdan kaçınacak ve yazacaktım. :nohlsearch. - Tobias
Ekranın yanıp sönmesini ve komut satırında noh'un kalmasını önlemek için <sessiz> ekleyin -: nnoremap <silent> <CR>: nohlsearch <CR> <CR> - Peter N Lewis


itibaren http://twitter.com/jonbho/status/2194406821

" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[

İkinci satır için gerekli kaçış anahtarına eşleme Vim dahili olarak özel anahtarları temsil etmek için kaçış kullandığı için.


131
2018-06-24 08:53



Sadece açık olmak gerekirse, bu, Escape tuşa basarak arama vurgulamayı temizlemenizi sağlar - Gavin Miller
Bazı sebeplerden dolayı, terminalim vim "c" ye basılmış gibi başlıyor. Herhangi bir fikir? - Jacob
Bu, denediğimde bazı garip davranışlara neden oldu: başlangıçta, düzenli vim hareketleri (örneğin j, k) çizgilerin çıkarılmasına neden olur. nnoremap <CR>: noh <CR> <CR> bu sorunlara neden olmadı. Kök nedenini takip edemedim. - oasisbob
hmm, yukarıdakilerle aynı problemi yaşadım. Metninizi rastgele silmeyi tercih etmedikçe, bunu test yapmadan kullanmayın ... - Derek Litz
"nnoremap <esc>: noh <return> <esc>" ifadesini kullanarak, vim her zaman "DEĞİŞTİRME" modunda başlar. - user1850133


Olası olmayan bir karakter dizisini arayın (ana satırdaki tuşları karıştırın):

/;alskdjf;

Bu, vim ve daha az çalışır ve @ ShaunBouckaert'in son kullanılan arama modelini temizlemek için mantıksal olarak daha temiz olan çözümden hatırlamak / yazmak daha kolaydır:

:let @/ = ""

Potansiyel bir dezavantajı, arama geçmişinize önemsiz eklenmesidir.


36
2018-03-17 15:38



Bu sadece kirli bir çözüm (şimdiye kadar kullandım, suç yok), başka bir dezavantajı, pencerenin alt kısmında "desen bulunamadı" diyerek çirkin bir kırmızı başlık ekliyor. kendisi ve atılması için daha fazla eylem gerektirir (örneğin "arama + backspace"). - Skippy le Grand Gourou
Aynı zamanda birkaç saniye sürebilir aslında arar Dosyanın geri kalan kısmı. Dosya büyükse gerçekten sinir bozucu. Tabii ki şu anki pozisyonunuzu işaretleyebilir, baştan başlayıp, bir karakter için geriye doğru arama yapabilirdiniz, ama aynı şekilde kirli. - Blacklight Shining
Evet, bu çirkin çözümü de kullanıyorum ama her zaman herhangi bir dosyadaki herhangi bir şeyle neeever eşleşen '/ qwe' kullanırım. - Juan Campa
En çok kullanacağı çözüm budur önce hakkında öğrenme :nohl Komut. İkincisini öğrendiğimde, hemen o aramaları yapmak için durdum. - Tobias
Bu bir cevap değil; Sadece OP'nin zaten yaptığı şeyi yapmayı tavsiye ediyor: "Artık bulunamayan bir şeyler için başka bir araştırma yapıyorum." - iamnotmaynard


.Vimrc.local dosyamda, hızlı ve kirli fakat çok işlevsel olan bir dosyada değiştirildi:

" Clear last search highlighting
map <Space> :noh<cr>

30
2017-10-23 19:48





nnoremap <cr> :noh<CR><CR>:<backspace>

Bu şekilde kurtulmak :noh isabet sırasında komut satırında gösterilir girmek aramadan sonra.

: yeni bir komuta girmeye başlamak gibidir geri tuşu temizler ve odağı editör penceresine geri koyar.


27
2017-08-09 19:04



Teşekkür ederim. Sol altta gösterilen "noh" beni çıldırtıyordu, OCD. - andrewtweber
Ben <cr-cr>: noh <CR> <CR> nnoremap yaparak değiştirilmiş cr ile eşleştirmeye çalışıyordum ama işe yaramadı, neden çalışmıyor olabilir biliyor musunuz? - Charlie Parker
Vardiya ile vardiyayı birleştiremeyeceğinizi sanıyorum, ama dürüst bir şekilde hiçbir fikrim yok. - sjas
@CharlieParker IIRC sadece vardiyada kullanabilirsiniz [a-z] ve böyle karakterler. - sjas