Чи є спосіб зробити баш більш приємним TAB?


31

Я використовую bash як на своєму Mac, так і в якості оболонки cygwin. В цілому я цілком задоволений цим.

Але одна моя скарга полягає в тому, що його завершення TAB не так добре, як завершення TAB командного рядка Windows.

Наприклад, якщо є два файли з тим самим префіксом, bash просто подає звуковий сигнал на мене, коли я намагаюся завершити TAB. Якщо я продовжую прибивати TAB, я згодом покаже мені список потенційних файлів.

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

Чи є спосіб змусити bash оперувати подібними до командного рядка Windows в цьому плані?

Якщо немає (я не хочу перемикати оболонки), я пропускаю щось про заповнення TAB в bash? Чи існує більш ефективний спосіб його використання?

Відповіді:


42

Щоб отримати "цикл через можливі завершення", скопіюйте наступне у відповідне місце у вашому файлі .bashrc:

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

Крім того, bash-завершення забезпечує безліч додаткових видів завершення, крім простого завершення імені шляху. Наприклад, завершення меню відмінно працює з модулем bash-завершення Git для завершення імен команд, назв параметрів тощо.


яка процедура зробити це для терміналу OSx?
Олексій

2
@Alex: Ви редагуєте файл .bashrcу своєму домашньому каталозі, щоб він містив вказаний рядок. Якщо ваш .bash_profileфайл (у тому самому каталозі) також не має рядка на зразок source ~/.bashrc, вам слід також відредагувати його, щоб включити такий рядок. Налаштування буде активним у нових вікнах терміналів . Якщо у вас немає бажаного редактора, ви можете відкрити файл у TextEdit за допомогою команди open -e ~/.bashrc; якщо файл ще не існує, потрібно спершу створити його за допомогою команди (наприклад) touch ~/.bashrc.
Кріс Джонсен

1
@Alex, Bash - оболонка за замовчуванням 10.3 і пізніших версій, включаючи 10.7 (Лев). По-перше echo $SHELL. Це буде оболонка, обрана для вашого облікового запису користувача. Якщо це не те, що ви хочете, вам потрібно буде змінити оболонку на chpass -s /bin/bash(або будь-яку оболонку, яку ви хочете). Якщо $ SHELL в порядку, перевірте термінал> налаштування> запуск> оболонки, відкриті за допомогою: і термінал> налаштування> налаштування> профілі> оболонка> запуск, щоб побачити, чи не було замінено стандартну оболонку користувача за допомогою спеціальної команди.
Кріс Пейдж

5
Хтось має якусь ідею, що я повинен зв'язати, щоб повернути один варіант назад із Shift + Tab?
ppp

3
@ppp у вашому .bashrc:bind '"\e[Z":menu-complete-backward'
Сейф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.