我可以使用 :shell 输入当前目录并运行命令。bash_completion 工作正常。
但是如何让 bash_completion 在:! 命令或:r !命令箱?
注意。我是 Emacs 用户和 Emacs M-!命令不允许这样的事情(还有Mx shell,你需要Mx 术语来获得 bash_completion)。
我可以使用 :shell 输入当前目录并运行命令。bash_completion 工作正常。
但是如何让 bash_completion 在:! 命令或:r !命令箱?
注意。我是 Emacs 用户和 Emacs M-!命令不允许这样的事情(还有Mx shell,你需要Mx 术语来获得 bash_completion)。
这不可能。@Prince Goulash 指的是 vim 本身完成的简单文件名完成。如果您知道如何强制 bash 在某处通过管道传输完成变体,您可以为自定义命令创建一个完成函数,该函数可能反过来调用 built-in :!
,但无法重新定义内置命令的完成。
compadd
我个人不知道如何使用 bash 执行此操作,并且知道尝试在 zsh 中执行此操作会导致使用 pexpect (python)、Expect (perl)、expect (tcl)重新定义 zsh 内置命令(如) , zsh/zpty 或类似以交互模式运行 shell 并发明 zsh->vim IPC 机制(相反方向更简单)(我曾经开始为 zsh 开发类似的模块,但由于问题太多而停止在这条路上)。
你有没有
set nocompatible
在你的 .vimrc 中?这会自动为:!
. 要查看可能的完成列表,您还可以使用
set wildmenu
并调查wildmode
选项。