Dans Vim, quelle est la commande pour corriger l'indentation de toutes les lignes?
Souvent, je vais copier et coller du code dans un terminal distant et tout gâcher. Je veux résoudre ce problème d'un seul coup.
=
, la commande indent peut prendre des mouvements. Donc, gg
pour obtenir le début du fichier, =
à indenter, G
à la fin du fichier, gg=G
.
Avant de coller dans le terminal, essayez :set paste
(puis :set nopaste
après avoir terminé). Cela désactivera les fonctionnalités d'indentation automatique, de retour à la ligne, etc. qui gâchent votre collage.
edit: En outre, je devrais souligner qu'un résultat bien meilleur que = indenting peut généralement être obtenu en utilisant un programme externe. Par exemple, je lance :%!perltidy
tout le temps. astyle, cindent, etc. peuvent également être utilisés. Et, bien sûr, vous pouvez les mapper sur un trait de clé - et mapper ceux qui sont différents sur la même frappe en fonction du type de fichier
Si vous voulez réindenter le bloc dans lequel vous vous trouvez sans avoir à taper d'accords, vous pouvez faire:
[[=]]
Le maître de toutes les commandes est
gg=G
Cela indente le fichier entier!
Vous trouverez ci-dessous certaines des commandes simples et élégantes utilisées pour mettre rapidement en retrait des lignes dans Vim ou gVim.
Pour indenter toutes les lignes en dessous de la ligne en cours
=G
Pour indenter la ligne courante
==
Pour mettre en retrait n
lignes au-dessous de la ligne actuelle
n==
Par exemple, pour mettre en retrait 4 lignes en dessous de la ligne en cours
4==
Pour mettre en retrait un bloc de code, accédez à l’un des accolades et utilisez la commande
=%
Vous pouvez utiliser tidy application/utility pour indenter des fichiers HTML et XML et cela fonctionne assez bien pour indenter ces fichiers.
Prettify un fichier XML
:!tidy -mi -xml %
Confirmez un fichier HTML
:!tidy -mi -html %
appuyez sur echap et tapez les combinaisons ci-dessous rapidement:
gg=G
1G=G
. Cela devrait indenter toutes les lignes du fichier. 1G
vous prend la première ligne, =
démarre l'indentation automatique et la dernière variable G
vous prendra la dernière ligne du fichier.
Dans Vim, utilisez :insert
. Ceci gardera toute votre mise en forme et ne fera pas d’indentation automatique. Pour plus d'informations help :insert
.
:set paste
est votre ami. J'utilise PuTTY et je copie le code entre fenêtres. Avant, on me permettait de copier/coller :set paste
(et :set nopaste
) pour cette raison.
si vous ne souhaitez pas utiliser :set paste
, clic-médian, set nopaste
, vous pouvez également coller le contenu du presse-papiers:
"*p
"+p
Ainsi, vous ne devez pas quitter le mode normal . Si vous devez coller +
ou *
dépend de la façon dont vous avez sélectionné le texte, voir :help quoteplus
.
vim-autoformat formate vos fichiers source à l’aide de programmes externes spécifiques à votre langue, par exemple. rbeautify "bijou pour les fichiers Ruby", le package "js-beautify" npm pour JavaScript.
Pour les fichiers C++ complexes, vim n'obtient pas toujours le formatage correct lors de l'utilisation de la commande de filtre =
de vim. Donc, dans de telles situations, il est préférable d’utiliser un formateur externe C++ comme astyle (ou uncrustify ), par exemple:
:%!astyle
La fonction '=' de Vim utilise son formateur interne par défaut (ce qui ne donne pas toujours raison), mais on peut également le configurer avec un formateur externe, comme astyle, en le configurant correctement comme indiqué dans cette question .
Pour les fichiers XML, j'utilise cette commande
:1,$!xmllint --format --recover - 2>/dev/null
Vous devez avoir installé xmllint (paquet libxml2-utils)
(Source: http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )
vi devrait respecter les tabulations et les espaces, cependant vous devriez considérer que vi peut utiliser des tabulations de longueur différente de celle de votre autre éditeur. Pouvez-vous être plus spécifique que "tout foiré"?
Vous pouvez créer un mappage pour le faire pour vous.
Celui-ci mettra automatiquement en retrait tout le fichier tout en maintenant votre curseur dans la position où vous vous trouvez:
nmap <leader>ai mzgg=G`z
Pour vi Editor, utilisez: insert. Cela conservera toute votre mise en forme et ne pas insérer d'indentation automatique. Une fois terminé, appuyez sur échap pour afficher le fichier formaté, sinon vous verrez des caractères parasites. comme ^ I .__, par exemple:
public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert");
}
Il suffit d’aller en mode visuel dans vim et d’effectuer une sélection après avoir appuyé sur =, toutes les lignes sélectionnées seront mises en retrait.