Разные типы файлов могут требовать разных настроек отступов. Например в YAML-файле для отступов используется пробелы, в Make-файле - табуляция, а в Python-файле - 4 пробела. Эти настройки можно устанавливать автоматически в зависимости от типа файлов.
Например, следующая команда установит для python-файлов добавляемые отступы в 4 пробела:
autocmd FileType python setlocal ts=4 sts=4 sw=4 et
Разберём выполняемую команду на составляющие. Эта команда состоит из двух частей:
autocmd FileType python
Первая часть команды устанавливает триггре на вы полнение второй части на определённое событие в Vim, в данном случае когда определился тип файла и это python-файл.
setlocal ts=4 sts=4 sw=4 et
Вторая часть команды, устанавливает локальные значения для текущего буфера или окна, tabstop=4, softtabstop=4, softwidth=4 и expandtab - указывает преобразовывать, при вставке, символы табуляции на пробелы, количество пробелов указано в tabstop(об отступах можно посмотреть в Vim: Табуляция и пробелы).
Команда autocmd выполнится если Vim скомпилирован с поддержкой autocmd. Узнать это можно выполнив команду :version. Включенные опции отображаются с символом +, отключенные с -.
Также должно быть включено определение типа файлов:
filetype on
Без него событие установленное в autocmd не сработает.
Проверить включена опция autocmd или нет можно при помощи условия:
if has("autocmd") ... endif
Иногда Vim не правильно определяет тип файла или распознавание данного типа файлов не определено в filetype.vim. Привязать расширение данного файла к определённому типу можно так же через autocmd. Например у нас есть файл шаблон для cmf/cms с типом файла .tmpl и мы хотим, видеть его как html-файл:
autocmd BufNewFile,BufRead *.tmpl setfiletype html
Данная команда так же состоит из двух частей:
Первая часть autocmd BufNewFile,BufRead *.tmpl создаёт триггрер на два события. Первое, начало редактирования нового файла с расширением .tmpl или чтение файла из скелетон-файла. Второе, начало редактирования нового буфера, после чтения файла в него. Можно определить несколько типов файлов через запятую, например: *.tmpl, *.tpl.
Вторая часть команды setfiletype html устанавливает для данного файла тип html.
Узнать какой тип у открытого файла можно командой
:set filetype?или
:set ft?
Можете добавить следующий фрагмент в свой .vimrc (_vimrc в win32) и отредактировать его под свои нужды:
if has("autocmd") "Включаем определение типов файлов filetype on autocmd FileType php setlocal ts=4 sts=4 sw=4 noet autocmd FileType python setlocal ts=4 sts=4 sw=4 et autocmd FileType javascript setlocal ts=4 sts=4 sw=4 noet autocmd FileType html setlocal ts=2 sts=2 sw=2 noet autocmd FileType xhtml setlocal ts=2 sts=2 sw=2 noet autocmd FileType xml setlocal ts=2 sts=2 sw=2 noet autocmd FileType css setlocal ts=2 sts=2 sw=2 noet autocmd FileType vim setlocal ts=4 sts=4 sw=4 noet autocmd FileType apache setlocal ts=2 sts=2 sw=2 noet autocmd FileType yaml setlocal ts=2 sts=2 sw=2 et autocmd BufNewFile,BufRead *.tmpl,*.tpl setfiletype html endif
За основу взят скринкаст Whitespace preferences and filetypes
Комментариев нет:
Отправить комментарий