在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>