在vim中更改文件类型时会发生什么?

时间:2012-01-10 13:41:21

标签: vim file-type

如果我在/etc/apache2/sites-available/www.example.com中有一个apache文件,我将其文件类型设置为

:set filetype=apache

那是做什么的?这会改变文件吗?它只反映在vim的实例中吗? vim会议?我可以手动设置文件类型,但随后vim警告我我处于只读模式(/etc/apache2需要root访问权限)。如果我以root身份打开vim,我将不会收到警告,但如果我离开并再次打开它(正常或root),文件类型就会消失。如何使其更加永久,至少从同一会话文件中调用

2 个答案:

答案 0 :(得分:3)

set filetype通过调用所有FileType自动命令来改变vim处理文件的方式。它不会持久。如果您希望始终使用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:StarSetfsetfiletypeapache。在我的系统上,:echo g:ft_ignore_pat将仅显示已忽略的存档文件扩展名。 setfiletype执行set filetype,但只执行一次。

因此,至少在我的系统上,模式*/etc/apache2/sites-*/*会捕获您的文件名并将其设为apache文件。

答案 1 :(得分:0)

文件类型基本上允许Vim更改“文件类型”的设置。它的方式是通过在更改文件类型时为FileType类别触发auto命令。如果FileType的自动命令适用于您的文件,这可能会更改您的文件(但通常插件开发人员将其用于影响突出显示的r / o类型更改,而不是文件的内容)。

如果您担心设置文件类型与文件混乱,您可以通过发出以下命令来查看存在的FileType自动命令:

:au FileType

要将apache文件设置为apache文件类型,可以将以下内容放入〜/ .vimrc中:

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