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 on
nel 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 on
nel tuo vimrc
.
filetype plugin on
è impostato, il percorso di vim include i file ftplugin/<filetype>.vim
e after/ftplugin/<filetype>/vim
nel suo percorso.
Puoi farlo con i comandi automatici nel tuo .vimrc
.
Ad esempio, ho una funzione html_like_mode
che imposta varie cose per la modifica di file HTML. Nel mio .vimrc
ho:
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 4
per i tuoi file * .c.
augroup
consente di raggruppare i autocomandi correlati in gruppi denominati. (Vedi qui per informazioni sui gruppi di autocomando.) Usiamo augroup
s per aggiungere i autocomandi ~/.vimrc
in 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