Question

Dans Vim, quelle est la commande pour corriger l'indentation de toutes les lignes?

Souvent, je vais copier et coller le code dans un terminal distant et ont le tout foiré. Je veux résoudre ce problème en un seul coup.

Était-ce utile?

La solution

=, la commande tiret peut prendre des motions. Donc, pour obtenir le gg début du fichier, au retrait G, à la fin gg=G du fichier, <=>.

Autres conseils

Avant de coller dans le terminal, essayez :set paste (puis après que vous avez :set nopaste fait). Cela désactivera l'auto-tiret, retour à la ligne, etc. caractéristiques qui sont la pagaille dans votre pâte.

edit: Aussi, je tiens à souligner que un bien meilleur résultat que = indentations peut généralement être obtenue en utilisant un programme externe. Par exemple, je lance tout le temps :%!perltidy. astyle, cindent, etc. peut également être utilisé. Et, bien sûr, vous pouvez mapper ceux d'un coup clé - et la carte différents ceux à la même combinaison de touches en fonction du type de fichier

Si vous voulez reindent le bloc que vous êtes sans avoir à taper des accords, vous pouvez faire:

[[=]]

Le maître de toutes les commandes est

gg=G

Indente le fichier entier!

Voici quelques-unes des commandes simples et élégantes utilisées pour en retrait des lignes rapidement ou Vim gVim.

Pour mettre en retrait les toutes les lignes ci-dessous la ligne courante

=G

Pour mettre en retrait de la ligne courante

==

Pour mettre en retrait des lignes ci-dessous la n ligne courante

n==

Par exemple, pour mettre en retrait 4 lignes au-dessous de la ligne courante

4==

Pour mettre en retrait un bloc de code, allez à l'une des accolades et commande, utilisez

=%

Vous pouvez utiliser l'application bien rangé / utilitaire pour indenter fichiers HTML et XML et il fonctionne très bien dans ces fichiers indenter.

enjoliver un fichier XML

:!tidy -mi -xml %

enjoliver un fichier HTML

:!tidy -mi -html %

évasion de presse et puis tapez combinaisons ci-dessous rapide:

gg=G

1G=G. Cela devrait indenter toutes les lignes dans le fichier. Vous prend la 1G première ligne, va commencer l'= auto-tiret et la finale G vous amène la dernière ligne dans le fichier.

Dans Vim, utilisez :insert. Cela permet de garder toute votre mise en forme et ne pas faire auto-indentation. Pour plus d'informations help :insert.

:set paste est votre ami, j'utiliser du mastic et finir par le code de la copie entre les fenêtres. Avant que je tournais à :set nopaste (et <=>) copier / coller m'a donné FITS pour cette raison.

si vous ne voulez pas utiliser :set paste, clic du milieu, set nopaste, vous pouvez aussi coller le contenu du presse-papier:

"*p
"+p

De cette façon, vous ne devez pas quitter le mode normal. si vous devez coller ou + * dépend de la façon que vous avez sélectionné le texte, voir :help quoteplus.

vim-autoformat formate vos fichiers source en utilisant des programmes externes spécifiques pour votre langue, par exemple rbeautify » petit bijou pour les fichiers Ruby, "js-embellissent" paquet NPM pour JavaScript.

Pour les fichiers C ++ complexes vim ne reçoit pas toujours la bonne mise en forme lorsque vous utilisez la commande = filtre de vim. Donc, pour un tel cas, il est préférable d'utiliser un formatter C ++ externe comme astyle (ou uncrustify), par exemple:

:%!astyle

fonction de vim « = » utilise son formatter interne par défaut (qui ne reçoit pas toujours les choses), mais on peut aussi le mettre utiliser un formatter externe, comme astyle, en mettant en place de manière appropriée comme indiqué dans this question .

vi doit respecter les onglets et les espaces, mais vous devriez considérer que vi peuvent utiliser des différents onglets de longueur que votre autre éditeur. Pouvez-vous être plus précis que « tout foiré »?

Pour les fichiers XML, j'utiliser 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)

Vous pouvez créer un mappage pour le faire pour vous.

Celui-ci indentera automatique le fichier entier et toujours garder votre curseur dans la position que vous êtes:

nmap <leader>ai mzgg=G`z

Il suffit de passer en mode visuel dans vim et sélectionner jusqu'à des lignes vers le bas après avoir sélectionné appuyez simplement sur =, Toute la ligne sélectionnée sera indenté.

Pour vi Editor, utilisez: insérer. Cela permet de garder toute votre mise en forme et ne pas insérer escape de presse fait auto-indenting.Once pour voir le fichier au format réel autrement you'l voir certains personnages de déchets. comme je ^ par exemple:

public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert"); 
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top