我在文档后添加了Maven的bash完成:
http://maven.apache.org/guides/mini/guide-bash-m2-completion.html
除了使用冒号的目标外,一切都很顺利。例如,而不是
mvn eclipse:eclipse
完成越过冒号
mvn eclipse\:eclipse
有关如何解决此问题的任何建议吗?我正在使用Ubuntu 8.10(2.6.27-17-generic)和
$ bash -version
GNU bash,版本3.2.39(1)-release(i486-pc-linux-gnu)
答案 0 :(得分:13)
答案 1 :(得分:8)
这是一个相关问题和另一个建议的解决方案:
How to reset COMP_WORDBREAKS without effecting other completion script?
如前所述,最简单的解决方案是改变COMP_WORDBREAKS
。但是,在完成脚本中修改COMP_WORDBREAKS
并不安全(因为它是一个全局变量,它具有影响其他完成脚本行为的副作用 - 例如scp)。
因此,bash完成提供了一些辅助方法,您可以使用它们以更好,更安全的方式实现目标。
为此Bash completion 1.2添加了两个辅助方法:
_get_comp_words_by_ref
选项的-n EXCLUDE
__ltrim_colon_completions
所以,这是一个如何在完成单词中处理冒号(:)的基本示例:
_mytool()
{
local cur
_get_comp_words_by_ref -n : cur
# my implementation here
__ltrim_colon_completions "$cur"
}
complete -F _mytool mytool
使用辅助方法还可以简化完成脚本,并确保在任何环境(bash-3或bash-4)上获得相同的行为。
您还可以查看man
中的perl
或/etc/bash_completion.d
完成脚本,了解他们如何使用上述帮助方法来解决此问题。
答案 2 :(得分:2)
有关如何解决此问题的任何建议吗?我正在使用Ubuntu 8.10(2.6.27-17-generic)和
丹尼斯的回答绝对正确。
但是为了记录,有一个记录的问题(MNG-3928)来改进有关Maven与bash集成的文档。该问题附有一个脚本,这是当前在线的一个改进版本,只是起作用。你可能想尝试一下。
就个人而言,我使用直接从bazaar下载的Bash Completion script from Ludovic Claude's PPA(捆绑到Ubuntu的maven包中的那个)(她的e是直接download link到HEAD修订版)。真是太棒了。
答案 3 :(得分:1)
我会选择the Maven2 Bash Completion File at willcodeforbeer.com。
希望有所帮助!