Quelqu'un pourrait-il m'expliquer en termes simples la manière la plus simple de modifier le comportement d'indentation de Vim en fonction du type de fichier? Par exemple, si j'ouvre un fichier Python, il doit indenter avec 2 espaces, mais si j'ouvre un script Powershell, il doit utiliser 4 espaces.
file
vim
settings
indentation
EBGreen
la source
la source
Réponses:
Vous pouvez ajouter des
.vim
fichiers à exécuter chaque fois que vim bascule vers un type de fichier particulier.Par exemple, j'ai un fichier
~/.vim/after/ftplugin/html.vim
avec ce contenu:Ce qui fait que vim utilise des onglets d'une largeur de 2 caractères pour l'indentation (l'
noexpandtab
option est définie globalement ailleurs dans ma configuration).Ceci est décrit ici: http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 , faites défiler jusqu'à la section sur les plugins de type de fichier.
la source
~/.vim/after/ftplugin/html.vim
place. Mais comme d'autres l'ont souligné ci-dessous, il est beaucoup plus agréable d'ajouter simplementautocmd FileType html setlocal shiftwidth=2 tabstop=2
à votre.vimrc
.autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
)filetype plugin on
à votre vimrc.Utilisez des plugins ou des autocommandes pour définir les options.
ftplugin
Dans
~/.vim/ftplugin/python.vim:
Et n'oubliez pas de les activer en
~/.vimrc
:(
:h ftplugin
pour plus d'informations)autocommande
Dans
~/.vimrc
:Vous pouvez remplacer l' une des longues commandes ou réglages avec leurs versions courtes:
autocmd
:au
setlocal
:setl
shiftwidth
:sw
tabstop
:ts
softtabstop
:sts
expandtab
:et
Je suggère également d'apprendre la différence entre
tabstop
etsofttabstop
. Beaucoup de gens ne le savent passofttabstop
.la source
sw
est l'abréviation desoftwidth
, l'sts
abréviation desofttabstop
, l'et
abréviation deexpandtab
, l'setl
abréviation desetlocal
et l'au
abréviation deautocmd
. Vous pouvez utiliser les formulaires longs au lieu des formulaires courts.sw
développeshiftwidth
plutôt quesoftwidth
.éditez votre
~/.vimrc
, et ajoutez différents types de fichiers pour différents retraits, par exemple, je veux unhtml/rb
retrait pour 2 espaces et desjs/coffee
fichiers en retrait pour 4 espaces:voir: Définition des préférences d'espaces Vim par type de fichier
la source
"
:)'
donne une erreur sur tous les vim de mon Linux. (7.3+, 8.0 ...)"
, ce qui signifie de ne pas le fermer avec un autre"
. Je ne sais pas pourquoi j'ai commenté cela cependant.'
mais pas gauche"
sans droite"
@. @Mettez les commandes autocmd basées sur le suffixe du fichier dans votre ~ / .vimrc
Les commandes que vous recherchez sont probablement ts = et sw =
la source
FileType
?Je travaille généralement avec
expandtab
set, mais c'est mauvais pour les makefiles. J'ai récemment ajouté:à la fin de mon fichier .vimrc et il reconnaît Makefile, makefile et * .mk comme makefiles et ne développe pas les onglets. Vraisemblablement, vous pouvez prolonger cela.
la source
Personnellement, j'utilise ces paramètres dans .vimrc:
la source
Cela peut être connu de la plupart d'entre nous, mais de toute façon (j'ai été perplexe ma première fois): Faire
:set et
(:set
expandtabs) ne change pas les onglets déjà existants dans le fichier, il faut le faire:retab
. Par exemple:et les tabulations du fichier sont remplacées par suffisamment d'espaces. Pour récupérer les onglets, faites simplement:
la source
Aujourd'hui, vous pouvez essayer editorconfig , il existe également un plugin vim pour cela. Avec cela, vous pouvez non seulement modifier la taille de l'indentation dans vim, mais dans de nombreux autres éditeurs, conserver des styles de codage cohérents.
Vous trouverez ci-dessous une simple configuration de l'éditeur, comme vous pouvez le voir, les fichiers python auront 4 espaces pour l'indentation et les fichiers de modèle de pug n'en auront que 2.
la source
Bien que vous puissiez très bien configurer l'indentation de Vim à l'aide du plug-in d'indentation ou manuellement à l'aide des paramètres, je recommande d'utiliser un script python appelé Vindect qui définit automatiquement les paramètres pertinents pour vous lorsque vous ouvrez un fichier python. Utilisez cette astuce pour rendre l'utilisation de Vindect encore plus efficace. Quand j'ai commencé à éditer des fichiers python créés par d'autres avec différents styles d'indentation (tabulation vs espace et nombre d'espaces), c'était incroyablement frustrant. Mais Vindect avec ce fichier d'indentation
Recommande également:
la source
Pour ceux qui utilisent
autocmd
, il est préférable de les regrouper. Si un regroupement est lié à la détection de type de fichier, vous pourriez avoir quelque chose comme ceci:Les regroupements aident à conserver l'
.vimrc
organisation, en particulier lorsqu'un type de fichier est associé à plusieurs règles. Dans l'exemple ci-dessus, un raccourci de commentaire spécifique aux fichiers .c est défini.L'appel initial à
autocmd!
indique à vim de supprimer toutes les commandes automatiques précédemment définies dans ledit groupement. Cela empêchera la définition en double si elle.vimrc
provient à nouveau. Voir le:help augroup
pour plus d'informations.la source
J'utilise un utilitaire que j'ai écrit en C appelé
autotab
. Il analyse les quelques milliers de premières lignes d'un fichier que vous chargez et détermine les valeurs des paramètres Vimshiftwidth
,tabstop
etexpandtab
.Ceci est compilé en utilisant, par exemple,
gcc -O autotab.c -o autotab
. Les instructions pour l'intégration avec Vim sont dans l'en-tête de commentaire en haut.Autotab est assez intelligent, mais peut être confus de temps en temps, en particulier par le fait qu'il a été maintenu de manière incohérente en utilisant différents styles d'indentation.
Si un fichier utilise évidemment des tabulations, ou une combinaison de tabulations et d'espaces, pour l'indentation, Autotab déterminera quelle taille de tabulation est utilisée en considérant des facteurs comme l'alignement des éléments internes sur des lignes successives, tels que les commentaires.
Il fonctionne pour une variété de langages de programmation et pardonne les éléments "hors bande" qui n'obéissent pas aux incréments d'indentation, tels que les directives de prétraitement C, les étiquettes d'instructions C, sans parler des lignes vides évidentes.
la source