Автоматичне заповнення Bash: спочатку перелічіть файли, а потім перейдіть по них


27

Чи можна налаштувати bash таким чином, що на першій вкладці автозаповнення він перераховує всі можливі файли та на наступних циклах через вибір?

Обидва варіанти легко зробити окремо, і я можу прив’язати їх до різних клавіш, але вищезазначене було б ідеальним, але я нічого не можу знайти про це в мережі.


3
Минув час, коли я використовував ZSH, але я вважаю, що його функції автозаповнення є такими.
Йорданм

1
@jordanm Ну здається, що варіант, якщо нічого іншого не працює, але це також потягне за собою оновлення всього, від.
Voo

Відповіді:


31

Це здається близьким до того, що ви хочете:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"

1
Майже ідеально, крім невеликого недоліку, що він також автоматично завершується на першій вкладці, що може трохи дратувати, якщо я просто намагаюся з’ясувати точне ім’я (тобто мені доведеться видалити ще трохи символів, якщо я хочу змінити тоді), але я дуже готовий з цим жити.
Voo

1
Як це легко скасувати?
dingalapadum

1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
Джим Париж

13
@Voo додайте, що третій рядок bind "set menu-complete-display-prefix on"просто перелічить кандидатів на першій вкладці без автоматичного заповнення.
Naitree

2
@Naitree не може достатньо підтримати вашу пропозицію. Це працює, і це так, набагато краще, ніж баш поведінка за замовчуванням. Дякую.
JBeurer

1

Це те, що я використовую. Наскільки я можу сказати, він робить саме те, що ви хочете.

# make tab cycle through commands after listing
bind '"\t":menu-complete'
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"

Це працює на Mac (10.13 та 10.14) та Ubuntu (16.04 та 18.04).


0

Ви розглядали? На нього посилалося в Superuser ...

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

1
menu-completeце лише половина того, що задається питанням. Як зазначено в запитанні, "[b] oth варіанти легко зробити окремо" .
jw013

Так, я знаю, як змінити поведінку на один із двох варіантів, але це легка частина. Справжня проблема полягає в тому, як поєднати два в одне.
Voo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.