2017-07-25 98 views
0

我想編寫一個生成一些Apache配置文件的Php模板。如何在Vim中編輯Php文件時禁用所有HTML語法高亮

對於這件事,而編輯模板, 我不需要任何HTML語法PHP標記外突出,因爲這些標籤外的原始代碼是一些Apache的配置, HTML代碼。

Apache語法以及HTML使用<angle brackets> ...然後標準php.vim語法文件導致 一些令人不安的視覺突出顯示。

問:有沒有一種方法來禁用HTML標籤的PHP文件裏高亮(同時保持PHP語法),Vim的使用,沒有分叉/調整原來的語法文件?

注意:理想的做法是用Apache配置語法替代HTML語法(仍在PHP標籤之外),但現在最重要的是刪除這種不需要的HTML語法突出顯示。

+0

您可能需要一個不會突出顯示HTML的自定義PHP語法文件。 – staticsan

+0

@staticsan:如果是這樣,我可能會放棄它...這不是一個如此重要的點 – yolenoyer

回答

1

這並不困難,但如果您希望保持語法文件更新,可能會有持續的維護成本。

首先,找到你的Vim庫。在Mac/Linux系統上,這通常是/usr/share/vim/vim74/syntax/之類的地方。那裏將有一個名爲php.vim的文件。這是包含PHP所有語法高亮規則的文件。

製作個人語法目錄,如果您還沒有。然後在該目錄中創建全局php.vim文件的副本。

mkdir -p $HOME/.vim/syntax 
cp /usr/share/vim/vim74/syntax/php.vim $HOME/.vim/syntax 

然後修改你所做的副本。我在系統中找到的文件在頂部附近有一個這樣的部分。

if version < 600 
    unlet! php_folding 
    if exists("php_sync_method") && !php_sync_method 
    let php_sync_method=-1 
    endif 
    so <sfile>:p:h/html.vim 
else 
    runtime! syntax/html.vim 
    unlet b:current_syntax 
endif 

正如您所見,有兩種情況會讀取/導入html.vim文件。您可以評論的情況下出局(3條線的變化):

if version < 600 
    unlet! php_folding 
    if exists("php_sync_method") && !php_sync_method 
    let php_sync_method=-1 
    endif 
    " so <sfile>:p:h/html.vim 
else 
    " runtime! syntax/html.vim 
    " unlet b:current_syntax 
endif 

正在進行的維護成本以這種形式出現:Vim的升級,定期全球php.vim文件將被更新。但是,如果您製作了自己的副本,而不是使用這些更新(除非您製作並修補其他副本)。這是否是一個問題取決於你。

+0

我終於做到了這一點,謝謝 – yolenoyer

+0

在同一時間,我注意到原來的'php.vim'(版本2016年12月11日):許多Php關鍵字突出顯示*外部* php標籤!例如:'PDO','Directory','Iterator' ......但無論如何:我的問題解決了 – yolenoyer