我不是 vim 脚本专家,所以这可能不是一个理想的解决方案,但这对我有用。
首先在viewdoc_pman.vim文件中创建一个自定义的 viewdoc 处理程序(如果您使用推荐的病原体安装,可以在~/.vim/bundle/viewdoc/plugin/目录中找到它)。
function ViewDoc_pman_custom(topic, filetype, synid, ctx)
let l:tagpath = '/etc/vim/bundle/yii-api-vim/doc/tags'
let l:shell = printf('grep %s %s', shellescape(a:topic,1), l:tagpath)
let l:output = system(l:shell)
if !v:shell_error
return g:ViewDoc_help(a:topic, a:filetype, a:synid, a:ctx)
else
let l:ViewDoc_pman_old = function('ViewDoc_pman')
return l:ViewDoc_pman_old(a:topic, a:filetype, a:synid, a:ctx)
endif
endfunction
该函数使用grep在yii-api-vim标签文件中查找指定的主题字符串。如果它在那里找到它,它只是将命令转发到默认的ViewDoc_help处理程序(这是假设您已经安装了yii-api-vim文档,以便它可以在标准帮助下正常工作)。
如果grep没有找到任何东西,那么它会回退到调用ViewDoc_pman函数中的旧 php 处理程序。请注意,我们不能直接调用g:ViewDoc_pman,因为这是我们将要覆盖的变量。我们需要使用function('ViewDoc_pman')
并调用旧函数的句柄。
最后,您需要找到这两行:
let g:ViewDoc_pman = function('ViewDoc_pman')
let g:ViewDoc_php = function('ViewDoc_pman')
并用这两个替换它们:
let g:ViewDoc_pman = function('ViewDoc_pman_custom')
let g:ViewDoc_php = function('ViewDoc_pman_custom')
这会强制将所有 php 文档查询转发到我们新的自定义处理程序,而不是旧的ViewDoc_pman函数。
如果你不想编辑viewdoc_pman.vim文件,你可以将 viewdoc 处理程序放在你的.vimrc文件中。然后设置g:ViewDoc_pman和g:ViewDoc_php变量,您需要添加以下行:
autocmd VimEnter * let g:ViewDoc_pman = function('ViewDoc_pman_custom')
autocmd VimEnter * let g:ViewDoc_php = function('ViewDoc_pman_custom')
强制在autocmd VimEnter
所有插件加载后进行分配,否则这些变量将被插件覆盖,您的自定义处理程序将永远不会被调用。