Відповіді:
Найкращий спосіб - це встановити ці налаштування ~/.vim/after/ftplugin/<filetype>.vim.
Для HTML (якщо ви хочете 4 вкладки на всі символи):
~/.vim/after/ftplugin/html.vim
setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab
Використовувати ftplugin краще використовувати автокоманди, тому що Vim вже робить перевірку файлових файлів самостійно і вже намагається завести відповідний ftplugin, тому немає причин змушувати ще більше перевіряти та повторно вносити колесо.
- редагувати -
Якщо у вас є filetype plugin onу вашому vimrc- що ви повинні - Vim буде намагатися виявити тип файлу з файлів і редагування, як тільки правильний тип файлу буде знайдений і набір для буфера, спробуйте джерело відповідного ftplugin в цих стандартних місцях:
$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim
Все це відбувається автоматично, тому якщо ваш файл розпізнається Vim, немає абсолютно ніяких причин додавати будь-яку логіку виявлення файлів: просто додайте свої налаштування до потрібного ftplugin, і ви добре.
filetype plugin indent onу вашому vimrc.
filetype plugin onвстановлено, шлях vim включає в себе ftplugin/<filetype>.vimі after/ftplugin/<filetype>/vimфайли на своєму шляху.
Ви можете зробити це з автокомандами у своєму .vimrc.
Наприклад, у мене є функція, html_like_modeяка встановлює різні речі для редагування HTML-файлів. У своєму .vimrc:
au BufNewFile,BufRead *.html call s:html_like_mode()
Це відключення розширення файлу. Ви також можете відключити тип файлу, якщо він увімкнено:
au FileType perl setlocal equalprg=perltidy
Як бачите, ви можете змусити його виконувати будь-яку команду там. Таким чином, ви можете легко зробити setlocal shiftwidth 4для своїх файлів * .c.
augroupдозволяє групувати пов'язані автокоманди в названі групи. (Дивіться тут, щоб дізнатися про групи автокоманд.) Ми використовуємо augroups, щоб додати автокоманди ~/.vimrcтаким чином, щоб не додавати дублікат кожного разу, коли ми його джерелом.
augroup vimrc
autocmd!
augroup END
autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4