Mit Vim starre ich manchmal eine Weile auf einen Abschnitt des Quellcodes und möchte plötzlich, dass eine Variable auf dem Bildschirm herausspringt. Das ist einfach: /<var>
das hebt sie alle hervor. Mein Problem ist, dass die Suche häufig mein Fenster verschiebt, sodass ich den Quellcode nicht von derselben Stelle aus betrachte. Selbst wenn es nur um ein paar Zeilen verschoben ist, stört es mich immer noch, da ich einige Sekunden brauchen muss, um herauszufinden, wohin sich die Dinge bewegt haben.
Ist es möglich, einen Suchbegriff hervorzuheben, ohne den Cursor auf die nächste Übereinstimmung zu bewegen?
vim
search
highlighting
Andrew Wood
quelle
quelle
Antworten:
http://vim.wikia.com/wiki/VimTip1572
Wenn Sie dieses Plugin verwendet haben, können Sie die Funktionalität einfach aktivieren
\ m
Verwenden Sie dann eine NumPad-Taste, um diesem Wort überall eine Farbe zuzuweisen, ohne den Cursor zu bewegen.
1
Sie können viele verschiedene Markierungen gleichzeitig für viele verschiedene Wörter oder komplexere Suchmuster verwenden, wenn Sie dies wünschen.
quelle
Die Antwort von skyblue zeigt den Kern der Idee, wie die normale Suchhervorhebung verwendet werden kann, um das zu erreichen, was Sie wollen.
Ich habe diese Technik erweitert, indem ich eine Tastenkombination erstellt habe, die ähnlich wie der
*
Befehl funktioniert , ohne jedoch zum nächsten Spiel zu wechseln.Mein Dank geht an Garyjohn , der auf das
expand()
Äquivalent zur Wortauswahl hingewiesen hat*
(um zu vermeiden, dass er sich*
selbst verwendet und die Ansicht wiederherstellt). Dies vereinfacht den Code so weit, dass er direkt in die Zuordnung aufgenommen werden kann (ohne Verwendung einer Funktion). Ich habe auch eine Zuordnung hinzugefügt, die Teilwörtern (wieg*
) entspricht.quelle
normal *
durch den Ersatzlet @/ = @/
mitlet @/ = expand("<cword>")
.*
, aber<cword>
ist es das?Sie können das Suchregister auch auf die Variable einstellen, mit der Sie übereinstimmen möchten.
Stellen Sie zunächst sicher, dass die Suchhervorhebung aktiviert ist:
Dann können Sie das Suchregister einstellen mit:
Dadurch werden alle Vorkommen von Variablen hervorgehoben, ohne zum nächsten Spiel zu springen.
Weitere Informationen finden Sie unter
:help @/
quelle
Eine Möglichkeit besteht darin, den
:match
Befehl zu verwenden, z.Dadurch wird das Wort unter dem Cursor mithilfe der Frage-Hervorhebungsgruppe hervorgehoben. Ich benutze oft die Fragengruppe, weil es auf meinem Terminal ein schönes Grün ist. Führen Sie aus, um die verfügbaren Markierungsgruppen anzuzeigen
Die
^R
und^W
sind Strg-R bzw. Strg-W und werden durch das Wort unter dem Cursor ersetzt. Sehenfür mehr dazu. Sehen
für mehr auf dem
:match
Befehl. Um diese Hervorhebung zu löschen, führen Sie einfach ausohne Argumente.
quelle
Zusätzlich zu:
Du möchtest vielleicht:
quelle
Ähnlich wie
*
wir haben:Ein Blick lohnt sich
:h [I
. Dort finden wir einige interessante Dinge, die mit Ihren Bedürfnissen zusammenhängen.Es gibt eine ähnliche Frage zum Stapelüberlauf, bei der ich meine Antwort stelle (etwas vollständiger).
quelle