我正在完成一个带有参数“one:two:three”的命令。
简单来说,我希望':'像空格一样被默认处理。我是否遗漏了一些简单的方法?
我发现':'在COMP_WORDBREAKS中,但COMP_WORDBREAKS中的字符也被视为单词。
因此,如果命令行是:
cmd one:tw[TAB]
COMP_CWORD将是3,COMP_WORDS [COMP_CWORD-1]将是“:”。
为了比较,如果命令行是:
cmd one tw[TAB]
COMP_CWORD将是2,而COMP_WORDS [COMP_CWORD-1]将是'one'
更糟糕的是,如果在“:”分隔符后立即按[TAB]键,则它的行为大多类似于空格:
cmd one:[TAB]
现在COMP_CWORD的值为2,COMP_WORDS[COMP_CWORD-1]的值为'one'。
我可以轻松地从COMP_LINE中解析命令行,但最好找到一种方法,使得在我的自定义完成中“:”的作用就像空格一样。这可行吗?