2012-01-10 67 views
4

如果我有/etc/apache2/sites-available/www.example.com一個Apache文件,我設置的文件類型,像這樣在vim中更改文件類型時會發生什麼?

:set filetype=apache 

是什麼呢?這是否改變了檔案?它只反映在vim的實例中嗎? vim會議?我可以手動設置文件類型,但隨後vim警告我我處於只讀模式(/etc/apache2需要root訪問權限)。如果我以root身份打開vim,我不會得到警告,但是如果我離開並再次打開它(如正常或root),則filetype消失。如何讓這個更加永久,至少從同一會話文件中調用時

回答

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文件。

+0

這看起來像是一個非常糟糕的解決方案,因爲它可能會不合理地變大。 – puk 2012-01-10 13:57:01

+0

vim知道如何通過使用擴展模式自動打開一些文件。特別是,'/ etc/apache2'中的'* .conf'文件被自動分配'filetype = apache'。你也可以爲'/ etc/apache2/sites-available/*'製作一個包含模式。否則......好吧,強硬。 – Amadan 2012-01-10 14:01:59

+0

現在我檢查了'/ etc/apache2/sites-available/*'應該已經默認爲'filetype = apache' ... – Amadan 2012-01-10 14:04:04

0

filetype基本上讓Vim改變'文件類型'的設置。這樣做的方式是在更改文件類型時通過爲FileType類別啓動自動命令。如果FileType的自動命令適用於您的文件(但通常插件開發人員將其用於影響高亮顯示的r/o類型更改,而不是文件內容),則這可能會更改您的文件。

如果您擔心設置文件類型與文件擺弄你可以看到什麼文件類型自動命令發出以下命令存在:

:au FileType 

要安裝Apache的文件是你可以把東西阿帕奇文件類型像下面一樣進入你的〜/ .vimrc:

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

我有點兒希望vim會話文件足夠聰明以保存文件類型。 – puk 2012-01-10 14:04:46

相關問題