Ich benutze vim schon seit einiger Zeit und bin mir bewusst, dass das Auswählen von Textblöcken im visuellen Modus so einfach wie SHIFT+ ist Vund die Pfeiltaste Zeile für Zeile nach oben oder unten bewegt, bis ich das Ende des Textblocks erreiche, den ich habe wollen ausgewählt werden.
Meine Frage ist: Gibt es im visuellen Modus eine schnellere Möglichkeit, einen Textblock auszuwählen, z. B. durch SHIFT+, Vgefolgt von der Angabe der Zeilennummer, in der die Auswahl gestoppt werden soll? (über :35
zum Beispiel, wobei 35 die Zeilennummer ist, bis zu der ich auswählen möchte - dies funktioniert offensichtlich nicht, daher ist meine Frage, wie etwas Ähnliches getan werden kann ...)
v%
oderv/pattern
sonst , oder was?V35G
wählt visuell von der aktuellen Zeile zur Zeile 35 ausV10j
oderV10k
wählt auch visuell die nächsten oder vorherigen 10 Zeilen ausnnoremap <Space> V
. Im visuellen Linienmodus klicken Sie einfach mit der rechten Maustaste, um die Auswahl zu definieren (zumindest unter Linux ist dies so). Auf jeden Fall effektiver als nur mit der Tastatur.Antworten:
Zusätzlich zu den Aussagen anderer können Sie Ihre Auswahl auch mithilfe der Mustersuche erweitern.
Wählen Sie beispielsweise v/foovon Ihrer aktuellen Position zur nächsten Instanz von "foo". Wenn Sie tatsächlich auf die nächste Instanz von "foo" erweitern möchten, z. B. in Zeile 35, drücken Sie einfach n, um die Auswahl auf die nächste Instanz zu erweitern, und so weiter.
aktualisieren
Ich mache das nicht oft, aber ich weiß, dass manche Leute häufig Markierungen verwenden, um visuelle Auswahlen zu treffen. Wenn ich mich beispielsweise in Zeile 5 befinde und Zeile 35 auswählen möchte, drücke ich möglicherweise ma, um die Markierung
a
in Zeile 5 zu platzieren, um dann :35in Zeile 35 zu wechseln. Shift+ v, Um in den zeilenweisen visuellen Modus zu wechseln und schließlich `azurück zur Markierung auszuwählena
.quelle
v/foo/e
. Dase
steht für "Ende" des übereinstimmenden Musters.v
i
w
. Wenn Sie das aktuelle zusammenhängende Nicht-Leerzeichen auswählen möchten, verwenden Siev
i
Shift
+w
. Der Unterschied wäre, wenn das Caret hier istMyCla|ss.Method
, würde die erste Kombination auswählenMyClass
und die zweite würde das Ganze auswählen.v i w s
"effektiv" einen "Ersetzungs" -Vorgang ausführen können.V35G erreicht, was Sie wollen
quelle
Vim ist eine Sprache. Um Vim wirklich zu verstehen, muss man die Sprache kennen. Viele Befehle sind Verben, und vim hat auch Objekte und Präpositionen.
Dies bedeutet "Wählen Sie die aktuelle Zeile bis einschließlich Zeile 100 aus."
In Textobjekten liegt ein Großteil der Leistung. Sie führen mehr Objekte mit Präpositionen ein.
Dies bedeutet "um den aktuellen Absatz herum auswählen", dh den aktuellen Absatz und die darauf folgende leere Zeile auswählen.
Dies bedeutet "Wählen Sie um den aktuellen Absatz und den nächsten Absatz herum."
Dies bedeutet "Gehen Sie zum Ende des aktuellen Absatzes und wählen Sie ihn und den vorhergehenden Absatz visuell aus."
Wenn Sie Vim als Sprache verstehen, können Sie die bestmögliche Kilometerleistung erzielen.
Nachdem Sie nach unten gewählt haben, können Sie mit anderen Befehlen kombinieren:
Mit dem obigen Befehl können Sie einen Absatz auswählen und löschen. Ändern Sie das
d
zu einemy
zu kopieren oder zu einemc
zu ändern oder zu einemp
zu überfügen.Sobald Sie wissen, wie all diese Befehle zusammenarbeiten, müssen Sie möglicherweise nichts mehr visuell auswählen. Anstatt einen Absatz visuell auszuwählen und dann zu löschen, können Sie den Absatz einfach mit dem
dap
Befehl löschen .quelle
v35G
wählt alles vom Cursor bis zur Zeile 35 aus.v
versetzt Sie in den Auswahlmodus und35
gibt die Zeilennummer an, zu der Sie wechseln möchtenG
.Sie können auch verwenden
v}
, um alles bis zum Anfang des nächsten Absatzes auszuwählen.quelle
Zur Auswahl der Zeilenanzahl:
Shift + V 9j - 10 Zeilen auswählen
quelle
:set rnu
Shift+V n j
oderShift+V n k
Dies wählt die aktuelle Zeile und die nächste / vorherige
n
Zeile aus. Ich finde es sehr nützlich.quelle
v 35 j
Text für mindestens 30 Zeichen hinzugefügt
quelle
v%
wählt den gesamten Block aus.
Spielen Sie auch mit:
v}
,vp
,vs
Etc.Siehe Hilfe:
:help text-objects
Hier werden die verschiedenen Möglichkeiten zum Auswählen von Buchstaben, Wörtern, Sätzen, Absätzen, Blöcken usw. aufgelistet.
quelle
Textobjekte: http://vim.wikia.com/wiki/Creating_new_text_objects
http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects
quelle
Sie können drücken
vi}
, um den Block in{}
Klammern auszuwählen, in dem sich Ihr Cursor gerade befindet.Es spielt keine Rolle, wo Sie sich in diesem Block befinden (stellen Sie nur sicher, dass Sie sich im äußersten befinden). Sie können auch zu allem wechseln
{
, das ein Paar wie)
oder hat]
.quelle
Sie können immer nur vorangegangene Zahlen verwenden, um Aktionen zu wiederholen:
quelle
einfach nur drücken Shift v line number gg
Beispiel: Ihre aktuelle Zeile zu Zeile 41 Drücken Sie einfach Shift v 41 gg
quelle
} bedeutet, den Cursor zum nächsten Absatz zu bewegen. Verwenden Sie also
v}
, um den gesamten Absatz auszuwählen.quelle
So wählen Sie alle visuell aus: Geben Sie Esc ein, um sicherzustellen, dass Sie sich im normalen Modus befinden
Geben Sie ENTER ein, um zum Dateianfang zu gelangen
quelle
gg
im normalen Modus auch zur ersten Zeile wechseln.Es könnte nützlich sein zu wissen:
Um beispielsweise die gleiche Anzahl von Zeilen auszuwählen,
1v
sollten Sie einige Änderungen vorgenommen haben, um sie1v
blockweise oder zeilenweise verwenden zu können.Heute habe ich diesen erstaunlichen Tipp von hier aus gesehen :
Sie können auch die visuellen Blockgrenzen zurücksetzen, indem Sie Folgendes tun:
quelle
Ich benutze dies mit Falz im Einrückungsmodus:
v Öffnen Sie den visuellen Modus an einer beliebigen Stelle im Block
zaza zweimal googeln
quelle