Réponses:
La meilleure méthode consiste à définir ces paramètres ~/.vim/after/ftplugin/<filetype>.vim.
Pour HTML (en supposant que vous vouliez des onglets de 4 caractères):
~/.vim/after/ftplugin/html.vim
setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab
Il est préférable d'utiliser un ftplugin plutôt que d'utiliser des autocommandes car Vim effectue déjà des vérifications de type de fichier et tente déjà de trouver le ftplugin adéquat. Il n'y a donc aucune raison de forcer encore plus de vérifications et de réimplémenter la molette.
-- modifier --
En supposant que vous ayez filetype plugin ondans vimrc- ce que vous devriez - Vim essaiera de détecter le type de fichier des fichiers que vous éditez et, une fois que le type de fichier correct est trouvé et défini pour le tampon, essayez de trouver le ftplugin correspondant dans ces emplacements standard:
$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim
Tout cela se produit automatiquement, donc si votre type de fichier est reconnu par Vim, il n’ya aucune raison d’ajouter une logique de détection de type de fichier: ajoutez simplement vos paramètres au bon ftplugin et vous êtes bon.
filetype plugin indent ondans votre vimrc.
filetype plugin onest défini, le chemin d'accès de vim inclut les fichiers ftplugin/<filetype>.vimet after/ftplugin/<filetype>/vimdans son chemin d'accès.
Vous pouvez le faire avec des autocommandes dans votre .vimrc.
Par exemple, j'ai une fonction html_like_modequi configure diverses choses pour l'édition de fichiers HTML. Dans mon .vimrc, j'ai:
au BufNewFile,BufRead *.html call s:html_like_mode()
C'est la clé de l'extension de fichier. Vous pouvez également désactiver le type de fichier, si cela est activé:
au FileType perl setlocal equalprg=perltidy
Comme vous pouvez le voir, vous pouvez le faire exécuter n’importe quelle commande. Donc, vous pouvez facilement faire un setlocal shiftwidth 4pour vos fichiers * .c.
augroupvous permet de regrouper les autocommandes associées dans des groupes nommés. (Voir ici pour en savoir plus sur les groupes de commandes automatiques.) Nous utilisons augroups pour ajouter des commandes automatiques de ~/.vimrcmanière à ne pas ajouter de doublons à chaque fois que nous les fournissons.
augroup vimrc
autocmd!
augroup END
autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4