web-dev-qa-db-fra.com

Indentation automatique / code de format pour Vim?

J'essaye d'utiliser Vim de plus en plus quand je le peux. L'une des plus grandes prises en main entre Vim et un IDE comme Aptana est la possibilité de mettre en retrait automatiquement.

Existe-t-il un moyen de mise en forme automatique du code (HTML, CSS, PHP) afin qu'il soit correctement mis en retrait?

Si oui, comment installez-vous cela dans vim? Je ne comprends pas beaucoup les plugins. J'ai essayé de passer en revue ce fil et cela m'a plus dérouté: Comment changer le comportement d'indentation automatique de vim?

36
chrisjlee

Pour mettre en retrait le fichier entier automatiquement:

gg
=G

Expliqué:

  • gg - aller au début du fichier
  • G - aller à la fin du fichier
  • = - tiret
59
takeshin

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

  • :set autoindent (Ou :set ai) Activera le retrait automatique
  • Ctrl-d pour retirer (AKA en retrait) votre code
  • Onglet ou espaces à mettre en retrait - j'utilise personnellement l'onglet
  • :set tabwidth=4 (Ou :set tw=4) Contrôlera le nombre d'espaces qu'un onglet doit mettre en retrait du code
  • La commande >> Mettra en retrait la ligne actuelle. Si vous le préfixez par un nombre, dites 4>>, Il mettra en retrait 4 lignes, en commençant par la ligne actuelle.
  • De même, la commande << Désindentera une ligne

J'espère que cela vous donne un bon départ.

17
Hai Vu

Retrait automatique *.sh

Ajoutez simplement les lignes suivantes dans ~/.vimrc

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

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

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

Notez également la différence entre le formatage et le retrait. Le retrait ne corrige que les espaces avant chaque ligne, tandis que le formatage traite également de tout autre élément, comme les espaces autour des opérateurs, etc.

2
Chiel ten Brinke

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

set autoindent
2
Akshat Maheshwari

le formatage automatique/retrait de vim fonctionne plutôt bien. Commencez par mettre cette ligne dans votre ~/.vimrc:

filetype plugin indent on

Ouvrez ensuite un fichier dans vim et tapez gg=G

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

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

0
wisbucky

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". cela ne fonctionnera pas 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 n'importe quel script mais le script entier sera indenté de 4 espaces. n'hésitez pas à modifier mais citez mon nom dans votre script et postez-le! :RÉ

0
Zibri