我正在寻找一种方法来挂钩自定义bash完成功能。问题是,我希望这个完成功能不仅适用于特定命令,还适用于所有命令。
这甚至可能吗?看了一会儿,我无法在网上找到任何资源。
要将问题减少到最简单的情况:是否可以始终对字符串&f 39&f 39进行制表完成?
含义echo f<tab>
会扩展为echo foo
,而ls fo<tab>
会扩展为ls foo
对于上下文:我试图在bash中实现与http://blog.plenz.com/2012-01/zsh-complete-words-from-tmux-pane.html类似的内容,但我开始担心它不可能。
答案 0 :(得分:4)
您可以使用-D
命令的complete
选项执行此操作:
suggest_hello()
{
COMPREPLY=( hello )
return 0
}
complete -D -F suggest_hello
现在每当我输入echo h<Tab>
时,我都会echo hello
。
$ help complete
complete: ...
...
-D apply the completions and actions as the default for commands
without any specific completion defined
...