如何在Vim中编辑Php文件时禁用所有HTML语法高亮显示

时间:2017-07-25 23:33:20

标签: php vim vim-syntax-highlighting

我想编写一个生成一些Apache配置文件的Php模板。

就此而言,在编辑模板时, 我不需要在Php标签之外突出显示任何HTML语法,因为这些标签之外的原始代码是一些Apache配置,不是 HTML代码。

Apache语法以及HTML使用<angle brackets> ...然后标准php.vim语法文件会导致 一些令人不安的视觉突出。

问题:有没有办法禁用Php文件中的HTML标记突出显示(同时保留Php语法),使用Vim,而不需要分析/调整原始语法文件?

注意:理想的做法是用Apache配置语法替换HTML语法(仍然在Php标签之外),但现在最重要的是删除这种不需要的HTML语法高亮显示。

1 个答案:

答案 0 :(得分: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文件。但是如果您已经制作了自己的副本而不是使用它,那么它就不会获得这些更新(除非您制作并修补另一个副本)。这个问题是否取决于你。