Есть ли в Bash похожие функции, такие как самовнушение и выделение Fish?

37

Недавно я заметил 2 функции в Fish, и мне было интересно, если кто-нибудь знал, были ли они также доступны в Bash?

Подсветка синтаксиса

сс # 1

Особенности:

  • Вы быстро заметите, что fish выполняет подсветку синтаксиса при вводе текста. Недопустимые команды по умолчанию окрашены в красный цвет:
  • Команда может быть недействительной, потому что она не существует, или ссылается на файл, который вы не можете выполнить. Когда команда становится действительной, она отображается другим цветом
  • fish будет указывать правильные пути к файлам по мере их ввода
  • Это говорит о том, что существует файл, который начинается с 'somefi', что является полезной обратной связью при вводе.

Автоматические предложения

сс # 2

Особенности:

  • fish предлагает команды при вводе и показывает предложение справа от курсора серым цветом.
  • Он знает о путях и вариантах
  • Чтобы принять автозаполнение, нажмите стрелку вправо или Control-F. Если самовнушение не то, что вы хотите, просто игнорируйте его.
SLM
источник
4
О ближайшем аналоге, который bashимеет автозаполнение. К сожалению, fishсценарии настолько элементарны, что это очень плохая замена для того, чем я обычно занимаюсь bash.
DopeGhoti
1
@ DopeGhoti - отсюда и мой вопрос: Q 8-)
slm
2
Попробуйте использовать ssh-ссылку с высокой задержкой, и вы очень быстро возненавидите встроенные функции.
Луа
1
@slm Большинство из них - угловые случаи, некоторые неприятнее, чем другие, но это может быть довольно плохо, когда вы развернуты во многих средах. В «киллеры функции» для 4.3 являются cd -@, wait -n, globasciiranges, и $BASH_COMPAT, что хотел много людей. Почти все остальное - просто пожаротушение.
Крис Даун
1
@strugee, есть подсветка синтаксиса zsh - github.com/zsh-users/zsh-syntax-highlighting , я нашел это через очень классную oh-my-zsh.
Джо Блок

Ответы:

2

Я не уверен насчет подсветки Bash, но функция автозаполнения в Bash, скорее всего, поддерживает автоматическое предложение, как вы упоминали.

Несмотря на то, что автозаполнение Bash не может отображать предложения так, как вы хотите, но фактически оно заполняет содержимое, когда вы нажимаете [TAB]. Если есть много вариантов завершения контента, дважды нажмите [TAB], и он покажет все варианты.

Например:

$ cat /etc/pa[TAB]

=> ничего не происходит

$ cat /etc/pa[TAB][TAB]
pam.d/       passwd       paths        paths.d/

=> показывает все файлы / каталоги, начинающиеся с "/ etc / pa"

Вы можете настроить автоматическое заполнение с помощью любой команды, параметров, файлов / каталогов ... или поиграть с ним, как программирование.
Дополнительная информация по адресу: http://www.linuxjournal.com/content/more-using-bash-complete. -command

Если вы хотите перейти к предыдущей команде, нажмите ^ R, а затем введите несколько символов:

(reverse-i-search)`cd': cd ..

=> перейти к последней команде, начинающейся с "cd"

Я знаю, что это не совсем то, чего вы хотите, но это почти то же самое, что поможет вам достаточно удобно.

incous
источник
8
Спасибо, что нашли время, чтобы ответить на это и предложить это предложение. Я знаком с этой функцией и пользуюсь ею ежедневно, мне хотелось, чтобы она работала динамически, без необходимости нажимать [TAB] [TAB] для ее запуска.
SLM
2

К сожалению, нет. Но я предсказываю, что bash сильно замедлится, если вы попытаетесь реализовать эти функции. Возможно, поэтому никто еще не «портировал» эти функции.

Самым близким, что я нашел, был https://github.com/dvorka/hstr , ящик для предложений оболочки


в сторону Баш:

Я не тестировал его, но единственная найденная мною «портированная альтернатива» была написана для zsh: https://github.com/zsh-users/zsh-autosuggestions

Некоторые qwant'ing также приводят меня к https://websetnet.com/shell-packs-power-python-bash/ и https://github.com/xonsh/xonsh псевдоним http://xon.sh , возможно, это также поддерживает это из коробки

... но я уверен, что вас не интересуют другие альтернативы bash, потому что тогда вы можете просто переключиться на рыбку;)

childno͡.de
источник