Gibt es eine Möglichkeit, die letzte visuelle Form anstelle der letzten tatsächlichen Auswahl ab der aktuellen Cursorposition erneut auszuwählen?

8

Ich weiß, dass gv die letzte visuelle Auswahl erneut auswählt. Das ist großartig und ich benutze es häufig.

Aber manchmal möchte ich etwas Ähnliches tun, aber etwas anderes: Wählen Sie von der aktuellen Cursorposition aus einen Block in der gleichen Form wie die vorherige visuelle Auswahl, aber dort , wo sich der Cursor jetzt befindet.

Insbesondere habe ich oft diesen Wunsch, wenn ich einen Textblock einfüge und ihn dann ersetzen oder transformieren möchte. Mit diesem Befehl konnte ich also erneut auswählen, was ich gerade eingefügt habe. (Aus diesem Grund wäre auch ein Befehl zum "visuellen Auswählen der letzten Einfügung" nützlich, aber es gibt dennoch andere Fälle, in denen ich buchstäblich "die letzte visuelle Form erneut auswählen möchte, unabhängig davon, ob die letzte Einfügung erneut ausgewählt wird". BEARBEITEN: Siehe gibt es eine Möglichkeit , den letzten eingefügten Text, anstatt die letzte aktuelle Auswahl erneut auswählen, an der aktuellen Cursorposition? für diese Frage )

(Hinweis: Wenn dies nicht integriert ist, kann ich ~ / .vim problemlos bearbeiten, um ein Vimscript-Beispiel hinzuzufügen [und möglicherweise zu ändern] und es an eine einfache Tastenkombination zu binden, aber eines von Grund auf neu zu schreiben dies zu tun, übersteigt meine derzeitige Fähigkeit.)

Philip
quelle
1
Sie könnten ein Makro machen ..
VanLaser
1
Dies ist eine gute Idee (ich nehme an, Sie meinen so etwas wie qpv [select ...] q [move ...] @ p "), aber es kommt nicht wirklich an das heran, was ich will, da ich es im normalen Gebrauch möchte Um im visuellen Modus zu arbeiten, "erkennen" Sie erst, dass ich die Auswahl nach dem Einfügevorgang erneut möchte. Ich suche nach ein paar Tastenanschlägen, um unter diesen Umständen zu helfen, obwohl ich zustimme, dass dies nützlich ist, wenn ich langsam genug arbeite, um vorauszusehen Die Region muss erneut ausgewählt werden
Philip
Tatsächlich gibt es einen anderen Fall, in dem dies nicht möglich ist: Einfügen von außerhalb von vim (z. B. über das * -Register). In diesem Fall sollte die Frage wie in Klammern lauten: Gibt es eine Bewegung, um die letzte Paste visuell auszuwählen? Dies ist beispielsweise zum Senden von Beispielcode von Stackexchange von vim an eine REPL nützlich.
Philip
Eigentlich bin ich mir nicht sicher, was Sie wollen - sich vor weiteren Änderungen an die "Koordinaten" der letzten Einfügung zu erinnern , um sie einfach wieder auszuwählen?
VanLaser

Antworten:

6

Dies ist eine einfache Neuzuordnung, mit der Sie den zuletzt eingefügten (oder geänderten) Text erneut auswählen können:

noremap gV `[v`]

Vielleicht möchten Sie aus den Kommentaren im ursprünglichen Beitrag die Koordinaten der letzten Änderung / Einfügung vor anderen / weiteren Änderungen speichern und diese visuelle Auswahl wiederherstellen ?

VanLaser
quelle
1
OK ja, dies getestet und es funktioniert; das ist toll. Das ist wirklich meine Schuld, weil ich zwei verwandte Fragen in einer gestellt habe. Ich denke, ich werde diese Frage so ändern, dass sie die ist, die Sie hier richtig beantwortet haben, und dann die zugehörige Frage als separate Frage erneut stellen, es sei denn, ein Mod hat eine bessere Idee.
Philip
Eigentlich wird diese Frage hier gestellt und beantwortet: vi.stackexchange.com/questions/31/… Entschuldigung - meine Schuld, dass ich ein Durcheinander gemacht habe.
Philip
4

Um die alte Form erneut auszuwählen, können Sie Folgendes tun:

1v
Andreas
quelle
1
Es wird nicht dieselbe Form, sondern dieselbe Anzahl von Zeichen erneut ausgewählt.
Muru
Getestet und es scheint auch mit den Vorbehalten @muru Notizen zu funktionieren. In den meisten Fällen bedeutet die erneute Auswahl nicht, dass eingefügter Text ausgewählt, sondern eine Auswahl neu erstellt wird. Wenn Sie den Cursor dann richtig positionieren, bedeutet dies, dass durch Auswahl der gleichen Anzahl von Zeichen dieselbe Form wiederhergestellt wird. ABER ich kann mir Ausnahmen vorstellen. Also immer noch neugierig auf einen alternativen Ansatz, der die Form dupliziert. Möglicherweise ist dies unter Umständen unmöglich, in denen Linien nicht die gleiche Länge haben.
Philip