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



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

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

Apache语法以及HTML使用<angle brackets>...那么标准php.vim语法文件导致 一些令人不安的视觉亮点。

问题:有没有办法禁用 Php 文件中 HTML 标签的突出显示(同时保留 Php 语法(,使用 Vim,并且不分叉/调整原始语法文件?

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

这并不难做到,但如果您想使语法文件保持最新,可能会有持续的维护成本。

首先,找到你的 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 文件将定期更新。但是,如果您制作了自己的副本,并且正在使用该副本,则它不会获得这些更新(除非您制作并修补另一个副本(。这是否是一个问题取决于你。

最新更新