我需要从用户接收vim命令并将其存储到变量中。用户应该能够使用Ex
模式的参数键入命令(通过 Tab 自动完成)。我发现这可以通过两种方式完成:定义自定义命令或使用input()
和command
完成行为:
完成行为
-complete=command
Ex命令(和参数)
问题是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?
答案 0 :(得分:0)
试试这个:
:let mycmd = input("Enter a command: ", "", "shellcmd")
完成&#34; shell命令&#34;