В командной оболочке рыбы выделена синтаксическая строка:
Есть ли способ получить такое же поведение в bash?
Есть что-то подобное, но для zsh, а не для bash. Возможно ли, что это может быть перенесено на bash?
Чтобы уточнить для тех, кто не понимает скриншот, объяснение или предоставленную ссылку: Я хочу выделить фактический текст, который вводится в терминале. Команды, скобки, кавычки и т. Д.
bash
syntax-highlighting
fish
Wuffers
источник
источник
Ответы:
Bash использует
readline
для интерактивного ввода, поэтому подсветка синтаксиса должна быть реализована в этой программе. Я нашел обсуждение в группах Google о том, как закодировать такую функцию.Оболочка fish использует собственный редактор строк, специфичный для этой программы, и его нельзя перенести напрямую.
Вы можете обнаружить, что
zsh
это очень похоже на bash, и его редактор строк является расширяемым . Я нашел zsh-syntax-подсветку, чтобы включить эту функцию в zsh.источник
Нет простого способа получить подсветку синтаксиса в GNU Bash (или GNU Readline), но в принципе возможно реализовать собственный редактор строк в сценариях Bash, привязав все пользовательские входные данные к функциям оболочки с помощью встроенной команды
bind -x 'BYTE: SHELL-COMMAND'
. Конечно, можно интегрировать функцию подсветки синтаксиса в свой собственный редактор строк.Фактически я реализовал линейный редактор
ble.sh
с такими функциями, как подсветка синтаксиса и автоматические предложения. Он поддерживает Bash 3.0--5.0. Поскольку он написан в (почти) чистых скриптах Bash, вы можете просто написатьsource
скрипт~/.bashrc
. Вот пример для настройкиble.sh
в bashrc (см. README ):Примечание : я знаю, что иногда ответы на вопросы со ссылками на собственные продукты считаются саморекламой и неприемлемыми, поэтому я воздерживался от ответа на этот вопрос. Однако никаких других решений не появилось долгое время, а также этот вопрос имеет много точек зрения (что отражает его значительный спрос). Поэтому я решил ответить на этот вопрос сегодня. Ссылаясь на следующие мета вопросы / ответы, я сначала описал идею, а затем предоставил ссылку на мой проект в качестве примера реализации.
Да, я должен признать, что это на самом деле самореклама , но я считаю, что это помогает людям, которые хотят эту функцию. Если есть проблемы, я был бы признателен, если бы вы могли сказать мне это в комментариях.
источник
Я не думаю, что подсветка синтаксиса должна происходить на уровне оболочки, но на уровне интерфейса (только мое мнение - и чье-то другое кажется), поэтому я бы посмотрел на «плагины» для терминала или вашей любимой консоли, например, этот плагин для Кейт может помочь, или этот другой, который предлагает подсветку синтаксиса в нано
Вот еще больше разговоров о том, как подсветить синтаксис в терминале:
хотя тут лучше объяснили как
Надеюсь, это поможет
источник
ls
зависимости от типа файла, который не имеет ничего общего с синтаксисом оболочки.