Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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
当vim命令在浏览器中的光标处打开url时,如何重定向标准输出?_Vim - Fatal编程技术网

当vim命令在浏览器中的光标处打开url时,如何重定向标准输出?

当vim命令在浏览器中的光标处打开url时,如何重定向标准输出?,vim,Vim,我正在使用一个vim插件,当我想在在线api文档中查找光标下的函数时,我键入“\da” 以下是键映射的vimscipt代码: nnoremap <buffer> <LocalLeader>dda :silent call <SID>OpenURL('http://api.drush.ws/api/function/')<CR><C-L> nnoremap-dda:静默调用OpenURL('http://api.drush.ws/api

我正在使用一个vim插件,当我想在在线api文档中查找光标下的函数时,我键入“\da”

以下是键映射的vimscipt代码:

nnoremap <buffer> <LocalLeader>dda :silent call <SID>OpenURL('http://api.drush.ws/api/function/')<CR><C-L>
nnoremap-dda:静默调用OpenURL('http://api.drush.ws/api/function/')
当命令运行时,它将标准输出从shell写入当前vim缓冲区,因此短语: “在现有浏览器会话中创建了新窗口。”将写入当前缓冲区

这里还有openurl函数:

  function s:OpenURL(base)
     let open = b:Drupal_info.OPEN_COMMAND
     if open == ''
       return
     endif
     let func =  shellescape(expand('<cword>'))
     if a:base == 'api.d.o'
       if strlen(b:Drupal_info.CORE)
         execute '!' . open . ' http://api.drupal.org/api/search/' .
         \ b:Drupal_info.CORE . '/' . func
       else
         execute '!' . open . ' http://api.drupal.org/' . func
       endif
     else
       execute '!' . open . ' ' . a:base . func
     endif
   endfun
函数s:OpenURL(基本)
let open=b:Drupal\u info.open\u命令
如果打开=“”
返回
恩迪夫
设func=shellescape(展开(“”))
如果a:base=='api.d.o'
if strlen(b:Drupal_info.CORE)
执行“!”。打开。”http://api.drupal.org/api/search/' .
\b:Drupal_info.CORE.“/”。func
其他的
执行“!”。打开。”http://api.drupal.org/' . func
恩迪夫
其他的
执行“!”。打开。a:基地。func
恩迪夫
结束
如何修复此/重定向标准输出

(我正在使用ubuntu/gnome。)


谢谢

我没有看到任何将命令输出放入当前缓冲区的内容。但如果您根本不想观察命令输出,可以执行以下两种操作之一:

  • 在每个
    前面放置
    静音
    (注意:您必须在
    静默
    之后有空格)并添加
    重画紧靠
    endfunction
    之前的命令
  • 替换每个
    执行“!”调用system()
    (在这种情况下,参数中有换行符很可能导致错误)
  • 调用系统()修复了该问题。非常感谢!