【发布时间】:2015-04-24 11:54:34
【问题描述】:
我需要接收来自用户的 vim 命令并将其存储到变量中。用户应该能够键入带有参数的命令,就像Ex 模式(通过Tab 自动完成)。我发现这可以通过两种方式完成,通过定义自定义命令或使用input() 和command 完成行为:
完成行为
-complete=commandEx 命令(和参数)
问题是input() 拒绝使用参数完成 shell 命令,尽管如果定义自定义命令没有问题。
自定义命令测试:
:command! -nargs=+ -complete=command ExCmd let mycmd=<q-args>
用法:
:ExCmd !ls /tmp
在打字时,补全一直有效。我能够完成任何 vim 或 shell 命令(如!ls)和文件名(如/tmp)。没问题。
input() 测试:
:let mycmd = input("Enter a command: ", "", "command")
在此测试中,您会收到Enter a command: 提示,但是当输入例如!ls 并按Tab 时 - 没有任何反应,完成不起作用。
我错过了什么吗?还是 Vim 的 bug?
【问题讨论】:
标签: vim tab-completion