Wie können Sie> <einrücken, ohne den visuellen Modus zu verlassen und Ihre aktuelle Auswahl zu verlieren?

16

Ich muss oft manuell einrücken, aber wenn ich in einen visuellen Modus wechsle, wähle ich die Zeilen aus, die eingerückt werden sollen, und drücke <oder >. Ich verlasse den visuellen Modus, ob ich will oder nicht.

Ich möchte es lieber haben, damit ich im visuellen Modus bleibe und meine Auswahl und Cursorposition intakt halte.

Wie kann ich das erreichen?

Akiva
quelle
1
Gibt es eine Chance, dass ein Remapping den Trick macht? So etwas wie :vmap < <a?
Feffe

Antworten:

19

Ich habe dies in meinem vimrc:

"keep visual mode after indent
vnoremap > >gv
vnoremap < <gv

Beachten Sie, dass Sie auch einfach .(Punkt) verwenden können, um die letzte Einrückaktion zu wiederholen.

VanLaser
quelle
Fast perfekt, außer dass sich mein Cursor nicht mit der Reihe bewegt.
Akiva
1
@Akiva Vielleicht möchten Sie ^am Ende dieser Zuordnung eine hinzufügen ? dh >gv^?
Martin Tournoij
2
Der Cursor scheint sich abhängig von seiner Position in Bezug auf den eingerückten Text zu bewegen (oder nicht). Mir ist nicht klar, wo der Cursor bleiben soll: bei derselben Spaltennummer oder auf demselben Zeichen? Auch wissen Sie , dass Sie immer noch die Cursor zB mit bewegen j, k, letc. , während in visuellem Modus?
VanLaser
2
Ehrlich gesagt, ich habe gerade <Right>Und <Left>nach den Befehlen, und das hat gut funktioniert.
Akiva
9

Ich weiß, dass dies keine automatische Lösung ist, aber Sie können dies erreichen, indem Sie gvnach dem visuellen Einzug arbeiten.

Dies wechselt in den visuellen Modus, wobei die vorherige Auswahl ausgewählt ist und sich der Cursor in der letzten Zeile befindet. Siehe :h gvfür weitere Informationen.

Tumbler41
quelle
-2

Ich habe versucht, die folgende Zuordnung zu meinem vimrc hinzuzufügen:

vmap < <a
vmap > >a

Es scheint interessante Ergebnisse zu haben, vielleicht ist es das, wonach Sie suchen?

Feffe
quelle