2010-09-13 30 views
45

J'ai trouvé plusieurs réponses sur comment indenter plusieurs lignes dans vim, je veux savoir comment prendre une seule ligne et la mettre en retrait plus d'une fois. En effet, je veux une version plus courte de la commande suivante: « >>>>>>>>>> » (. C'est 10 Parenthèse droite « supérieur à » signes)Comment est-ce que je indent une ligne plusieurs fois dans vi ou vim?

+10

bien, vous pouvez utiliser '.' pour répéter la dernière commande, la raccourcir à' >> .... ' – meagar

+0

Vous pouvez également appuyer sur' : >>>>> ' – meagar

Répondre

69

Sélectionnez ce que vous voulez (généralement avec v ou Shift + v), puis tapez 5>. Si vous devez corriger ou répéter la même sélection, utilisez gv.

+6

Pourquoi shift + v? v seul fonctionnera bien. – strager

+10

Juste une question de préférence, j'aime voir toute la ligne sélectionnée. – ldog

11

Vous pouvez sélectionner la ligne en cours en appuyant sur v, puis tapez 5> indenter la ligne courante 5 fois, l'équivalent de 10 fois en appuyant sur >.

+2

La ligne courante est 'V', pas' v' – Daenyth

+6

Daenyth a raison, mais c'est discutable. Vous devez seulement être en mode visuel; que la sélection de ligne ou non est sans importance dans ce cas. – Jay

8

Indenter une fois l'utilisation. pour refaire la commande précédente ou pour l'annuler.

9

L'une des réponses à "How do I indent multiple lines quickly in vi" m'a montré une astuce pour remapper > en mode visuel pour resélectionner le mode visuel. Dans votre .vimrc ...

vnoremap < <gv 
vnoremap > >gv 

Puis je sélectionne simplement la ligne (ou lignes) que vous souhaitez mettre en retrait et appuyez sur la direction appropriée autant de fois que vous le souhaitez.

+0

C'est une belle astuce si vous faites tout en mode visuel, et j'aime voir la sélection par la suite, mais j'aime bien l'utiliser. après la modification initiale, qui est seulement en mode normal. J'ajoute ceci à mon .vimrc mais en les mappant à et à la place. – Pif

0

De vim aide: :help >

Pour déplacer une ligne de plusieurs « shiftwidth, utiliser le mode visuel ou les commandes:.

Par exemple:

Vjj4>   move three lines 4 indents to the right 
    :<<<   move current line 3 indents to the left 
    :>> 5   move 5 lines 2 indents to the right 
    :5>>   move line 5 2 indents to the right 

Ou tout simplement, >> et répétez la commande avec . en mode normal.