使用input()提示符使用参数完成vim和shell命令

使用input()提示符使用参数完成vim和shell命令,vim,tab-completion,Vim,Tab Completion,我需要从用户处接收vim命令并将其存储到变量中。用户应该能够键入带有参数的命令,就像Ex模式一样,通过Tab自动完成。我发现这可以通过两种方式实现,一种是定义自定义命令,另一种是将输入与命令完成行为结合使用: 完成行为 -complete=command-Ex-command和参数 问题是输入拒绝使用参数完成shell命令,尽管定义自定义命令没有问题 自定义命令测试: 在打字的过程中,完成操作一直有效。我能够完成任何vim或shell命令,如!ls和文件名,如/tmp。没问题 输入测试: 在这个

我需要从用户处接收vim命令并将其存储到变量中。用户应该能够键入带有参数的命令,就像Ex模式一样,通过Tab自动完成。我发现这可以通过两种方式实现,一种是定义自定义命令,另一种是将输入与命令完成行为结合使用:

完成行为

-complete=command-Ex-command和参数

问题是输入拒绝使用参数完成shell命令,尽管定义自定义命令没有问题

自定义命令测试:

在打字的过程中,完成操作一直有效。我能够完成任何vim或shell命令,如!ls和文件名,如/tmp。没问题

输入测试:

在这个测试中,您可以输入一个命令:prompt,但是当您键入例如!ls并按Tab键-无任何情况发生,完成不起作用

我错过什么了吗?还是一个Vim错误?

试试这个:

:let mycmd = input("Enter a command: ", "", "shellcmd")

要完成shell命令

我尝试过,文件名完成不起作用。此外,我希望仍然能够输入正常的vim命令,而不仅仅是shell。您希望自动完成shell命令名,不是吗?使用输入提示符@svlasov完成shell命令
:ExCmd !ls /tmp
:let mycmd = input("Enter a command: ", "", "command")
:let mycmd = input("Enter a command: ", "", "shellcmd")