Risposte:
Il metodo migliore è inserire tali impostazioni ~/.vim/after/ftplugin/<filetype>.vim.
Per HTML (supponendo che tu voglia schede di 4 caratteri):
~/.vim/after/ftplugin/html.vim
setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab
L'utilizzo di un ftplugin è preferibile all'uso dei autocomandi perché Vim esegue già controlli del tipo di file da solo e cerca già di procurarsi il ftplugin adeguato, quindi non c'è motivo di forzare ulteriori controlli e reimplementare la ruota.
-- modificare --
Supponendo che tu abbia filetype plugin onnel tuo vimrc- che dovresti - Vim proverà a rilevare il tipo di file dei file che modifichi e, una volta trovato il tipo di file corretto e impostato per il buffer, proverà a trovare il corrispondente ftplugin in queste posizioni standard:
$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim
Tutto ciò accade automaticamente , quindi, se il tuo tipo di file è riconosciuto da Vim, non c'è assolutamente alcun motivo per aggiungere alcuna logica di rilevamento del tipo di file: basta aggiungere le tue impostazioni al ftplugin giusto e sei a posto.
filetype plugin indent onnel tuo vimrc.
filetype plugin onè impostato, il percorso di vim include i file ftplugin/<filetype>.vime after/ftplugin/<filetype>/vimnel suo percorso.
Puoi farlo con i comandi automatici nel tuo .vimrc.
Ad esempio, ho una funzione html_like_modeche imposta varie cose per la modifica di file HTML. Nel mio .vimrcho:
au BufNewFile,BufRead *.html call s:html_like_mode()
Che si stacca dall'estensione del file. Puoi anche disattivare il tipo di file, se hai abilitato quello:
au FileType perl setlocal equalprg=perltidy
Come puoi vedere, puoi fargli fare qualsiasi comando lì. Quindi potresti facilmente fare una setlocal shiftwidth 4per i tuoi file * .c.
augroupconsente di raggruppare i autocomandi correlati in gruppi denominati. (Vedi qui per informazioni sui gruppi di autocomando.) Usiamo augroups per aggiungere i autocomandi ~/.vimrcin un modo che non aggiunga un duplicato ogni volta che lo procuriamo.
augroup vimrc
autocmd!
augroup END
autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4