【发布时间】:2010-09-13 14:11:59
【问题描述】:
我正在尝试为我编写的实用程序脚本设置 bash 补全,因此我将以下脚本添加到 /etc/bash_completion.d:
_mcd()
{
local cur words
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
words=`mcd-completion-words`
COMPREPLY=( $(compgen -W "${words}" -- "$cur") )
return 0
}
complete -F _mcd mcd
mcd-completion-words 脚本以编程方式查找命令的可用运算符。当我重新启动 bash(或获取脚本)时,我可以成功完成制表符,但如果这样做,我将无法再退格超过已完成的字符。
另外,如果我尝试列出所有选项(例如,我尝试在没有任何单词的情况下完成制表符),bash 会在命令中添加一个制表符,我也无法退格。
如何让 bash 模仿正常的文件完成行为?任何帮助表示赞赏。谢谢!
这是 mcd-completion-words 的简化测试用例,它仍然表现出相同的行为。奇怪的是,Dennis 的情况也适用于我(例如,用 words="one 二三" 代替时)。
#!/usr/bin/env php
<?php
print "one two three four five six seven eight nine";
【问题讨论】:
-
当我做
words="some test words"时,它似乎有效。请发布mcd-completion-words的内容。问题可能就在那里。 -
我在 Ubuntu 11.10 上遇到了完全相同的问题。
标签: bash tab-completion