Відповіді:
Найкращий спосіб - це встановити ці налаштування ~/.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
дозволяє групувати пов'язані автокоманди в названі групи. (Дивіться тут, щоб дізнатися про групи автокоманд.) Ми використовуємо augroup
s, щоб додати автокоманди ~/.vimrc
таким чином, щоб не додавати дублікат кожного разу, коли ми його джерелом.
augroup vimrc
autocmd!
augroup END
autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4