Indentation automatique / code de formatage pour Vim?

Jessaie dutiliser de plus en plus Vim quand je le peux. Lune de mes plus grandes prises entre Vim et un IDE comme Aptana est la possibilité de mettre automatiquement en retrait .

Existe-t-il un moyen de formatage automatique du code (HTML, CSS, PHP) pour quil soit correctement mis en retrait?

Si oui, comment linstaller dans vim? Je ne « t comprendre beaucoup les plugins. Jai essayé de revoir ce fil de discussion et cela ma encore plus dérouté: Comment changer le comportement de lindentation automatique de vim?

Commentaires

  • Pourriez-vous clarifier la langue que vous essayez dindenter? Je mattendrais à ce que si elle ‘ est déjà prise en charge par vim, elle devrait déjà sauto-indenter sans effort supplémentaire. Sinon, vous devriez pouvoir obtenir un plugin.
  • idéalement Html / css et php

Réponse

Pour indenter automatiquement tout le fichier:

gg =G 

Expliqué:

  • gg – aller au début du fichier
  • G – aller à la fin du fichier
  • = indent

Commentaires

  • Pourriez-vous le décomposer? Quest-ce que g typiquement en soi? et = G?
  • @Chris voir la modification
  • Bon indice, je ne lai jamais su. Cependant, il fait un travail inutile avec bash.
  • Comment exécuter gg=G à partir du shell sans ouvrir le fichier?
  • @takeshin pouvez-vous veuillez lexpliquer beaucoup plus loin, devons-nous le saisir dans le fichier ou devons-nous lexécuter dans le terminal

Réponse

Je ne connais pas le formatage automatique du code existant, mais si vous écrivez du code et avez besoin dun retrait automatique:

  • :set autoindent (ou :set ai) activera lindentation automatique
  • Ctrl d pour annuler lindentation (AKA outdent) votre code
  • Tabulation ou espaces à indenter – Jutilise personnellement longlet
  • :set tabwidth=4 (ou :set tw=4) contrôlera le nombre despaces quun onglet doit mettre en retrait dans le code
  • La commande >> mettra en retrait la ligne courante. Si vous préfixez un nombre, dites 4>> puis il mettra en retrait 4 lignes, en commençant par la ligne actuelle.
  • De même La commande << supprimera le retrait dune ligne

Jespère que cela vous donne un bon début.

Commentaires

  • Pour indenter automatiquement le code existant, utilisez ={motion} en mode normal – par exemple =G mettra en retrait tout le code de la ligne actuelle à la fin du fichier. == mettra en retrait la ligne actuelle.
  • sassurera également que les plug-ins dindentation sont en cours de chargement (par exemple avec :filetype indent on)
  • set tw = 4 définit la TEXTWIDTH sur 4

Answer

Auto Indent *.sh

Ajoutez simplement les lignes suivantes dans ~/.vimrc

filetype indent on set smartindent autocmd BufRead,BufWritePre *.sh normal gg=G 

Commentaires

  • Cela sapplique-t-il uniquement à lédition avec vim ou avec tous les outils dédition?
  • ~./vimrc applicable uniquement pour léditeur vim.

Réponse

Ce plugin facilite la mise en forme de votre code . Il intègre des formateurs externes et propose une solution de secours sur la fonctionnalité de retrait de vim.

https://github.com/Chiel92/vim-autoformat

Notez également la différence entre la mise en forme et la mise en retrait. La mise en retrait ne corrige que les espaces avant chaque ligne, tandis que la mise en forme traite également toute autre chose, comme les espaces autour des opérateurs, etc.

Réponse

Créez / modifiez le fichier ~/.vimrc et ajoutez la ligne suivante:

set autoindent 

Commentaires

  • Cela najoute rien aux réponses existantes …
  • @jasonwryan En fait Hai Vu La réponse de ‘ mentionne :set autoindent qui active lindentation automatique uniquement pour le fichier actuel. Lajout dans le .vimrc active lindentation automatique de manière permanente.
  • votre commentaire est déjà mentionné par la réponse de Rahul ‘, alors réfléchissez avant de publier

Réponse

Lautoformat / indentation de

vim « fonctionne plutôt bien. Tout dabord, mettez cette ligne dans votre ~/.vimrc:

filetype plugin indent on 

Ensuite, ouvrez un fichier dans vim et tapez gg=G

(gg déplace le curseur sur la première ligne. = exécute le commande indent. G indique à la commande indent de sexécuter dici à la dernière ligne.)

Si lautoformat semble vraiment mauvais, comme si chaque ligne est juste laissée en retrait, exécutez :scriptnames et vérifiez si .../indent/html.vim (ou la langue que vous utilisez) est dans la liste. Sinon, assurez-vous que votre ~/.vimrc est correct. Ou si vous avez exécuté :filetype plugin indent on depuis la ligne de commande vim, vous devrez rouvrir le fichier :e

Réponse

Pour faire un reformatage de script bash, la solution gg = G proposée ne fonctionne pas bien dans VIM, que vous définissiez le script comme étant de type shell. Au lieu de cela, cela fonctionne;

shfmt -i 2 -ci script.sh

Pour identifier toutes les lignes avec 2 espaces et corriger le formatage.

Réponse

En bash je fais ceci:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3 

cela élimine les commentaires et réindente le script « bash way ». il ne le sera pas fonctionne si le script contient HEREDOCS mais si vous faites ceci:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri|head --lines=-1|tail --lines=+3 

cela fonctionnera avec nimporte quel script mais le script entier sera mis en retrait de 4 espaces. nhésitez pas à modifier mais citez mon nom dans votre script et postez-le! : D

Commentaires

  • Je crois que cela peut manquer le point de la question; plutôt que dindenter un ensemble de lignes, je pense que lOP souhaitait indenter automatiquement dans VIM pour une variété de langues. En passant, vous pourrez peut-être y parvenir un peu plus directement avec sed si vous le souhaitez: cat script_to_be_reindented.sh | sed 's#^# #g' (euh, eh bien, SO markdown remplace les espaces par une tabulation, mais vous obtenez le point)
  • Tout ce que cette réponse fait est dinsérer des espaces au début de la ligne et de réinitialiser tout lalignement. La même chose (hors démarque) peut être effectuée avec sed -i 's|^[ \t]\+| |' script.sh (cest-à-dire 4 espaces à lintérieur de | | mais ce site Web filtre plusieurs espaces en un seul) .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *