Mam set hlsearch
w sobie ~/.vimrc
. Jest to zwykle bardzo przydatne, ale denerwujące jest to, że muszę to zrobić :noh
po tym, jak wykonam zamianę '<,'>s/$/',/
(co podkreśla koniec każdej linii po jej uruchomieniu). Jak mogę vim
nie wyróżniać po takiej wymianie?
Jestem na Ubuntu 9.04 z vim
7.2. Mam ten sam problem na OS X 10.6 (także vim
7.2). Pożądane byłoby coś, co działałoby na obu.
AKTUALIZACJA: Wszystkie odpowiedzi, które otrzymałem, po prostu dodają mapowanie klawiszy do zrobienia :noh
(lub równoważne). Naprawdę staram się unikać niestandardowych kluczowych zachowań, do których naprawdę się przyzwyczaiłem, ale potem doprowadzam mnie do żałości bez nich (np. Na komputerze znajomego itp.). Chciałbym vim
zrobić to automatycznie :noh
po dokonaniu wymiany. To znaczy, chcę tylko hlsearch
przy użyciu /
lub *
(może kilka innych przypadków), ale nie innym razem.
Mam dwa różne rozwiązania, oba całkiem niezłe, każde o zróżnicowanym zachowaniu. Moim ulubionym jest opcja 2:
Mam następujące 2 wiersze w moim .vimrc:
Pierwszy czeka na przekroczenie limitu czasu (nie można go skonfigurować), jeśli kursor się nie porusza i wyłącza hlsearch. Drugi włącza go ponownie, jeśli kursor ponownie się poruszy.
To nie jest idealne rozwiązanie, ale działa dla mnie (i będzie prawie idealne, gdy limit czasu można skonfigurować - na razie limit czasu jest powiązany z wbudowanym timerem dla vima.)
Lub możesz wypróbować następujące linie:
To wyłącza hlsearch po krótkim czasie braku ruchu kursora i włącza go ponownie dla standardowych poleceń wyszukiwania. Nie obejmuje wszystkich możliwości ponownego włączenia hlsearch, ale wystarcza jako starter do potwierdzenia koncepcji.
źródło
V
nie działaautocmd cursorhold * set nohlsearch | let @/ = ""
Spowoduje to wyczyszczenie rejestru wyszukiwania oraz usunięcie wyróżnienia. Nie spędziłem dużo czasu z tym zestawem, ale chciałem go udostępnić tym, którzy tu trafią.Po prostu wpisuję „/ asdf” (zakładając, że „asdf” nie ma w pliku), aby pozbyć się podświetlania. Wiem, że to dość uproszczone, ale działa dla mnie.
źródło
:noh
, ale nie zawsze działa. :) Zabawne, że o tym wspominasz: kiedyś miałem przyjaciela, który zawsze wpisywał swoje imię, ponieważ pojawiało się rzadziej niż coś takiego jak „asdf” w tym, co napisał. (Myślę, że to trochę zabawne.)Umieść następujące dane w pliku .vimrc:
To po cichu ukryje podświetlony wyszukiwany termin, ale nie wyłącza tej
:set hlsearch
funkcji. Aktywuje się ponownie przy następnym wyszukiwaniu.źródło
Inną możliwością jest zresetowanie
@/
rejestru (który w rzeczywistości jest rejestrem do odczytu i zapisu) po wykonaniu podstawienia. To przywraca poprzednią atrakcję:Jednak nadal ma to kilka problemów:
- zamiast modyfikować
:s
, definiuje nowe polecenie. Choć możliwe jest użyciecabbrev
do map:s
do:S
wiem, nie sposób złapać wszystkie konstrukcje, takie jak:<range>s
.- jeśli
:nohl
wcześniej używałeś do ukrywania tylko jednego wyszukiwania, spowoduje to ponowne podświetlenie poprzedniego wyszukiwania. Nie wiem, jak sprawdzić, czy:nohl
został wcześniej wywołany. (Możliwe, że można to obejść i również zastąpić:nohl
polecenie, ale wymagałoby to również zastąpienia wszystkich poleceń wyszukiwania, co może być za dużo ...).źródło