Как включить завершение вкладки из терминала, определенного для исполняемого файла - PullRequest
7 голосов
/ 14 марта 2010

В bash я считаю возможным включить завершение табуляции на терминале для терминов, которые являются специфическими для вызываемого исполняемого файла.

Например, при наличии исполняемого файла «есть» с допустимыми аргументами {торт, морковь, банан}, ввод «есть машина» должен завершиться до «есть морковь».

Я полагаю, что это возможно, потому что я видел это с помощью команды 'ant', завершающей свои цели (хотя, как это было настроено, я не знаю).

Как можно реализовать это поведение?

Ответы [ 2 ]

9 голосов
/ 14 марта 2010

Это делается с помощью сценариев в /etc/bash_completion.d/, и если вы хотите написать собственную поддержку завершения для исполняемого файла, вот учебник, с которого можно начать .

Если вам нужно, чтобы поведение работало только с общими исполняемыми файлами, ваш дистрибутив Linux, вероятно, имеет пакет bash-complete , доступный с поддержкой общих команд.

0 голосов
/ 14 марта 2010

Это очень похоже на имя файла globbing , где оболочка попытается выполнить автозаполнение на основе подстановочного символа подстановки ... например ....

echo foo*

выведет список всех файлов в текущем каталоге, начиная с 'foo' ... оболочка bash скомбинировала шаблон и развернула его в список файлов ...

У MSDOS была похожая концепция, хотя она не была явно связана во время выполнения, я говорю о старых вещах в Turbo C, когда подстановка с подстановочными знаками была активирована путем ссылки на 'wildargs.obj' (если моя память верно, внутренне, этот код будет перебирать каталог и расширять список на основе сопоставления с шаблонами.

В Linux / * nix land глобирование является стандартным, но, однако, вы не можете вручную нажать клавишу Tab последовательности, чтобы выполнить сопоставление или завершение шаблона ... поскольку разные терминалы могут переводить клавишу Tab по-разному и, конечно, обрабатывать ее по-разному ...

...