Comment indenter> <sans quitter le mode visuel et perdre votre sélection actuelle?

16

Je dois souvent mettre en retrait manuellement, mais lorsque j'entre dans un mode visuel, sélectionne mes lignes à mettre en retrait et appuie sur <ou >, je quitte le mode visuel si je le veux ou non.

Je préfère l'avoir pour que je reste en mode visuel et que ma sélection et la position du curseur restent intactes.

Comment puis-je atteindre cet objectif?

Akiva
la source
1
Y a-t-il une chance qu'un remappage fasse l'affaire? Quelque chose comme ça :vmap < <a?
Feffe

Réponses:

19

J'ai ceci dans mon vimrc:

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

Notez que vous pouvez également simplement utiliser .(point) pour répéter la dernière action de retrait.

VanLaser
la source
Presque parfait, sauf que mon curseur ne bouge pas avec la ligne.
Akiva
1
@Akiva Peut-être voulez-vous ajouter un ^à la fin de ce mappage? c'est à dire >gv^?
Martin Tournoij
2
Le curseur semble se déplacer (ou non) en fonction de sa position par rapport au texte en retrait. Il n'est pas clair pour moi où voulez-vous que le curseur reste: au même numéro de colonne, ou sur le même caractère? Aussi, vous savez que vous pouvez toujours déplacer le curseur par exemple avec j, k, letc. , tout en mode visuel?
VanLaser
2
Honnêtement, je viens de mettre <Right>Et <Left>après les commandes, et ça a bien marché.
Akiva
9

Je sais que ce n'est pas une solution automatique, mais vous pouvez y parvenir en utilisant gvaprès le retrait visuel.

Cela passera en mode visuel avec la sélection précédente sélectionnée et votre curseur sur la dernière ligne. Voir :h gvpour plus d'informations.

Tumbler41
la source
-2

J'ai essayé d'ajouter le mappage suivant à mon vimrc:

vmap < <a
vmap > >a

Cela semble avoir des résultats intéressants, c'est peut-être ce que vous cherchez?

Feffe
la source