Normalerweise suche ich nach Wörtern nach :/string
, aber wenn ich die gesamte aktuelle Zeile durchsuchen muss, wie geht das?
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
Zum Beispiel, wenn cursor
es derzeit line 1
darum geht, ähnlich wie :/
nach Text zu suchen, der die gesamte aktuelle Zeile enthält. Der Cursor sollte dann zum Matching line 4
und wieder zum springenline 7
command-line
search
highlight
delimiter-matching
mark
manav mn
quelle
quelle
nnoremap {key} 0y$/\V<c-r>"<cr>
Besonders für Mapping-Zwecke finde ich die Verwendung
getline()
eleganter als das Ziehen selbst. Wenn Siegetline()
mit einer Zeichenfolge'.'
aufrufen, wird die Zeile unter dem Cursor zurückgegeben. Es gibt zwei gute Möglichkeiten, dies zu verwenden:Das analysiert die Zeichenfolgen
'/'
und was vongetline()
zusammen zurückgegeben wird und führt dies als vim-Befehl aus.oder
welches das Ausdrucksregister verwendet
@=
. Der folgende Ausdruck=
wird nach dem ersten ausgewertet<CR>
und in die Befehlszeile eingefügt.quelle
/
oder'
nicht sehr gut funktioniert. Jedenfalls lerne ich heute etwas! Vielen DankPersönlich würde ich ein Visual Star Plugin bekommen ( es gibt nur wenige da draußen ). Dazu gibt es einen schönen Vimcast: Suche nach dem ausgewählten Text . Dies bedeutet, dass Sie die Linie visuell auswählen und dann drücken können
*
.Wenn ein Plugin nicht Ihr Ding ist, können Sie Ihrem Mapping die folgende Zuordnung hinzufügen
vimrc
:Hinweis: Visual-block (
<c-v>
) wird für diese Zuordnung nicht unterstützt.quelle
*
gehe ich davon aus, dass Sie es aus dem normalen Modus verwenden oder das Mapping nicht richtig installiert haben.Die vorhandenen Antworten schlagen alle fehl, wenn Ihre Zeile bestimmte Elemente enthält, die als Teil eines Musters interpretiert werden. Der
\V
Punkt kommt den größten Teil des Weges dorthin, bringt aber immer noch den Backslash durcheinander.Versuchen Sie dies, um den Backslashes zu entkommen ...
Und wenn Sie es in einem Mapping verwenden, benötigen Sie
<Enter>
am Ende ein oder zwei Sekunden, je nachdem, wie es funktionieren soll.quelle
escape(…, '/\')
Mit vim-Sterne gerade installiert verwenden
V$*
(oder0v$*
) die aktuelle Zeile zu wählen und danach suchen.Im zweiten Befehl
0
ist dies nicht erforderlich, wenn sich der Cursor bereits am Zeilenanfang befindet.quelle
*
Sucht nicht nur nach dem Wort unter dem Cursor und nicht nach der aktuellen visuellen Auswahl?Eine weitere Möglichkeit, dies zu tun, ist die Verwendung des Befehlszeilenfensters:
yy/<Ctrl-F>p<Enter>
yy
/
und dann Strg-F, um das Befehlszeilenfenster zu öffnenp
zum Einfügen der Zeilequelle
q/
, um den gleichen Effekt zu erzielen wie/<c-f>
http://vim.wikia.com/wiki/Searching_for_expressions_which_include_slashes weist darauf hin, dass das Suchregister wie folgt direkt eingestellt werden kann:
Dies ermöglicht die Suche in der Zeile und funktioniert auch dann, wenn die Zeile Schrägstriche enthält.
So erstellen Sie beispielsweise eine
\*
Zuordnung zu einer Liniensuche:quelle