Есть ли способ заставить bash иметь подсветку синтаксиса, как у рыбы?

17188
Wuffers

В командной оболочке рыбы выделена синтаксическая строка:

Есть ли способ заставить bash иметь подсветку синтаксиса, как у рыбы?

Есть ли способ получить такое же поведение в bash?

Есть что-то подобное, но для zsh, а не для bash. Возможно ли, что это может быть перенесено на bash?

Чтобы уточнить для тех, кто не понимает скриншот, объяснение или предоставленную ссылку: Я хочу выделить фактический текст, который вводится в терминале. Команды, скобки, кавычки и т. Д.

34
Не думайте, что bash принимает плагины, как zsh, поэтому может потребоваться специальная сборка оболочки / двоичного файла bash. Есть ли причина не использовать рыбу? Кроме того, спасибо, что указал мне на другую оболочку, чтобы поиграть с ней и посмотреть, смогу ли я изучить некоторые дополнительные возможности хаха. Matrix Mole 12 лет назад 0
@Matrix: я не могу использовать рыбу, потому что у меня очень сложная конфигурация bash, от которой я не мог отказаться. Wuffers 12 лет назад 1
К сожалению, я не думаю, что в настоящее время это возможно в bash. Я уверен, что проведенное вами исследование также указывает на это. Если вы абсолютно не можете переключиться на zsh, то это понятно, но в противном случае вы можете посмотреть на [fizsh] (http://sourceforge.net/projects/fizsh/), который включает в себя некоторые похожие на рыбу функции в zsh, хотя это не обновляется с февраля, поэтому, возможно, предоставленная вами ссылка на подсветку синтаксиса zsh будет более надежной. voithos 12 лет назад 0
Это было бы чрезвычайно полезно для изучения bash, так как оно позволяет играть совершенно по-другому. Простое обнаружение того, что вы забыли убежать от специального персонажа, будет ценно. Sirap 6 лет назад 0

2 ответа на вопрос

7
razzintown

Bash использует readlineдля интерактивного ввода, поэтому в этой программе должна быть реализована подсветка синтаксиса. Я нашел обсуждение групп Google о том, как закодировать такую ​​функцию.

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

Вы можете обнаружить, что zshэто очень похоже на bash, и его редактор строк является расширяемым . Я нашел zsh-syntax-подсветку, чтобы включить эту функцию в zsh.

0
Purefan

Я не думаю, что подсветка синтаксиса должна происходить на уровне оболочки, но на уровне интерфейса (только мое мнение - и чье-то другое кажется), поэтому я бы посмотрел на «плагины» для терминала или вашей любимой консоли, например, этот плагин для Кейт может помочь, или этот другой, который предлагает подсветку синтаксиса в нано

Вот еще больше разговоров о том, как подсвечивать синтаксис в терминале:

Добавьте псевдоним ls = 'ls -G' в .bash_profile.

хотя тут лучше объяснили как

Надеюсь, поможет

Похоже, вы отвечаете, как настроить подсветку синтаксиса в редакторах, а не в оболочке. Ls-colorization - это даже не подсветка синтаксиса. Kyle Strand 10 лет назад 9
Я думаю, что вы сосредотачиваетесь на семантике больше, чем на решении, с помощью кода из ссылок и предлагаемого решения я получаю цвета в bash, что, как я полагаю, это то, что ОП хотел знать Purefan 10 лет назад 0
Оригинальный вопрос на самом деле довольно ясно о фактической подсветке синтаксиса. Это показано как на скриншоте оболочки рыбы, так и в последнем предложении: «Я хочу выделить фактический текст, который вводится в терминале. Команды, скобки, кавычки и т. Д.» Kyle Strand 10 лет назад 8
Не могли бы вы объяснить, почему ни одна из двух последних ссылок, которые я предоставил, не поможет в этом случае? Purefan 10 лет назад 0
Как я уже сказал, это не подсветка синтаксиса. Они подсвечивают вывод команды `ls` в зависимости от типа файла, который не имеет ничего общего с синтаксисом оболочки. Kyle Strand 10 лет назад 7
На уровне интерфейса, кажется, трудно реализовать и поддерживать согласованность. Как бы вы проанализировали множество линий PS1? В любом случае, есть ли решение для Putty? Или сам по себе? Avindra Goolcharan 9 лет назад 0
Zsh (https://github.com/zsh-users/zsh-syntax-highlighting) и Fish (https://fishshell.com/docs/current/tutorial.html) оба имеют подсветку синтаксиса, этот вопрос, очевидно, задает вопрос о похожая особенность для bash. Это полностью допустимый запрос, чтобы запросить функцию, которую «трудно реализовать и поддерживать согласованной», особенно если она уже существует в других оболочках. Brandon 6 лет назад 1