Есть ли способ сделать Bash более дружественным к TAB?

31

Я использую bash как на своем Mac, так и в качестве оболочки Cygwin. В целом, я вполне доволен этим.

Моя единственная жалоба, однако, заключается в том, что его завершение TAB не так хорошо, как завершение командной строки Windows.

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

Я определенно предпочитаю, как Windows будет перебирать потенциальные файлы прямо в командной строке.

Есть ли способ заставить bash работать аналогично командной строке Windows в этом отношении?

Если нет (я не хочу переключать оболочки), я что-то упускаю из-за завершения TAB в bash? Есть ли более эффективный способ его использования?

Фрэнк Крюгер
источник

Ответы:

42

Чтобы получить «цикл через возможные завершения», скопируйте следующее в соответствующее место в вашем файле .bashrc:

[[ $- = *i* ]] && bind TAB:menu-complete

Кроме того, bash-завершение предоставляет много дополнительных видов дополнения, помимо просто завершения пути. Например, menu-complete прекрасно работает с модулем gash-bash-complete, чтобы завершать имена команд, имена опций и т. Д.

Крис Джонсен
источник
Какова процедура, чтобы сделать это для терминала OSx?
Алекс
2
@ Алекс: Вы редактируете файл .bashrcв своем домашнем каталоге так, чтобы он содержал указанную строку. Если ваш .bash_profileфайл (в том же каталоге) также не имеет такой строки source ~/.bashrc, то вы должны также отредактировать его, чтобы включить такую ​​строку. Настройка будет активна в новых окнах терминала . Если у вас нет предпочитаемого редактора, вы можете открыть файл в TextEdit с помощью команды open -e ~/.bashrc; если файл еще не существует, вам нужно сначала создать его с помощью (например) команды touch ~/.bashrc.
Крис Джонсен
1
@Alex, Bash - оболочка по умолчанию для 10.3 и более поздних версий, включая 10.7 (Lion). Во- первых echo $SHELL. Это будет оболочка, выбранная для вашей учетной записи. Если это не то, что вы хотите, вам нужно изменить свою оболочку chpass -s /bin/bash(или любую другую оболочку, которую вы хотите). Если с $ SHELL все в порядке, проверьте « Терминал»> «Установки»> «Запуск»> «Оболочки», открытые с помощью: и « Терминал»> «Установки»> «Настройки»> «Профили»> «Оболочка»> «Автозагрузка», чтобы узнать, была ли пользовательская оболочка по умолчанию переопределена пользовательской командой.
Крис Пейдж
5
Кто-нибудь имеет какие-либо идеи, что я должен связать, чтобы вернуться один вариант с Shift + Tab?
PPP
3
@ppp в вашем .bashrc:bind '"\e[Z":menu-complete-backward'
хранилище