Как получить цветную вкладку завершения?

17

Есть ли способ получить цветной вывод при использовании табуляции в терминале? Мои цвета везде в порядке, поэтому я знаю, что успешно включил цветной терминал.

Использование bash в Ubuntu (10.10).

Райан
источник
Как указать «цветной вывод при использовании завершения табуляции»?
slhck

Ответы:

21

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

Если это важная функция для вас, я бы порекомендовал вам рассмотреть возможность использования zsh.

Обновить

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

colored-stats

Readline в предстоящем Bash 4.4 добавляет переменную, которая позволяет цвету указывать совпадающую часть строки во время завершения табуляции.

colored-completion-prefix

Вы можете увидеть значения этих переменных, используя

bind -v | grep color

Чтобы установить их, добавьте строки в ваш ~/.inputrcфайл, такие как:

set colored-stats on
Приостановлено до дальнейшего уведомления.
источник
1
@Ryan: Zsh вполне совместим с Bash. Возможно, вы найдете переключение довольно простым. У него много мощных функций, которых нет у Bash (или вам нужно использовать внешние утилиты). Есть только несколько вещей, которые существенно отличаются по основам. Например, индексы массива основаны на единицах, а не на нулях, но на это влияет параметр. Я использую Zsh только изредка, хотя.
Приостановлено до дальнейшего уведомления.
1
@AstroFloyd: из Bash Manua : «Определения цвета взяты из значения LS_COLORSпеременной среды». Документация по этой переменной находится здесь . Там нет настройки для manстраниц, поэтому вам нужно посмотреть, где ваши LS_COLORSнастройки и найти цветовую комбинацию, которая соответствует и изменить его. В моей системе manимена страниц не окрашиваются при завершении табуляции (и прерваны символические ссылки, а lsвыводятся красным на сером , ...
Приостановлено до дальнейшего уведомления.
1
... светло-голубые, как действительные символические ссылки во время завершения табуляции).
Приостановлено до дальнейшего уведомления.
1
@AndyCarlson: bind -v | grep colorпоказывает и то set colored-completion-prefix onи другое set colored-stats on? Если это так, что произойдет, если вы наберете букву а, а затем дважды нажмете клавишу Tab? Если вы добавили настройки в свой, ~/.inputrcно не запустили новый терминал или не запустили re-read-init-fileнажатие control-x control-r, настройки не вступят в силу.
Приостановлено до дальнейшего уведомления.
2
@AndyCarlson Что выводится в приглашении bash при нажатии ctrl-x ctrl-v?
Приостановлено до дальнейшего уведомления.
3

Я не знаю о цветах завершения для параметров команды и аргументов, но для имени файла и каталогов, в соответствии с ( /unix//a/133866 ) user495470 заявляет, что в Bash 4.3 и позже вы можете добавить set colored-stats onв, ~/.inputrcчтобы получить цвет завершение, когда вы делаете ls <tab>.

Джеймс Чой
источник