Сделайте удар как можно ближе к рыбе

1573
gnzlbg

Я люблю рыбную раковину и использую ее исключительно в MacOS, но везде использую bash, потому что это единственное, что установлено. Почувствовав боль от поддержки файлов конфигурации для двух оболочек, я решил перестать использовать рыбу и вместо этого переключиться на bash. Чтобы сделать его максимально безболезненным, какие параметры конфигурации / плагины / и т. Д. Я должен использовать с bash, чтобы сделать его как можно ближе к рыбе?

Вещи, которые я скучаю больше всего:

  • поддержка автозаполнения: fish запоминает все мои команды, выполняет дополнения по частичным (иногда огромным) командам, кажется, понимает все приложения cmd-line, которые я использую, и предлагает дополнения по их командам и т. д. Для каждой команды fish отображается затемненным цветом команда будет автоматически завершена, если бы я нажал Tab.
  • Поддержка git: fish показывает мне, нахожусь ли я в репозитории github, название ветки, и была ли она изменена или очищена с использованием красивых цветов рядом с моим именем пользователя @ hostname, я бы тоже хотел, чтобы это было на bash
3
https://www.google.se/search?client=ubuntu&channel=fs&q=bash+git+support Hannu 6 лет назад 0
https://www.google.se/search?q=bash+autocomplete+support Hannu 6 лет назад 0
Почти везде установлен bash, он использует GNU readline для автозаполнения и истории. Вы можете ввести tab, чтобы завершить команду, или Ctrl + R, а затем любую часть предыдущей команды, чтобы автоматически заполнить ее. jpaugh 6 лет назад 0
Рассматривали ли вы установку собственной, частной копии рыбы? Fish делает это действительно легко, так как он ищет свои скрипты завершения, автоматически загруженные, функции и другие файлы конфигурации относительно места, где вы его устанавливаете. Так что просто `./configure --prefix = $ HOME / fish; сделать установку` Затем вставьте символическую ссылку ~ / bin / fish в ~ / fish / bin / fish или добавьте ~ / fish / bin в вашу переменную PATH. Kurtis Rader 6 лет назад 2

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

3
AFH

Есть много вариантов настройки bash. Я использую следующие команды для облегчения доступа к истории команд:

bind '"\e[A": history-search-backward' bind '"\e[B": history-search-forward' 

Настраивает Upи Downстрелки для сканирования вверх и вниз по истории команд для команд, начинающихся с символов перед курсором в командной строке (как TCC делает в Windows).

Что касается приглашения, вы можете вводить команды, которые будут запускаться при каждом выводе приглашения. Я использую:-

PS1="\`curspos -n>/dev/tty\`\`[ \$BASH_LEVEL != 1 ]&&echo \"[\$BASH_LEVEL]\"\`\\t[\\w/]\\\$ " 

Это вызывает две команды в каждой строке:

  • curspos скрипт, который я написал, чтобы проверить положение курсора и вывести новую строку, если не в первом столбце (меня раздражали ненужные пустые строки).
  • В BASH_LEVELпроверках предшествуют строку с уровнем в квадратных скобках, если это не один, так что сразу видно, если вы находитесь в детской оболочке (например [2]15:55:32[~/]$).

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

В заключение я бы прокомментировал, что fishэто доступно во многих дистрибутивах Linux (например, в репозитории Ubuntu), поэтому вам нужно выполнять эти bashнастройки только в том случае, если вы не можете устанавливать пакеты.

Даже если OP не позволяет устанавливать пакеты через менеджер пакетов, сборка из исходного кода * может * стать альтернативой. a CVn 6 лет назад 0
@ MichaelKjörling Я полагаю, что озабоченность OP рыбой заключается в том, что она не установлена ​​по умолчанию и требует настройки (потенциально) многих систем. jpaugh 6 лет назад 0
@jpaugh - Последнее, что я хотел сказать, это то, что настройка `bash` сама по себе потребует определенного объема работы, поэтому, возможно, будет проще установить` fish`, если это вариант. AFH 6 лет назад 2
2
jpaugh

Что касается автозаполнения, bashиспользует GNU Readline, чтобы обеспечить завершение табуляции, а также поиск и завершение истории. Завершение с помощью вкладок работает для имен команд, файлов и - для любых команд, имеющих сценарии завершения - параметров и аргументов. Используйте Upили Downдля перемещения по истории линейно; или для поиска введите Ctrl+ Rи любую часть команды, которую вы помните. Readline устанавливается почти везде, особенно в современных ОС.

Чтобы ответить на ваши вопросы по Git, сам Git включает в себя сценарии для раскрашивания подсказок, выполнения табуляции для оболочки bash и других. Когда я установил Git для Windows, программа bash, поставляемая с ним, была предварительно подготовлена ​​для их автоматического использования.

Если вы знакомы с bash, то, вероятно, нетрудно добавить подсказку git на Mac . Bash генерирует свою подсказку из содержимого PS1переменной. Это позволяет вам выполнить произвольную функцию для генерации частей приглашения, что позволяет запускать эти умные сценарии. Как и другие оболочки, bash полагается на базовый эмулятор терминала для получения цвета. Он просто передает текст, заданный вами для приглашения, в эмулятор терминала. Просто добавьте правильные коды ANSI в PS1подсказку, и вы получите цветной вывод.