Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP.net上查找PHP函数,并在Vim状态栏中显示定义_Php_Vim_Map_Wget - Fatal编程技术网

在PHP.net上查找PHP函数,并在Vim状态栏中显示定义

在PHP.net上查找PHP函数,并在Vim状态栏中显示定义,php,vim,map,wget,Php,Vim,Map,Wget,如何进行映射,以便在php.net网页上查找函数定义并在Vim状态栏中显示结果?执行此操作需要几个步骤: 将函数名中的uu替换为-以符合URL命名约定。编辑:如果调用php.net/function\u name,则不需要编辑。 使用Vim系统函数调用wget,并将结果存储在变量或寄存器中 使用hxnormalize规范化wget的输出 使用hxselect选择特定的div 使用sed和regex删除所有标记,如 如果找到结果,则回显,否则回显错误消息 这是将完成所有这些操作的映射,应编辑以适合

如何进行映射,以便在php.net网页上查找函数定义并在Vim状态栏中显示结果?

执行此操作需要几个步骤:

将函数名中的uu替换为-以符合URL命名约定。编辑:如果调用php.net/function\u name,则不需要编辑。 使用Vim系统函数调用wget,并将结果存储在变量或寄存器中 使用hxnormalize规范化wget的输出 使用hxselect选择特定的div 使用sed和regex删除所有标记,如 如果找到结果,则回显,否则回显错误消息 这是将完成所有这些操作的映射,应编辑以适合一条直线

vnoremap <leader>php :<c-u>let fn_name = substitute(@*, "_", "-", "g")<cr>
:let @a=system('wget -q -O - "php.net/manual/en/function.' . fn_name .  '.php" 
\| hxnormalize -l 240 -x 
\| hxselect ".dc-title" -c 
\| sed -e "s/<[^>]*>//g"')<cr>
: if @a != "" 
\| echom @a 
\| else 
\| echom "Could not find function " . fn_name
\| endif<cr>
现在,您可以使用ve突出显示一个单词,然后打印php以获得函数定义


OBS:+x11显示在vim中-版本是@*寄存器正常工作所必需的。

如果您不想依赖可用的php.net,您可以使用vim的php omni complete,phpcomplete来提供签名

将以下内容添加到~/.vim/after/php.vim文件中:


注意:使用fork,您将拥有更多的签名。

您知道php.net/function\u name等将重定向到标准化URL。如果函数存在,您不需要重新格式化字符串。到目前为止,您尝试过什么吗?通过展示您的尝试和描述您遇到困难的部分,我们可以更好地了解您的熟练程度,并给出更准确的答案。目前看来,你只是发布了一个需求,希望有人为你编写代码。@IngoKarkat确实是这样,因为下面的答案是我的!:我同时写了问题和答案。啊!虽然不禁止在堆栈溢出上回答自己的问题,但这里只针对自己的狭隘需求。我更愿意将这个小插件发布在vim.org或GitHub上,这也可以提供更好的反馈和维护。@IngoKarkat是的,我想应该将代码片段概括成一个教程,介绍如何使用简单的映射从网页获取数据。嗯。因此我建议你去。谢谢你的提示!从未让omni complete工作过。Vim 7+附带的omni complete就可以了。您只需要确保在~/.vimrc文件中启用了文件类型插件缩进。这并不意味着PHP omni complete令人惊讶,但它总比什么都没有好
function! s:quick_man(word)
  if !exists('g:php_builtin_functions')
    call phpcomplete#LoadData()
  endif
  let word = a:word . '('
  echo word . get(g:php_builtin_functions, word, ' can not be found')
endfunction

nnoremap <buffer> K :call <SID>quick_man(expand('<cword>'))<cr>