Odpowiedzi:
Najlepszą metodą jest wprowadzenie tych ustawień ~/.vim/after/ftplugin/<filetype>.vim
.
W przypadku HTML (zakładając, że potrzebujesz zakładek o szerokości 4 znaków):
~/.vim/after/ftplugin/html.vim
setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab
Korzystanie z ftplugin jest preferowane przy użyciu komend automatycznych, ponieważ Vim już sam sprawdza typy plików i już próbuje zdobyć odpowiednie ftplugin, więc nie ma powodu, aby wymuszać jeszcze więcej kontroli i ponownie wdrażać koło.
-- edytować --
Zakładając, że masz filetype plugin on
w swoim vimrc
- co powinieneś - Vim spróbuje wykryć typ pliku plików, które edytujesz, a gdy zostanie znaleziony prawidłowy typ pliku i ustawiony dla bufora, spróbuj znaleźć odpowiedni ftplugin w tych standardowych lokalizacjach:
$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim
Wszystko to dzieje się automatycznie, więc jeśli Twój typ pliku zostanie rozpoznany przez Vima, nie ma absolutnie żadnego powodu, aby dodawać jakąkolwiek logikę wykrywania typu pliku: wystarczy dodać ustawienia do właściwej wtyczki ftpl i jesteś dobry.
filetype plugin indent on
w swoim vimrc
.
filetype plugin on
jest ustawiony, ścieżka vima zawiera pliki ftplugin/<filetype>.vim
i after/ftplugin/<filetype>/vim
na swojej ścieżce.
Możesz to zrobić za pomocą poleceń automatycznych w swoim .vimrc
.
Na przykład mam funkcję, html_like_mode
która konfiguruje różne rzeczy do edycji plików HTML. W moim .vimrc
mam:
au BufNewFile,BufRead *.html call s:html_like_mode()
To wyłącza rozszerzenie pliku. Możesz także wyłączyć typ pliku, jeśli masz to włączone:
au FileType perl setlocal equalprg=perltidy
Jak widać, możesz tam zrobić dowolne polecenie. Więc możesz łatwo zrobić a setlocal shiftwidth 4
dla swoich plików * .c.
augroup
umożliwia grupowanie powiązanych poleceń automatycznych w nazwane grupy. (Zobacz tutaj, aby dowiedzieć się o grupach poleceń automatycznych.) Używamy augroup
s, aby dodać polecenia automatyczne ~/.vimrc
w sposób, który nie doda duplikatu za każdym razem, gdy je pozyskujemy .
augroup vimrc
autocmd!
augroup END
autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4