Что именно происходит, когда вы меняете тип файла в vim? - PullRequest
4 голосов
/ 10 января 2012

Если у меня есть файл apache в /etc/apache2/sites-available/www.example.com, и я установил его тип файла следующим образом

:set filetype=apache

Что это делает?Это вообще меняет файл?Это отражено только в случае vim?Сессия VIM?Я могу вручную установить тип файла, но затем vim предупреждает меня, что я нахожусь в режиме только для чтения (/etc/apache2 нужен доступ с правами root).Если я открою vim как root, я не получу предупреждение, но если я уйду и открою его снова (как обычно или root), тип файла исчезнет.Как сделать это более постоянным, по крайней мере, при вызове из того же файла сеанса

Ответы [ 2 ]

3 голосов
/ 10 января 2012

set filetype изменяет способ обработки файла vim, вызывая все автокоманды FileType.Это не сохраняется.Если вы хотите всегда открывать этот файл с помощью filetype=apache, попробуйте добавить его в .vimrc:

au BufRead,BufNewFile /etc/apache2/sites-available/www.example.com set filetype=apache

Подробнее об этом можно прочитать в:

:help 'filetype'
:help filetypes
:help :autocmd
:help .vimrc

РЕДАКТИРОВАТЬ: , как указано в моем /usr/share/vim/vim73/filetype.vim:

au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf* call s:StarSetf('apache')
au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf*        call s:StarSetf('apache')

s:StarSetf будет setfiletype до apache, если тип файла не соответствует игнорируемому шаблону.В моей системе :echo g:ft_ignore_pat будет отображать только расширения архивных файлов как игнорируемые.setfiletype делает set filetype, но только один раз.

Так что, по крайней мере, в моей системе шаблон */etc/apache2/sites-*/* будет перехватывать ваше имя файла и делать его apache файлом.

0 голосов
/ 10 января 2012

Тип файла в основном позволяет Vim изменять настройки для «типов файлов». Это происходит путем запуска команды auto для категории FileType при изменении типа файла. Это может потенциально изменить ваш файл, если для вашего файла применима автоматическая команда для FileType (но обычно разработчики плагинов используют ее для изменений типа r / o, которые влияют на выделение, а не на содержимое файла).

Если вас беспокоит, что установка типа файла мешает вашему файлу, вы можете увидеть, какие существуют автокоманды FileType, введя следующую команду:

:au FileType

Чтобы настроить ваши файлы apache на типы файлов apache, вы можете поместить что-то вроде следующего в ваш ~ / .vimrc:

:au BufRead /etc/apache2/sites-available/* set ft=apache
...