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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/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
Vimscript:如何将参数与使用read的函数一起使用?_Vim - Fatal编程技术网

Vimscript:如何将参数与使用read的函数一起使用?

Vimscript:如何将参数与使用read的函数一起使用?,vim,Vim,我刚开始学习Vimscript 我想编写一个函数,在拆分中打开bash函数的输出 如果我执行类似于:calloutputscript(“echo'hello'”)的操作,我希望打开一个包含“hello”的新缓冲区 我尝试了以下代码: function! OutputScript(cmd) if winbufnr(2) == -1

我刚开始学习Vimscript

我想编写一个函数,在拆分中打开bash函数的输出

如果我执行类似于
:calloutputscript(“echo'hello'”)
的操作,我希望打开一个包含“hello”的新缓冲区

我尝试了以下代码:

function! OutputScript(cmd)                                                      
   if winbufnr(2) == -1                                                       
     silent vsplit output                                                     
   else                                                                       
     silent wincmd l                                                          
   endif                                                                      
   silent normal ggdG                                                         
   read! a:cmd
endfunction       
如果我
:调用OutputScript(“echo'hello')
,我的输出窗口如下所示:

bash: a:cmd: command not found

我需要使用什么语法将
cmd
用作
read
的参数?

只需替换
read!a:cmd
by:

exe "read! ".a:cmd
与大多数vim命令一样,
read
命令不需要vim变量。为了在通用命令中使用变量,必须将其“封装”到
exe
命令中,该命令可以理解任何vim表达式


是用于连接两个字符串的vim运算符。

是的,可以使用无法启动任何其他命令的每个快捷方式;所以
exe
exec
execu
。。。可以使用,但不能使用
ex
,因为有
exit
exusage
命令。当您对vim更为熟悉时(甚至在此之前),您确实应该尝试Quickrun插件,这在很多方面帮助你从外部语言中获得输出:谢谢,这真的很有用,也是我想要的。我使用vim有一段时间了,但直到现在我才开始在vimscript和插件上投入时间来提高效率。