Po przeszukaniu w Vimie podświetlam wszystkie wystąpienia. Jak mogę to wyłączyć? Teraz ponownie szukam czegoś bełkotu, którego nie można znaleźć.
Czy istnieje sposób na tymczasowe wyłączenie podświetlenia, a następnie ponowne włączenie go, gdy zajdzie taka potrzeba?
nnoremap <esc> :noh<return><esc>
Rozwiązanie sugerowane przez @StewartJohnson działa ładnie w GUI vim, ale powoduje problemy z klawiszami strzałek i innych klawiszy ESC zakodowane przy uruchamianiu vim w terminalu. Nie należy umieszczać go w~/.vimrc
bez zawijania wif has('gui_running')
...end
.Odpowiedzi:
Aby wyłączyć wyróżnianie do następnego wyszukiwania:
Lub całkowicie wyłącz wyróżnianie:
Lub, aby przełączyć:
źródło
:noh
działa lepiej.set nohlsearch
wyłączy to również podświetlanie dla kolejnych wyszukiwań. Zachowanie:noh
jest bardzo różne: podświetlenie zostanie automatycznie ponownie włączone, gdy przeprowadzasz nowe wyszukiwanie lub nawet gdy robisz coś związanego z bieżącym wyszukiwaniem (np. Kiedy piszesz,n
aby przejść do następnego elementu).'\/'
(lub cokolwiek to jest Twój przywódca):map <Leader>/ :nohlsearch<CR>
Z dokumentacji VIM
Aby wyczyścić ostatnio używany wzorzec wyszukiwania:
To nie ustawi wzorca na pusty ciąg, ponieważ pasowałby wszędzie. Wzór jest naprawdę wyczyszczony, tak jak podczas uruchamiania Vima.
źródło
:command C let @/=""
Użycie tego pozwala na wpisanie,:C
aby wyczyścić szukany ciąg ... bardzo szybko i nie wpływa na przyszłe wyszukiwanie ani wyróżnianie.:he registers
). Vim ma kilka różnych wbudowanych rejestrów, które przechowują tekst, czasem dla szarpanych danych, czasami dla ostatniego wyszukiwania itp. Podczas wyszukiwania, vim umieszcza wzorzec w rejestrze „/”, do którego się odwołujesz@/
. Możesz także przypisać wartości do rejestrów, używając@regname=value
gdzie gdzieregname
jest nazwa rejestru. Po@/=""
prostu ustawia rejestr „/” na pusty ciąg znaków (z wyjątkiem tego, że dla rejestru „/” vim wyczyści ostatnie wyszukiwanie, jeśli zawiera pusty ciąg).noremap <silent> <c-_> :let @/ = ""<CR>
Możesz to zrobić
lub
:nohlsearch
tymczasowo wyłączyć podświetlanie wyszukiwania do następnego wyszukiwania.źródło
Znalazłem tę odpowiedź lata temu na vim.org:
Dodaj następujące elementy do pliku .vimrc:
Dlatego po zakończeniu wyszukiwania naciśnij ponownie klawisz Return w trybie poleceń, a podświetlenie zniknie.
źródło
n
aby znaleźć następne wystąpienie (które zostanie ponownie podświetlone). BTW, podczas pisania skryptów unikałbym skróconej formy i zamiast tego pisałem:nohlsearch
.Od http://twitter.com/jonbho/status/2194406821
Druga linia jest potrzebna do mapowania na klawisz Escape, ponieważ Vim wewnętrznie używa Esc do reprezentowania specjalnych klawiszy.
źródło
Moje oryginalne rozwiązanie (poniżej) było brudne i marnotrawne. Teraz używam
:noh
Podobnie jak wiele funkcji w Vimie, właściwa droga często nie jest łatwa do wykrycia.
-
(NIE RÓB TEGO)
Wyszukaj mało prawdopodobną sekwencję znaków (zacieraj klawisze w wierszu głównym):
/;alskdjf;
Działa to w vimie i mniej, i łatwiej jest zapamiętać / wpisać niż logicznie czystsze rozwiązanie @ ShaunBouckaert „aby usunąć ostatnio używany wzorzec wyszukiwania”:
:let @/ = ""
Potencjalnym minusem jest to, że dodaje śmieci do historii wyszukiwania.
źródło
:nohl
poleceniem. Gdy dowiedziałem się o tym drugim, natychmiast przestałem wyszukiwać./$4
. Jest nie tylko mało prawdopodobne, aby coś do siebie pasowało, ale w rzeczywistości NIEMOŻLIWE.$
zawsze musi następować nowa linia lub być końcem pliku, a 4 nie jest ani nową linią, ani końcem pliku. (Powodem 4 jest po prostu to, że ma ten sam klawisz, więc bardzo łatwo jest szybko pisać)Zmapowany do mojego pliku .vimrc.local, szybki i brudny, ale bardzo funkcjonalny:
źródło
W ten sposób pozbywam się
:noh
pokazanego w wierszu poleceń, gdy uderzamenter po wyszukiwaniu.:przypomina rozpoczęcie wprowadzania nowego polecenia, Backspaceusuwa je i przenosi fokus z powrotem do okna edytora.
źródło
[a-z]
i takich znaków.:<Backspace>
, wystarczy dodać<silent>
ponnoremap
powiedzieć Vima nie wyświetla żadnych wyjście w obszarze poleceń:nnoremap <silent> <cr> :noh<CR><CR>
.Odpowiedzi proponujące
:noh
lub:nohlsearch
(np. Matt McMinn) są poprawne tymczasowo wyłączenia podświetlania wyszukiwania - zgodnie z pierwotnym pytaniem.Pomyślałem, że przyczynię się do mapowania, które uważam za przydatne w trybie normalnym:
Domyślnie CtrlLw Vimie czyści i przerysowuje ekran. Wiele programów wiersza poleceń (głównie tych korzystających z biblioteki GNU Readline , takich jak Bash) używa tej samej kombinacji klawiszy, aby wyczyścić ekran. Ta funkcja jest przydatna w sytuacji, gdy proces działający w tle drukuje do terminala, zastępując części procesu pierwszego planu.
To mapowanie w trybie normalnym usuwa również podświetlenie ostatniego wyszukiwanego terminu przed przerysowaniem ekranu. Uważam, że dwie funkcje się uzupełniają i wygodnie jest używać jednej CtrlLz nich dla obu akcji razem, zamiast tworzyć osobne mapowanie w celu wyłączenia podświetlania wyszukiwania.
Uwaga:
noremap
zamiast tego używane jestmap
odwzorowanie rekurencyjne.Wskazówka: Zwykle remap Caps Lockaby Ctrlułatwić wpisywanie takich kombinacji klawiszy; szczegółowe informacje na ten temat zależą od wybranego przez ciebie systemu operacyjnego / systemu okien (i są nie na temat tej odpowiedzi). Zarówno Poniższe wskazówki zawierają informacje na temat mapowania Caps Lockaby Ctrljak Esc:
źródło
Zazwyczaj odwzorowuję
:noh
klawisz odwrotnego ukośnika. Aby ponownie włączyć podświetlanie, wystarczy nacisnąć n, a podświetli się ponownie.źródło
Wyłącz podświetlanie wyszukiwania na stałe
Dopasowania nie będą podświetlane przy każdym wyszukiwaniu za pomocą /
Wyczyść zaznaczenie do następnego wyszukiwania
lub
:nohlsearch
(usuwa do momentu naciśnięcia nlub N)Wyczyść zaznaczenie po naciśnięciu ESC
Usuń zaznaczenie po naciśnięciu innego klawisza lub mapy niestandardowej
Wyczyść podświetlenia po naciśnięciu \(ukośnik odwrotny)
Wyczyść zaznaczenia po ESCdwukrotnym trafieniu
źródło
nnoremap <silent> <esc> :noh<return><esc>
Rozwiązanie działa ładnie w GUI vim, ale powoduje poważne problemy z klawiszy strzałek i innych klawiszy ESC zakodowane przy uruchamianiu vim w terminalu. Nie należy umieszczać go w~/.vimrc
bez zawijania wif has('gui_running')
...end
. Zastanów się również nad dodaniem tego,<silent>
co pozwala uniknąć flashowania:noh
polecenia na pasku stanu.Oto, czego używam (wyodrębniony z wielu różnych pytań / odpowiedzi):
Przy „podwójnym” Escusuwasz podświetlenie, ale jak tylko zaczniesz szukać, podświetlenie pojawi się ponownie.
Inna alternatywa:
Według dokumentacji vima:
źródło
.vimrc
i wstaw w nim następujący wpis:nnoremap <silent> <Esc><Esc> :let @/=""<CR>
@/=""
pomocą powoduje, żen
nie działa, aby odzyskać wyszukiwanie. Wolę, aby:noh
zachować poprzednie wyszukiwanie w rejestrze do ponownego użycia.Aby wyłączyć podświetlanie do następnego wyszukiwania
źródło
Jeśli masz zainstalowaną wtyczkę incsearch.vim , istnieje ustawienie automatycznego usuwania podświetlenia po wyszukiwaniu:
źródło
Janus dla VIM i GVIM ma wiele upieczonych rzeczy dla newbów takich jak ja, w tym
dokładnie tego potrzebujesz. Wystarczy wpisać
\hs
w trybie normalnym. (Klucz lidera jest odwzorowany na\
Domyślnie ).HTH.
źródło
W tym celu dostępne są dwie wtyczki „must have”:
Ctrl-l
dla nohlsearch i przerysowania ekranu.[oh
,]oh
acoh
do sterowania hlsearch.źródło
co
sięyo
na v2, więc tak jestyoh
. Zobacz github.com/tpope/vim-unimpaired/blob/v2.0/doc/unimpaired.txt i github.com/tpope/vim-unimpaired/issues/150coh
nadal działa, chociaż pojawia się komunikat sugerujący użycie,yoh
jeśli używaszcoh
Wyłącz podświetlenie, gdy tylko poruszysz kursorem:
Zainstaluj vim-cool . Został stworzony, aby rozwiązać ten konkretny problem. Wyłącza podświetlanie, gdy tylko przesuniesz kursor. Ostrzegamy jednak, że wymaga najnowszej wersji vima!
źródło
Spowoduje to wyczyszczenie podświetlenia wyszukiwania po
updatetime
milisekundach braku aktywności.updatetime
domyślnie 4000ms lub 4s, ale ustawiłem mój na 10s. Ważne jest, aby pamiętać, żeupdatetime
robi to więcej niż tylko to, dlatego przeczytaj dokumentację przed zmianą.źródło
Jeśli chcesz mieć możliwość szybkiego włączania / wyłączania podświetlania , możesz zmapować klucz
Po prostu włóż powyższy fragment do pliku .vimrc.
To najwygodniejszy sposób dla mnie, aby pokazać i ukryć wyróżnienie wyszukiwania za pomocą pojedynczego naciśnięcia klawisza
Aby uzyskać więcej informacji, zapoznaj się z dokumentacją http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
źródło
Jeszcze jedno rozwiązanie, łącząc 2 najlepsze odpowiedzi:
źródło
@/=""
pomocą powoduje, żen
nie działa, aby odzyskać wyszukiwanie. Wolę, aby:noh
zachować poprzednie wyszukiwanie w rejestrze do ponownego użycia. Możesz się<F3>
z tym powiązać za pomocąnnoremap <F3> :noh<CR>
Osobiście lubię mapować
esc
do polecenia:noh
w następujący sposób:map <esc> :noh<cr>
Niedawno napisałem cały artykuł o wyszukiwaniu w Vimie : jak wyszukiwać w waniliowym Vimie i najlepszej wtyczce do ulepszenia funkcji wyszukiwania.
źródło
Po prostu używam poniższego prostego nohl i nie są potrzebne żadne wtyczki.
:nohl
źródło
Domyślam się, że pierwotne pytanie dotyczyło nie wyłączania podświetlania wyszukiwania, ale po prostu usuwania podświetlenia z ostatniego wyszukiwania. Rozwiązanie szukania bełkotliwego sznurka, o którym wspominał oryginalny plakat, jest tym, z którego korzystałem od jakiegoś czasu, aby wyczyścić wyróżnienia z poprzedniego wyszukiwania, ale jest brzydkie i kłopotliwe.
Kilka sugestii, które znalazłem w
nnoremap ...
~ / .vimrc, skutkuje wprowadzeniem vima w tryb zastępowania podczas uruchamiania, co wcale nie jest tym, czego chcę. Najprostszym rozwiązaniem, jakie znalazłem, jest dodanie liniido mojego ~ / .vimrc. Jest to zgodne z zasadą KISS i nie koliduje z klawiszami strzałek, co robi pojedyncze użycie <esc>. Podwójny <esc> jest wymagany w trybie poleceń (lub trzykrotny <esc> z trybu wstawiania lub zastępowania), aby wyczyścić podświetlanie z poprzedniego wyszukiwania, ale z perspektywy interfejsu użytkownika sprawia, że operacja jest tak prosta, jak to możliwe.
źródło
nmap <esc><esc> :noh<return> - to turn off search highlighting and nmap <esc>` :set hlsearch<return> - to turn on search highlighting
Używam następujących w moim
~/.vimrc
nnoremap <Leader><space> :noh<Enter>
Dzięki temu bardzo łatwo i szybko można wyczyścić bieżące wyróżnione wyszukiwanie. Mój klawisz lidera jest przypisany do mapy,
\
dzięki czemu operacja jest bardzo łatwa do wykonania za pomocą mojego prawego różowego palca i kciuka.źródło
Myślę, że miksowanie @ShaunBouckaert i Mar 19 '09 o 16:22 to dobry kompromis:
Naciśnij, Entera podświetlony tekst nie jest już podświetlony, a podświetlanie wyszukiwania jest nadal włączone.
źródło
możesz użyć : noremap, aby włączyć / wyłączyć wynik wyszukiwania, w ten sposób
:noremap <F3> :set hls! hls?<CR>
źródło
W oparciu o odpowiedź @ baruch-even, możesz usunąć wyszukiwane hasło po ESCdwukrotnym naciśnięciu w trybie normalnym za pomocą:
źródło
<esc>
działa dobrze w GUI vim, ale powoduje poważne problemy z klawiszami strzałek i innymi kluczami zakodowanymi w ESC podczas uruchamiania vima w terminalu. Nie należy umieszczać go w~/.vimrc
bez zawijania wif has('gui_running')
...end
. Zastanów się również nad dodaniem tego,<silent>
co pozwala uniknąć flashowania:noh
polecenia na pasku stanu.Też mi się nie podoba. Ciągłe wchodzenie w grę było dla mnie męczące
:nohl
... więc umieściłem w nim następujące mapowanie.vimrc
Pierwszy bit (
:nohl<cr>
) usuwa podświetlenie; drugi bit (:<backspace>
) to podstęp do wyczyszczenia linii poleceń. Wyszukiwanie jest nadal w tle, więc jeśli po prostu kliknieszn
, ponownie je podświetli i zabierze Cię do następnego wystąpienia.źródło
Dodałem to do mojego
vimrc
pliku.command! H let @/=""
Po zakończeniu wyszukiwania i chcesz usunąć zaznaczenia z wyszukiwania, po prostu zrób
:H
źródło
Alternatywnie możesz dodać mapowanie do pliku .vimrc jako,
a następnie możesz nacisnąć
w dowolnym momencie, aby usunąć podświetlony tekst
źródło