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.
vim
vi
indentation
mmcdole
la source
la source
Réponses:
=
, la commande de retrait peut accepter des mouvements. Donc,gg
pour obtenir le début du fichier,=
au tiret,G
à la fin du fichier,gg=G
.la source
''
(deux guillemets simples) vous ramène à l'endroit où vous étiez si vousgg=G''
deviez mettre en retrait puis revenir.Avant de coller dans le terminal, essayez
:set paste
puis:set nopaste
après avoir terminé. Cela désactivera le retrait automatique, le retour à la ligne et d'autres fonctionnalités qui gâchent votre pâte.edit: Aussi, je dois souligner qu'un résultat bien meilleur que l'
=
indentation peut généralement être obtenu en utilisant un programme externe. Par exemple, je cours:%!perltidy
tout le temps.astyle
,cindent
Etc. peuvent également être utilisés. Et, bien sûr, vous pouvez les mapper à un coup de clé et en mapper différents sur la même frappe en fonction du type de fichier.la source
equalprg
option dans un plugin ft pour utiliser un filtre externe pour l'=
indentation, plutôt qu'une liaison de touches personnalisée.formatpgm
avec rangé et astyle puisgq
. Voici quelques exemples de mon.vimrc
:au FileType xml set fp=tidy\ -q\ -i\ -xml
etau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
Si vous voulez réindenter le bloc dans lequel vous vous trouvez sans avoir à taper d'accords, vous pouvez faire:
la source
=aB
ce qui ne déplacera pas du tout le curseur.[[=]]
nécessite 5 accords :(Le maître de toutes les commandes est
gg=G
Cela indente l'intégralité du fichier!
Et voici quelques-unes des commandes simples et élégantes utilisées pour indenter rapidement des lignes dans Vim ou gVim.
Pour mettre en retrait toutes les lignes sous la ligne actuelle
Pour mettre en retrait la ligne actuelle
Pour mettre en retrait des
n
lignes sous la ligne actuellePar exemple, pour mettre en retrait 4 lignes sous la ligne actuelle
Pour mettre en retrait un bloc de code, accédez à l'un des accolades et utilisez la commande
la source
Vous pouvez utiliser une application / un utilitaire bien rangé pour mettre en retrait des fichiers HTML et XML et cela fonctionne assez bien pour mettre en retrait ces fichiers.
Prettifier un fichier XML
Prettifier un fichier HTML
la source
appuyez sur Échap, puis tapez rapidement les combinaisons ci-dessous:
la source
1G=G
. Cela devrait mettre en retrait toutes les lignes du fichier.1G
vous prend la première ligne,=
démarre le retrait automatique et la finaleG
vous prend la dernière ligne du fichier.la source
1gg=G
:set paste
est votre ami, j'utilise du mastic et je finis par copier du code entre les fenêtres. Avant d'être activé:set paste
(et:set nopaste
) copier / coller m'a donné des ajustements pour cette raison.la source
Dans Vim, utilisez
:insert
. Cela conservera toute votre mise en forme et ne fera pas d'indentation automatique. Pour plus d'informationshelp :insert
.la source
si vous ne souhaitez pas utiliser
:set paste
, cliquez avec le bouton du milieuset nopaste
, vous pouvez également coller le contenu du presse-papiers:De cette façon, vous n'avez 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
.la source
vim-autoformat formate vos fichiers sources à l'aide de programmes externes spécifiques à votre langue, par exemple la gemme "rbeautify" pour les fichiers Ruby, le package npm "js-beautify" pour JavaScript.
la source
Pour les fichiers C ++ complexes, vim n'obtient pas toujours le bon formatage lors de l'utilisation de la
=
commande de filtre de vim . Donc, pour de telles situations, il est préférable d'utiliser un formateur C ++ externe comme astyle (ou non crustify ), par exemple:La fonction '=' de Vim utilise son formateur interne par défaut (ce qui ne fait pas toujours bien les choses) mais on peut également le configurer en utilisant un formateur externe, comme astyle, en le configurant correctement comme discuté dans cette question .
la source
Pour les fichiers XML, j'utilise cette commande
Vous devez avoir installé xmllint (paquet libxml2-utils)
(Source: http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )
la source
Vous pouvez créer un mappage pour le faire pour vous.
Celui-ci mettra automatiquement en retrait tout le fichier et gardera toujours votre curseur dans la position où vous vous trouvez:
la source
Pour vi Editor, utilisez: insert. Cela gardera toute votre mise en forme et n'insérera pas l'indentation automatique. comme ^ je par exemple:
la source
Passez simplement en mode visuel dans vim, et sélectionnez de haut en bas après avoir sélectionné simplement appuyez sur =, toute la ligne sélectionnée sera indentée.
la source
ggvG=
quand tu peuxgg=G
. Quel était l'intérêt de rendre la motion visible? Cela vaut pour toutes les actions qui prennent des motions.