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