Я работаю над завершением для команды, которая принимает аргумент типа «один: два: три».
Проще говоря, я хочу, чтобы ':' обрабатывался так же, как символ пробела по умолчанию. Есть ли простой способ сделать это, что мне не хватает?
Я обнаружил, что ':' находится в 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] будет «один»
Еще хуже то, что если вы нажмете [TAB] сразу после разделителя ':', он будет действовать в основном как пробел:
cmd one:[TAB]
Теперь COMP_CWORD будет 2, а COMP_WORDS [COMP_CWORD-1] будет «один».
Я могу легко разобрать командную строку из COMP_LINE, но лучше найти способ просто сделать ':' действовать как '' в моем произвольном завершении. Возможно ли это?