Uwielbiam ustawienie „hlsearch”, ale po zakończeniu wyszukiwania uważam, że jest to okropne. Zwłaszcza jeśli szukam czegoś, co ma wiele dopasowań. Wiem, że mogę to wyłączyć
:set nohlsearch
Ale zajmuje to całe 16 naciśnięć klawiszy, a co bardziej denerwujące, muszę włączyć go ponownie podczas następnego wyszukiwania za pomocą
:set hlsearch
Czy istnieje sposób, w jaki hlsearch może automatycznie włączać się, gdy zaczynam wyszukiwanie, i wyłączać, gdy wyszukiwanie jest zakończone? Na przykład, jeśli wejdę w tryb wstawiania lub zmodyfikuję tekst, czy wyszukiwanie hl wyłączy się bez dodatkowych naciśnięć klawiszy?
/
lub?
, lub jeśli naciśnien
lubN
, włączy się bez konieczności naciskania kolejnych przycisków.:nno <BS> :set hls!\|set hls?<CR>
- jedna linia, jedno naciśnięcie klawisza, informacja zwrotna o stanie i nie próbuje odgadnąć, kiedy możesz chcieć wyróżnić. Czasami chcę wyróżnić pozostawione na ekranie podczas edycji. Czasami tego nie robię, np. Używam/
jako ruchu z operatorem.nnoremap <M-\> :set hlsearch!<CR><Bar>:echo 'hlsearch: ' . ['Off', 'On'][&hlsearch]<CR>
Odpowiedzi:
Jest o wiele wygodniejszy sposób. Zamiast używać
który faktycznie wyłącza ustawienie hlsearch, użyj
Spowoduje to wyłączenie hlsearch aż do ponownego wyszukiwania. Od
:help nohls
Jednak to rozwiązanie nie jest idealne, ponieważ
:nohls
po każdym wyszukiwaniu wciąż musisz wpisać, co jest uciążliwe. Można to obejść za pomocą mapowania, npAle jest jeszcze lepsze rozwiązanie! haya14busa / incsearch.vim . Jest to, przynajmniej moim zdaniem, niezbędna wtyczka vim. Główną cechą jest to, że wszystkie dopasowania wyszukiwania są podświetlane w czasie rzeczywistym podczas pisania wyrażenia regularnego. Na przykład:
Jednak dodatkową funkcją, która jest również dostępna, jest opcja natychmiastowego włączania i wyłączania hlsearch po uruchomieniu / zatrzymaniu wyszukiwania. Aby włączyć tę funkcję, musisz dodać
do twojego
.vimrc
.Jeśli masz jakieś inne
n
mapowania, musisz je wyłączyć. Na przykład kiedyś miałemTe dwa mapowania nie są ze sobą kompatybilne!
źródło
set hlsearch
. Jeśli masz to zdefiniowanevimrc
, nadpisze to za:noh
każdym razem, gdy je pozyskaszvimrc
. Aby to rozwiązać, mamif !&hlsearch | set hlsearch | endif
w sobievimrc
. (I to kolejny problem, który rozwiązuje wtyczka.)vim-cool to prosta wtyczka, która właśnie to robi.
Działa bez manipulowanie przy użyciu
CursorMoved
iInsertEnter
autokomend.źródło
Używam
<Leader><Enter>
jako skrótu do:noh
. (Mój lider jest,
, więc jest bardzo blisko)Spowoduje to wyłączenie wyróżnień do następnego wyszukiwania.
źródło
Jak już zauważyłeś we własnej odpowiedzi , o wiele bardziej efektywne jest wyłączenie wyróżniania za pomocą
:nohlsearch
polecenia (które można skrócić:noh
) zamiast wyłączania całej funkcji, a następnie włączania jej ponownie przy następnym wyszukiwaniu.Jeśli chcesz wyłączyć podświetlanie za każdym razem,
i
gdy wchodzisz w tryb wstawiania, możesz utworzyć proste mapowanie, aby to zrobić:Pozostawia to czytelnikowi ćwiczenie do tworzenia podobnych odwzorowań dla innych poleceń, w których chcą wyłączyć podświetlanie.
źródło
Może to zabrzmieć głupio lub naiwnie, ale to, co robię, gdy chcę zatrzymać podświetlanie, to szukam losowego ciągu, który (praktycznie na pewno) nie jest obecny w dokumencie. Coś takiego:
To prawda, że wymaga kilku naciśnięć klawiszy, ale są one naprawdę losowe, więc można je pisać w mgnieniu oka.
źródło
n
iN
już nie działa, a także rzeczy takie jak:%s//something
lub:g//something
.Przekonałem się, że bardziej intuicyjne jest odwzorowanie Ctrl- Lodmalowanie obejmuje
:nohls
:źródło
:help
sekcje!Używam
<Leader><Enter>
jako skrótu do:hls
mojego lidera i ustawiam go jako spację.Po wyszukaniu element zostanie podświetlony, aby go wyłączyć, naciśnij
<Space><Esc>
. A jeśli zdecydujesz, że chcesz ponownie wyświetlić wyniki wyszukiwania, naciśnij<Space><Esc>
. Tehls!
środki wiążące map ten przycisk, aby włączyć ustawieniehls
(skrótemhlsearch
, czyli wynik wyszukiwania podświetlanie) (tak!
przełącza prawo ustawienie przed nią).źródło
Dodaj to makro do swojego .vimrc
Umożliwi to przełączanie hilightingu za pomocą #h
źródło