验证VIM中的PHP语法

Tec*_*lco 39 php syntax vim

我想知道如何在不关闭VIM的情况下验证PHP文件在VIM中是否有效?

谢谢

gpo*_*ojd 47

您可以在vim中执行shell命令.这与php -l filename.php从shell 调用相同:

:!php -l %
Run Code Online (Sandbox Code Playgroud)

我把它映射到我的~/.vim/after/ftplugin/php.vim文件中,这样我只需要按F5:

map <F5> :!php -l %<CR>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将验证保存的文件,因此如果您有未保存的更改,则不会看到它们. (6认同)
  • 这只是测试保存的文件,如何在保存之前测试当前打开的文件? (2认同)

Pet*_*ker 7

使用:make以下php特定设置:

:set makeprg=php\ -l\ %
:set errorformat=%m\ in\ %f\ on\ line\ %l,%-GErrors\ parsing\ %f,%-G
Run Code Online (Sandbox Code Playgroud)

您的语法错误将出现在Quickfix窗口中.您可以使用:copen:cope简称打开此缓冲区.如果您只想在使用错误时打开窗口:cwindow.

您可以使用:cnext:cprev移动quickfix列表跳转到相应的错误.我建议蒂姆·波普的优秀unimpared.vim插件,使整个列表一样简单[q]q.

为了简化工作流程,我建议像这样的映射:

nnoremap <f5> :update<bar>make<bar>cwindow<cr>
Run Code Online (Sandbox Code Playgroud)

现在你可以点击<f5>,缓冲区将被更新(如有必要),linted,任何错误都会出现在quickfix窗口中.

为了使其更加健壮,请将这些命令添加到~/.vim/after/ftplugin/php.vim.例~/.vim/after/ftplugin/php.vim

setlocal makeprg=php\ -l\ %
setlocal errorformat=%m\ in\ %f\ on\ line\ %l,%-GErrors\ parsing\ %f,%-G
nnoremap <buffer> <silent> <f5> :update<bar>sil! make<bar>cwindow<cr>
Run Code Online (Sandbox Code Playgroud)

欲获得更多信息:

:h quickfix
:h makeprg
:h errorformat
Run Code Online (Sandbox Code Playgroud)