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脚本中向命令传递和使用参数_Vim - Fatal编程技术网

在Vim脚本中向命令传递和使用参数

在Vim脚本中向命令传递和使用参数,vim,Vim,如何在用户定义的命令中使用函数?作为一个简单的具体示例: 我该如何编写一个命令来响应传递给它的参数 我有这个: command -nargs=1 FW execute ":echo ".<args> 我得到: E121:未定义变量:某物 E15:无效表达式:“:echo”。是什么 当您将命令传递给“execute”时,不需要冒号,它会像您已经处于命令模式一样执行 您也不需要将字符串与“.”和execute连接在一起。如果您希望字符串之间留有空格,默认情况下,它会

如何在用户定义的命令中使用函数?作为一个简单的具体示例:

我该如何编写一个命令来响应传递给它的参数

我有这个:

command -nargs=1 FW execute ":echo ".<args>
我得到:

E121:未定义变量:某物

E15:无效表达式:“:echo”。是什么


当您将命令传递给“execute”时,不需要冒号,它会像您已经处于命令模式一样执行

您也不需要将字符串与“.”和execute连接在一起。如果您希望字符串之间留有空格,默认情况下,它会将多个参数与空格连接在一起

我尝试转义参数,以便将其连接为字符串,这似乎有效:

command -nargs=1 FW execute "echo" '<args>'
试验

一,

45

“2+2”

四,


一如既往,“execute”将执行您传递给它的任何内容,因此请小心。

因为
:echo
接受表达式,所以必须引用字符串。这 是如此的普遍以至于Vim有一个特殊的符号;请参见
:帮助
。现在,为了
:执行
,您需要另一个级别的引用(根据您的评论,您似乎走了这条路):


这几乎就是我想要的。理想情况下,我希望所有参数都被解释为字符串。最后,我使用了:command-nargs=1 FW执行“echo”
command -nargs=1 FW execute "echo" '<args>'
:FW "test"
:FW &shellslash
:FW 45
:FW "2+2"
:FW 2+2
:command! -nargs=1 FW execute "echo" string(<q-args>)
:command! -nargs=1 FW echo <q-args>