最近需要写一些php的程序,于是研究了一下如何在vim中对php进行语法检查。
其实原理也是和在vim中调用g++/gcc对源文件进行编译是一样的(详见VIM-一键编译单个源文件),也是调用外部程序,然后将错误输出到vim的quickfix中去,为什么要输出到quickfix中?……如果这个都不知道,恐怕也不是在用vim吧……,呵呵,OK,我们进入正题。

先来做准备工作,由于大部分读者应该实在windows下开发,所以我们主要讲解windows下的部署(但是vim的配置代码在linux下一样可以完美执行)。
首先,你需要去下载一个php在windows下的压缩包,然后解压到任何一个地方,进入目录,你会发现一个php.exe。OK,把这个目录放到环境标量里去。
第二步,打开你的_vimrc,将如下配置写入并保存。

“检查当前文件代码语法(php){{{
function! CheckSyntax()
 if &filetype!=”php”
  echohl WarningMsg | echo “Fail to check syntax! Please select the right file!” | echohl None
  return
 endif
 if &filetype==”php”
  ” Check php syntax
  setlocal makeprg=\”php\”\ -l\ -n\ -d\ html_errors=off
  ” Set shellpipe
  setlocal shellpipe=>
  ” Use error format for parsing PHP error output
  setlocal errorformat=%m\ in\ %f\ on\ line\ %l
 endif
 execute “silent make %”
 set makeprg=make
 execute “normal :”
 execute “copen”
endfunction
map <F6> :call CheckSyntax()<CR>
“}}}

 然后我们按下F6就可以执行啦~~ 注意

if &filetype!=“php”
 echohl WarningMsg | echo “Fail to check syntax! Please select the right file!” | echohl None
 return
endif

这一段,是规定了必须是.php格式的文件,所以不要拿成错文件来试哦

OK,我们来测试一下,新建一个php文件phpinfo.php,写入如下代码

<?php phpinfo()>>?>

当然,很明显语法是错误的,按下F6,结果如下:

phpcheck1

修改为

<?php phpinfo()?>

并保存后,按下F6,结果如下:

phpcheck2

好啦,那么在vim中进行php语法检查的功能就到这里啦,希望对大家有所帮助~~
版权所有,转载请注明出处.http://www.vimer.cn

Vim(gVim)对排序的妙用

前段时间有博友在群里问了一个关于vim排序的问题,因为时间问题一直没帮忙解决,今天时间正好空出来,就帮忙搞了一下。 原文的问题如下: ...

阅读全文

vim(gVim)统计字节、字符数

前段时间在做文件扫描的时候,有一些关于字节、字符数统计的需求,考虑到有同学也可能用的到,所以整理一下记录在这里。 1.统计当前字符之前的所有字节数 ...

阅读全文

糗事百科网站改版,对应qiushibaike.vim插件升级

前不久糗百改版,所以原有的qiushibaike.vim插件用起来会有一些问题,今天有时间就修改了一下. 如图: 下载地址: http://www.vim.org/scripts/script.php?scr...

阅读全文

15则回应给“在vim中检查php语法格式”

  1. nickyan说道:

    用zendcodeanlyzer会强一些,除了检查语法错误外,还可以检查语法缺陷,相当于编译器的警告

    [回复]

    Dante 回复:

    呃,我对php还不是很熟……以后还要您多多指教呢~~哈哈

    [回复]

  2. 梧桐说道:

    请教博主,为什么我才用这个办法quickfix窗口没有任何提示?我用了网上的几个版本都不可以..我在命令提示符下可以成功,如下
    C:\>”php” -l -n -d html_errors=off a.php

    Parse error: syntax error, unexpected ‘;’ in a.php on line 1
    Errors parsing a.php

    [回复]

    Dante 回复:

    呃,强制指定一下php的路径试一下?

    [回复]

    梧桐 回复:

    果然是。。博主神人。。虽然不清楚原理。。。我来试试把zendcodeanlyzer折腾进quickfix

    [回复]

  3. 梧桐说道:

    博主。。又来厚颜求救了,ZendCodeAnalyzer的错误提示如下C:\ZendCodeAnalyzer a.php

    Zend Code Analyzer 1.2.3
    Analyzing C:\Users\WuTongFei\Desktop\a.php…
    C:\Users\WuTongFei\Desktop\a.php(line 1): Zend Engine message: syntax e
    rror, unexpected ‘;’
    [Zend Code Analyzer] Aborted.
    shell returned 3
    Hit any key to close this window…

    求一个匹配的规则。。我写的
    (line\ %l):\ Zend\ Engine\ message:\ syntax\ error,\ %m
    这个不行。。

    [回复]

    Dante 回复:

    呃。。。这个写的不对的。。我这几天就会写篇文章来介绍Zend Code Analyzer与vim的搭配,到时候详细说一下。

    [回复]

  4. 静水之人说道:

    学习了,求发一个linux下的。

    [回复]

    Dante 回复:

    已经发送,请查收。

    [回复]

  5. 伴随着你说道:

    这个对标点符号没有错误提示。
    这里真不错哈,学会用几个插件了~

    [回复]

  6. [...] 本博之前有写过一篇vim+php.exe检查php语法的文章-在vim中检查php语法格式,这种方式的优点是只依赖php环境本身,但缺点也很明显:检查并不严格,很多错误检查不出来。 [...]

  7. 荒野无灯说道:

    这个好啊,收下了~~

    [回复]

  8. fredyj说道:

    学习中,求发一个win 和 linux 下面的版本

    [回复]

  9. 大舒说道:

    有个问题。。既然博主都能写vim脚本了,为什么不直接把vim的快捷键设置成遇到PHP才起作用。。 然后我们按下F6就可以执行啦~~ 注意if &filetype=“php”map :call CheckSyntax()endif

    [回复]

    大舒 回复:

    F6和尖括号被过滤掉了

    [回复]

发表评论