web-dev-qa-db-fra.com

Mettre en retrait plusieurs lignes avec VIM?

Par exemple, je modifie ce code:

<html>
<body>
<script>
    var a = 10;
    a += 100;
</script>
</body>
</html>

maintenant je dois mettre en retrait la ligne de script:

<html>
<body>
    <script>
        var a = 10;
        a += 100;
    </script>
</body>
</html>

Comment pourrais-je faire cela sans déplacer le curseur au début de chaque ligne et appuyer sur Tab?

51
wong2

Appuyez sur V pour passer en mode VISUAL LINE et mettez en surbrillance les lignes à mettre en retrait en appuyant sur j. Puis appuyez > pour les mettre en retrait. La commande complète serait donc Vjjj>.

Vous pouvez également placer votre curseur sur le <script> étiqueter et utiliser 4>> pour mettre quatre lignes en retrait.

82
dogbane

Pour compléter la réponse ci-dessus, jetez un œil ici. https://stackoverflow.com/questions/235839/how-do-i-indent-multiple-lines-quickly-in-vi

Il y a plus d'une façon de le faire, et je ne peux pas espérer rivaliser avec la documentation déjà fournie.

Mon préféré est == au retrait automatique. 5== pour indenter automatiquement 5 lignes.

17
user606723

Pour mettre en retrait toutes les lignes sous la ligne actuelle

=G

Ainsi, pour mettre en retrait le fichier entier, allez au début du fichier (gg), puis mettez en retrait toutes les lignes sous la ligne actuelle (=G)

gg=G

Pour mettre en retrait la ligne actuelle

==

Donc, pour mettre en retrait n lignes sous la ligne courante

n==

Par exemple, pour mettre en retrait 4 lignes sous la ligne actuelle

4==

Ce sont les commandes les plus simples pour mettre en retrait plusieurs lignes.

11
Sagar Jain

Si c'était moi, je remarquerais qu'il y a 4 lignes à mettre en retrait, positionnez-vous sur la ligne supérieure puis tapez >4>. S'il y avait trop de lignes pour compter, je me positionnerais sur la ligne supérieure et taper mk pour faire une marque nommée k, puis positionner sur la ligne inférieure (qui pourrait être à plusieurs écrans) et taper >'k

9
Michael Dillon

Voici une bonne approche, si vous essayez de mettre en retrait un grand nombre de lignes:

:/<script>/,/<\/script>/ >>
4
bhinesley