是否可以为 :! 启用 bash_completion或:r!在 VIM 中?
我可以使用 :shell 输入当前目录并运行命令。 bash_completion 工作正常。
但是如何让 bash_completion 在 中工作:!命令或:r !命令情况?
注意。我是 Emacs 用户,Emacs M-! 命令不允许这样的事情(还有 Mx shell,你需要 Mx term 才能获得 bash_completion) 。
I can use :shell to enter current dir and run commands. bash_completion work fine.
But how get bash_completion working in :! command or :r ! command case?
Note. I am Emacs user and Emacs M-! command don't allow such things (also M-x shell, you need M-x term to get bash_completion).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是不可能的。 @Prince Goulash 指的是 vim 本身完成的简单文件名补全。如果您知道如何强制 bash 在某处通过管道完成变体,您可以为自定义命令创建一个完成函数,该函数可能反过来调用内置
:!
,但重新定义内置命令的完成是不可能的。我个人不知道如何使用 bash 执行此操作,并且知道尝试在 zsh 中执行此操作会导致通过重新定义 zsh 内置命令(例如
compadd
)、使用 pexpect (python)、Expect 来进行肮脏的黑客攻击(perl)、expect (tcl)、zsh/zpty 或类似于以交互模式运行 shell 的东西,并发明了 zsh->vim IPC 机制(相反方向要简单得多)(我曾经开始研究类似的zsh 的模块,但由于这种方式存在太多问题而停止了)。It is not possible. What @Prince Goulash is referring to is a simple filename completion done by vim itself. If you know how to force bash to pipe completion variants somewhere you can create a completion function for custom command which may in turn call built-in
:!
, but redefining completion for built-in commands is not possible.I personally do not know how to do this with bash and know that trying to do so in zsh results in dirty hacks with redefining zsh built-in commands (like
compadd
), using pexpect (python), Expect (perl), expect (tcl), zsh/zpty or something similar to run shell in interactive mode and inventing zsh->vim IPC mechanism (in opposite direction it is much simpler) (I once started working on a similar module for zsh, but stopped as there were too much problems on this way).你的 .vimrc 里有吗
?这会自动启用
:!
的前模式补全。要查看可能的完成列表,您还可以使用并研究
wildmode
选项。Have you got
in your .vimrc? This automatically enables ex-mode completion for
:!
. To see the list of possible completions you could also useand investigate the
wildmode
options.