Check Syntax or Execute PHP file in Vim
以前,我介绍过了如何在 VIM 中检查 PHP 的语法错误。这方面的知识,在网上也有很多人介绍。平时我们在编写 PHP 程序的时候,检查语法错误非常的方便,这样我们在浏览器中查看 PHP 程序运行效果时,就不会看到令人恼火的 PHP 语法错误了。
但有些时候,我们如果是想运行一小段简单的 PHP 代码时,该怎么办呢?以前我是通过 EditPlus 的 User Tools 来实现的,EP 的 User Tools 可以设定一个外部程序(比如 PHP 解析器),来运行 PHP 文件,然后在 Output Window 中显示运行的结果,非常方便。这次呢,我会介绍一下如何在 Vim 中实现相同的功能。
首先看一下下面的代码:
" => Parse and execute current php file
"""""""""""""""""""""""""""""""""""""""""""""""""""""
function! PhpParseExecute()
" Parse and execute current php file
setlocal makeprg=C:\PHP5\php.exe\ -f
" Set shellpipe
setlocal shellpipe=>
" Use error format for parsing PHP error output
setlocal errorformat=%m\ in\ %f\ on\ line\ %l
make %
clist
endfunction
map <F6> :call PhpParseExecute()<CR>
imap <F6> <ESC>:call PhpParseExecute()<CR>
如果你能看的懂 Vim Script,上面的代码一定会让你豁然开朗,其实这也是 Vim 官方网站的中的一个 Script,并不是我的发现。在很早之前我就在不断的思考,如何在 Vim 中执行 PHP 文件。我当初的做法是使用 “!” 调用 php.exe 来运行 PHP 文件,这个方法的确可行,但糟糕的是,Vim 在 Windows 平台上调用外部程序会弹出一个 DOS 窗口,非常的 Ugly!于是我只好放弃了这种非常之不优雅的做法,呵呵!直到我前段时间看到这个 Script,于是一切问题迎刃而解:P。
上面的 Script 思路很清晰,首先设置 makeprg 指定 PHP 解析器的位置,并使用 :make 命令来运行 PHP 脚本,然后设定 shellpipe 将运行结果发送到 VIM 的 “error file”,这里的 “>” 是 DOS 系统上面的默认值。最后执行 clist,打开 QuickFix 窗口,显示运行结果,如果有错误则直接显示 PHP 错误信息,而配置的 errorformat 正则表达式,在返回 PHP 错误时,按下回车键后,直接关闭 QuickFix,并把光标定位到出错的一行。
同样,我们也可以根据上面的脚本模板来改造一下,PHP 语法检查的功能:
" => Check PHP Syntax using makeprg
"""""""""""""""""""""""""""""""""""""""""""""""""""""
function! PhpCheckSyntax()
" Check php syntax
setlocal makeprg=\"C:\php5\php.exe\"\ -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
make %
endfunction
" Perform :PhpCheckSyntax()
map <F5> :call PhpCheckSyntax()<CR>
imap <F5> <ESC>:call PhpCheckSyntax()<CR>
为什么要改造这个语法检查的功能呢?因为按照以前做法,两者会冲突的,呵呵



Vim 的 PHP 语法检查 « Attractive Verdana said,
Wrote on June 26, 2007 @ 1:54 am
[...] 该 Tips 已经更新,请见: Check Syntax or Execute PHP file in Vim [...]
wen said,
Wrote on May 29, 2008 @ 3:54 pm
你好请教你php语法检查问题
我按照你上面代码写在.vimr中了
每次检查都会出现这个提示:
:!make >c\docume~1\wen\locals~1\temp\vie60.tmp 2>&1
shell 返回1
(1/2):’make’ 不是内部或外部命令,也不是可以运行程序。
请按 enter 或其他命令继续
请问如何解决?谢谢!
我用DOS可以输出但是用QUICKFIX就出现这个问题