65 votes

Comment configurer des paramètres d'onglets différents pour différentes langues dans Vim ?

Dans mon .vimrc J'ai un paramètre de tabulation générique de deux espaces, et j'aimerais le remplacer par un paramètre de base par langue (c'est-à-dire quatre pour Python, etc., sinon j'utilise le paramètre par défaut), mais j'ai du mal à trouver un bon exemple.

75voto

skierpage Points 314

Ces autres réponses semblent bien trop complexes. Au lieu de vous embrouiller avec encore plus de répertoires et de fichiers dans votre arbre ~/.vim, ajoutez simplement ce qui suit à votre ~/.vimrc.

autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4

(vous pouvez être l33t et abréger les paramètres en et ts=4 sw=4 sts=4 ). J'ai trouvé ceci dans Configuration des préférences d'espacement de Vim par type de fichier

53voto

fgm Points 5930

Il suffit de mettre les paramètres dans le fichier du plugin filetype ~/.vim/ftplugin/LANGUAGE.vim . Mon ~/.vim/ftplugin/perl.vim contient les lignes :

"
" ---------- tabulator / shiftwidth --------------------
"  Set tabulator and shift width to 4 (Perl Style Guide)
"
setlocal  tabstop=4
setlocal  shiftwidth=4
"

Ces paramètres seront automatiquement appliqués pour chaque fichier de type "perl" (nouveau ou existant). (nouveau ou existant).

22voto

Brian Neal Points 13668

Ma réponse est basée sur ce conseil sur le VIM Wiki. Cette réponse utilise le répertoire "after" afin que vous n'ayez pas à manipuler les fichiers de plugins fournis pour les différents types de fichiers.

Par exemple, pour spécifier des paramètres personnalisés pour les fichiers Python, créez un fichier appelé python.vim pour contenir vos paramètres Python :

setlocal expandtab
setlocal shiftwidth=4
setlocal softtabstop=4

Placez ce fichier dans l'un des deux endroits suivants

  • ~/.vim/after/ftplugin (Linux)
  • $HOME/vimfiles/after/ftplugin (Windows)

Et enfin, vous devez avoir ceci dans votre .vimrc (Linux) ou _vimrc (Windows) :

filetype plugin indent on

9voto

Curt Sampson Points 10866

En général, il s'agit de configurer un fichier spécial de type vimrc avec les paramètres d'une langue particulière, puis d'utiliser des autocommandes dans votre fichier .vimrc principal pour exécuter le vimrc spécial lorsque cela est nécessaire. Voici ma configuration pour Haskell ( .hs etc.) :

autocmd! BufNewFile,BufReadPre,FileReadPre  *.hs    so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.hsc   so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.lhs   so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre  *.cabal so ~/.vim/haskell.vim

Mon ~/.vim/haskell.vim fait des choses comme "set expandtab" pour utiliser les espaces au lieu des tabulations, et toutes sortes d'autres magies pour le formatage et des choses comme ça. Vous pouvez souvent télécharger de bonnes versions de ces outils pour diverses langues à partir de http://vim.org et d'autres sites.

Notez que vous pouvez faire beaucoup plus que simplement modifier les paramètres de vim. Par exemple, vous pouvez faire passer le fichier par un filtre avant et après l'édition :

" Edit gpg-encrypted ascii-armoured files
autocmd! BufReadPre,FileReadPre      *.asc  set bin
autocmd  BufReadPost,FileReadPost    *.asc  '[,']!gpg -q -d
autocmd  BufReadPost,FileReadPost    *.asc  set nobin
autocmd! BufWritePre,FileWritePre    *.asc  set bin
autocmd  BufWritePre,FileWritePre    *.asc  '[,']!gpg -e
autocmd  BufWritePost,FileWritePost  *.asc  undo
autocmd  BufWritePost,FileWritePost  *.asc  set nobin

2voto

Vagif Abilov Points 125

J'utilise le configuration de l'éditeur et d'ajouter un fichier .editorconfig à tous mes projets - il vous permettra de définir différents paramètres d'indentation pour différents projets utilisant le même langage de programmation, ce qui peut être utile car souvent différents projets dans le même langage ont des normes de codage différentes.

Vous trouverez ici un exemple des types de configuration que vous pouvez définir : http://editorconfig.org/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X