Zazwyczaj szukam słów według :/string
, ale jeśli muszę przeszukać całą bieżącą linię, jak to zrobić.
event: 1 beacon: 0x02 //line 1
event: 19 beacon: 0x02 //line 2
event: 1 beacon: 0x03 //line 3
event: 1 beacon: 0x02 //line 4
event: 8 beacon: 0x01 //line 5
event: 19 beacon: 0x02 //line 6
event: 1 beacon: 0x02 //line 7
Na przykład, jeśli cursor
obecnie jest w line 1
wyszukiwaniu podobnie jak w :/
przypadku tekstu zawierającego całą bieżącą linię. Kursor powinien przejść następnie do pasowania line 4
i ponownie doline 7
command-line
search
highlight
delimiter-matching
mark
manav mn
źródło
źródło
nnoremap {key} 0y$/\V<c-r>"<cr>
Szczególnie do celów mapowania uważam, że używanie
getline()
bardziej eleganckie niż samodzielne szarpanie. Wywołaniegetline()
za pomocą łańcucha'.'
zwraca linię pod kursorem. Istnieją dwie dobre opcje korzystania z tego:który analizuje ciągi
'/'
i to, co jest zwracanegetline()
razem, i wykonuje to jako polecenie vim.lub
który używa rejestru wyrażeń
@=
. Wyrażenie następujące=
jest oceniane po pierwszym<CR>
i umieszczane w wierszu poleceń.źródło
/
lub'
nie działa zbyt dobrze. W każdym razie dzisiaj się czegoś uczę! DziękujęOsobiście dostałbym wtyczkę z gwiazdą wizualną ( jest ich niewiele ). Jest na ten temat przyjemny Vimcast: Wyszukaj zaznaczony tekst . Oznacza to, że możesz wizualnie wybrać linię, a następnie nacisnąć
*
.Jeśli wtyczka nie jest twoją rzeczą, możesz dodać następujące mapowanie do swojego
vimrc
:Uwaga: Visual-block (
<c-v>
) nie jest obsługiwany dla tego mapowania.źródło
*
trybu normalnego lub nie masz poprawnie zainstalowanego mapowania.Wszystkie istniejące odpowiedzi kończą się niepowodzeniem, jeśli twoja linia zawiera pewne elementy, które są interpretowane jako część wzorca.
\V
Punkt dostaje większość drogi tam, ale nadal bałagan z odwrotnym ukośnikiem.Spróbuj tego, aby uciec przed odwrotnym ukośnikiem ...
A jeśli używasz go do mapowania, będziesz potrzebować jednego lub dwóch
<Enter>
na końcu, w zależności od tego, jak chcesz, aby działał.źródło
escape(…, '/\')
Po zainstalowaniu vim-gwiazdka wystarczy użyć
V$*
(lub0v$*
), aby wybrać bieżącą linię i wyszukać ją.W drugim poleceniu
0
nie jest konieczne, jeśli kursor znajduje się już na początku linii.źródło
*
szuka tylko słowa pod kursorem, a nie bieżącego wyboru wizualnego?Jeszcze jednym sposobem na to jest użycie okna wiersza poleceń:
yy/<Ctrl-F>p<Enter>
yy
/
a następnie Ctrl-F, aby otworzyć okno wiersza poleceniap
aby wkleić linięźródło
q/
tego samego efektu, co/<c-f>
http://vim.wikia.com/wiki/Searching_for_expressions_which_include_slashes wskazuje, że rejestr wyszukiwania można ustawić bezpośrednio, w następujący sposób:
Umożliwia to wyszukiwanie w wierszu i działa nawet wtedy, gdy wiersz zawiera ukośniki.
Aby wykonać, powiedzmy,
\*
mapę do wyszukiwania linii:źródło