2 votes

Configuration de Vim pour des types de fichiers spécifiques

J'ai du mal à utiliser le fichier .vimrc pour appliquer des configurations spécifiques en fonction du type de fichier. En suivant le autocmd FileType suggestion aquí J'ai essayé d'appliquer une configuration basée sur le type de fichier. Voici ce que j'ai dans mon .vimrc :

autocmd FileType tex call Tex_config()
  function Tex_config()
    let g:LatexBox_viewer = 'skim'
    let g:LatexBox_latexmk_options = '-pvc'
    let g:tex_flavor = "latex"
    setlocal spell spelllang=en_ca
  endfunction

Je peux appeler la fonction Tex_config() avec :debug Tex_config : Vim parcourt joyeusement la fonction. Donc, tout semble devoir fonctionner.

Mais, quand j'émets :set filetype=tex quelque chose d'étrange se produit : la vérification orthographique est désactivée. Et lorsque j'émets :set filetype=foo la vérification orthographique est activée. C'est exactement l'inverse de ce que j'attendais de cet extrait de configuration !

Toute aide serait grandement appréciée. Voici la version complète vimrc (fonction à 44-50). Merci.

7voto

chiggsy Points 3695

N'utilisez pas .vimrc pour des choses spécifiques au type de fichier, il y a un mécanisme incroyablement précis que Lynch a décrit pour le type de fichier ou les paramètres situationnels de vimrc.

Par exemple, certains des éléments de mon fichier .vim

.vim/ftdetect:
haml.vim       macports.vim   puppet.vim
hiveminder.vim markdown.vim   ruby.vim

.vim/ftplugin:
haml.vim             portfile.vim         sshconfig.vim
html_snip_helper.vim python.vim           tmux.vim
javascript.vim       python_match.vim     zsh.vim
markdown.vim         sass.vim
plist.vim            scss.vim

et dans, disons, mon fichier sshconfig.vim ( j'ai mis "K" pour me donner la page de manuel de sshconfig avec le titre où se trouve mon curseur. C'est une bonne astuce. )

" sshconfig ftplugin. 
" At this point, only want to set man as the keywordprg

if exists("b:did_ftplugin")
    finish
endif
let b:did_ftplugin = 1

"  Customizations for sshconfig files
"  what I _want_ is to jump to the heading 
set keywordprg=man\ ssh_config\ -P\ \'less\ -p\ <cword>\'

Maintenant, dans .vim/ftdetect/macports.vim, j'ai le code pour déterminer si ce fichier est un Portfile

" Portfile
au BufNewFile,BufRead Portfile  set filetype=portfile
au FileType portfile compiler portfile

Je devrais retirer ce fichier de portage du compilateur et le placer dans ftplugins, parce que vous pouvez voir comment ce système pourrait devenir assez fou, mais c'est à cela que servent ctags et git.

4voto

Lynch Points 2534

Vous pouvez ajouter votre commande spécifique à .vim/ftplugin/tex.vim. Vim reconnaîtra alors automatiquement que le tex est un type de fichier et chargera son comportement à partir de votre tex.vim.

Par exemple, je l'utilise pour les pages de manuel .vim/ftplugin/man.vim :

setlocal nolist
setlocal nomod
setlocal nonumber

" Set scratch buffer"
setlocal buftype=nofile
setlocal bufhidden=hide
setlocal noswapfile

Assurez-vous que vous avez cette ligne dans votre vimrc pour définir votre dossier vim :

let $VIM='~/.vim/'

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