Mettre plusieurs lignes en retrait avec VIM?


42

Par exemple, j'édite ce code:

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

maintenant, j'ai besoin d'indenter 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?


En mode de commande:gg=G
Prince John Wesley le

Réponses:


72

Appuyez sur Vpour basculer en mode VISUAL LINE et mettez en surbrillance les lignes que vous souhaitez mettre en retrait en appuyant sur j. Puis appuyez sur >pour les mettre en retrait. Donc, la commande complète serait Vjjj>.

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


1
De même, lors de la modification de plusieurs niveaux de retrait,. est extrêmement utile (le même bloc sera déplacé, que ce soit avec un visuel, des marques ou un [nombre] comme ci-dessus 4 >>).
Pif

De plus, si votre fichier de syntaxe peut effectuer une correspondance de balise, vous pouvez placer votre curseur sur le mot "script" et appuyer sur v pour le mode visuel,% pour accéder à la balise correspondante et> pour mettre en retrait ou = pour mettre en retrait automatiquement en fonction de la syntaxe, donc la commande totale serait v%> ou v% =
ben

Cela fonctionne également avec le mode visuel au niveau des caractères (minuscule v), ce qui est un peu plus facile à taper. So vjjj>
James Scriven


10

Pour indenter toutes les lignes en dessous de la ligne en cours

=G

Donc, pour indenter tout le fichier, aller au début du fichier ( gg) puis indenter toutes les lignes en dessous de la ligne courante ( =G)

gg=G

Pour indenter la ligne courante

==

Donc, pour indenter des nlignes en dessous de la ligne actuelle

n==

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

4==

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


8

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


bon conseil pour économiser en faisant le calcul sur les lignes, merci!
papillotement le

3

Voici une bonne approche si vous essayez d'indenter sur un grand nombre de lignes:

:/<script>/,/<\/script>/ >>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.