Jak mogę zaznaczyć wszystkie wystąpienia wybranego słowa w GVim, jak w Notepad ++?
159
W trybie normalnym:
:set hlsearch
Następnie wyszukać wzór z komendy /
w trybie normalnym lub <Ctrl>o
następuje /
w trybie Insert. *
w trybie normalnym wyszuka następne wystąpienie słowa pod kursorem. Ta hlsearch
opcja podświetli je wszystkie, jeśli są ustawione. #
wyszuka poprzednie wystąpienie słowa.
Aby usunąć wyróżnienie poprzedniego wyszukiwania:
:nohlsearch
Możesz mapować :nohlsearch<CR>
do jakiegoś wygodnego klucza.
hlsearch
dużo przełączać, możesz chcieć mapować:set hlsearch!
zamiast:set nohlsearch
. Spowoduje to przełączenie ustawienia zamiast jego wyłączania.*
lub#
by<Ctrl>o
w trybie normalnym.:nohlsearch
możesz po prostu użyć:noh
.vimrc
:noremap <F4> :set hlsearch! hlsearch?<CR>
do przełączania między podświetleniem a usunięciem podświetlenia według<F4>
.*
Klucz zaprezentuje wszystkie wystąpienia tego słowa, które jest pod kursorem.źródło
&hlsearch
jest włączony.#
.Wiem, że to naprawdę stare pytanie, ale jeśli ktoś jest zainteresowany tą funkcją, może sprawdzić ten kod http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle
źródło
najprostszy sposób, wpisz w trybie normalnym
*
Mam też te mapowania do włączania i wyłączania
Wybierz słowo, klikając je
Bonus: CountWordFunction
Zaznaczanie wyrazów myszką i od razu liczenie wystąpień: OBS: Zauważ, że w tej wersji na końcu mamy komendę "CountWord"
źródło
nnoremap * *``cgn
innoremap # #``cgN
*
wpisaniu wyłączyć podświetlenie?:noh
lub:nohlsearch
nnoremap <silent> * :execute "normal! *N"<cr>
innoremap <silent> # :execute "normal! #n"<cr>
? Po prostu podświetlają słowo pod kursorem, ale nie przenoszą go do następnego wystąpienia.Rozwiązania oparte na wyszukiwaniu ( *, /...) przesuwają kursor, co może być niefortunne.
Alternatywą jest użycie rozszerzonej wtyczki mark.vim , a następnie uzupełnij,
.vimrc
aby podświetlić wyzwalacz dwukrotnym kliknięciem (nie wiem, w jaki sposób wybór klawiatury może wywołać polecenie):Pozwala na wiele wyróżnień, trwałości itp.
Aby usunąć wyróżnienie:
:Mark
(wyłącz do następnego wyboru):MarkClear
źródło
:set noincsearch
. Moim zdaniem jest to jedna z najbardziej irytujących funkcji Vima i jedna z pierwszych rzeczy, które wyłączam przy nowych instalacjach.*
bezwarunkowo przesunie kursor. I nie rozumiem, jakie toincsearch
może być irytujące, ponieważ jest to tylko „spojrzenie w przyszłość”, wykonywanie bieżącego wyszukiwania bez faktycznej zmiany pozycji.incsearch
uniemożliwi ruch, ale szybki test potwierdza, że masz rację. Przepraszam. Jednakże, jest to bardzo proste, aby utworzyć odwzorowanie który uniemożliwia ruch::nnoremap * *N
. Nie mogę uwierzyć, że nie denerwuje Cię to, że podczas wyszukiwania kursor przeskakuje po całym ekranie. Ale ... te rzeczy są całkowicie subiektywne. Vive la différence ;-):let @/='hilight_this'
, zakładając, że maszhlsearch
włączone. Podświetla tekst bez przeskakiwania i nie musisz zmieniać istniejących ustawień. Spowoduje to zmianę wartości, która jest obecnie przechowywana w rejestrze wyszukiwania.Najpierw (lub w twoim .vimrc):
Następnie umieść kursor nad słowem, które chcesz wyróżnić, i naciśnij
*
.hlsearch
oznacza podświetlenie wszystkich wystąpień bieżącego wyszukiwania i*
oznacza wyszukiwanie słowa pod kursorem.źródło
Najpierw upewnij się, że hlsearch jest włączone, wydając następujące polecenie
Możesz również dodać to do swojego pliku .vimrc jako zestaw
teraz, gdy używasz mechanizmu szybkiego wyszukiwania w trybie poleceń lub zwykłego polecenia wyszukiwania, wszystkie wyniki zostaną podświetlone. Aby przejść do przodu między wynikami, naciśnij „n”, aby przejść do tyłu, naciśnij „N”
W trybie normalnym, aby wykonać szybkie wyszukiwanie słowa pod kursorem i przeskoczyć do następnego wystąpienia jednym poleceniem, naciśnij '*', możesz również wyszukać słowo pod kursorem i przejść do poprzedniego wystąpienia, naciskając '# '
W trybie normalnym szybkie wyszukiwanie można również wywołać za pomocą rozszerzenia
aby usunąć podświetlenia przy użyciu zdarzeń, powiązałem to ze skrótem w moim .vimrc
źródło
Włącz wyróżnianie wyszukiwania:
Następnie wyszukaj słowo:
źródło
Moim ulubionym narzędziem do tego jest wtyczka mark.vim . Pozwala na jednoczesne wyróżnienie kilku słów w różnych kolorach.
Przykładowy zrzut ekranu
źródło
aby podświetlić słowo bez przesuwania kursora, plop
do twojego vimrc.
Fajne w tym jest
g*
ig#
nadal będzie działać jak „normalne”*
i#
.Aby ustawić
hlsearch
off, można użyć „short-form” (chyba że masz inną funkcję, która zaczyna się od „Noh” w trybie poleceń):noh
. Lub możesz użyć długiej wersji::nohlsearch
Dla maksymalnej wygody (przełączam się
hlsearch
może 20 razy dziennie), możesz zmapować coś do przełączania w następującyhlsearch
sposób:.:. jeśli tak
<leader>
jest \(domyślnie), możesz nacisnąć \st(szybko) w trybie normalnym , aby przełączyćhlsearch
.A może po prostu chcesz
:noh
zmapować:Powyższe działa po prostu
:nohlsearch
tak (w przeciwieństwie:set hlsearch!
), że nadal będzie podświetlać słowo po następnym naciśnięciu *lub #w trybie normalnym .Twoje zdrowie
źródło
może ?
źródło
Posługiwać się
autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Upewnij się, że
IncSearch
coś ustawiłeś. npcall s:Attr('IncSearch', 'reverse')
. Alternatywnie możesz użyć innej grupy podświetlenia w jej miejsce.Spowoduje to bezzwłoczne podświetlenie wszystkich wystąpień słów pod kursorem. Uważam, że opóźnienie spowalnia mnie, gdy przeglądam kod. Kolor podświetlenia będzie pasował do koloru słowa, więc pozostaje spójny z Twoim schematem.
źródło
Dlaczego nie tylko: z /
To podświetli bieżące słowo pod kursorem i wszystkie inne wystąpienia. I nie musisz wydawać osobnego polecenia dla każdego szukanego elementu. Może to nie jest dostępne w przeklętym gvimie? Domyślnie jest w Vimie.
* jest dobre tylko wtedy, gdy chcesz, aby kursor przeszedł do następnego wystąpienia. Podczas wizualnego porównywania dwóch rzeczy często nie chcesz, aby kursor się poruszał, i denerwujące jest naciskanie klawisza * za każdym razem.
źródło
~/.vimrc
pliku" highlight the searched items set hlsearch " F8 search for word under the cursor recursively , :copen , to close -> :ccl nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
:so%
W normalnym modelu przejdź przez słowo.
Naciśnij * Naciśnij klawisz F8, aby wyszukać rekurencyjnie poniżej całego projektu nad słowem
źródło
Na przykład te wtyczki:
https://github.com/rrethy/vim-illuminate
https://github.com/itchyny/vim-cursorword
Wystarczy wyszukać pod kursorem w vimawesome.com
Kluczem, jak wspomniano clagccs , jest to, że podświetlenie NIE koliduje z twoim wyszukiwaniem : https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
Zrzut ekranu pokazujący, jak NIE koliduje to z wyszukiwaniem: Uwagi:
źródło