当我将 grep ag ack 输出重定向到 vim 时,如何让 shell TAB 补全起作用?

当我将 grep ag ack 输出重定向到 vim 时,如何让 shell TAB 补全起作用?

我定义ag为bash函数,使使用相对透明

ag() { [ $# -gt 0 ] && vim -c silent\ SyntasticToggleMode -c copen -q <(/usr/bin/ag --silent --vimgrep --nogroup "$@") || /usr/bin/ag; }

这工作正常,但如果我尝试使用 TAB 完成文件名,vim则会立即执行,并且会卡住

$ [git:master] ag sense<TAB>
Vim: Warning: Output is not to a terminal

唯一的出路是从另一个 shell 杀死卡住的 vim 进程。

这里出了什么问题,如何升级这个 bash 函数(或找到一些替代方案)以使其兼容 TAB 补全?

编辑ag不发送任何上游完成

$ [git:master] complete -p ag
-bash: complete: ag: no completion specification

相关内容