Завершення вкладки на регістр у Bash


142

Чи є спосіб зробити так, щоб вкладка Bash завершила справу безчутливо?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.

Я використовую Mac OS X 10.6

Відповіді:


170

Оновіть текст, /etc/inputrcщоб включити

встановити завершення-ігнорувати-увімкнено

Потім використовуйте ^X ^Rдля перезавантаження конфігурації.


30
"також" - /etc/inputrcабо ~/.inputrcфайл, позначений, INPUTRC- це єдині місця, куди він може потрапити. Якщо ввести запит на Bash, не вийде.
Денніс Вільямсон

ой! Ви маєте рацію :)
Джон Т

10
^X ^Rдля перезавантаженняinputrc
grawity

14
@DennisWilliamson: ви можете зробити bind "set completion-ignore-case on"з командного рядка; бо, я вважаю, що термінальний сеанс
Clay Bridges

1
Так що у msysgit є, але MSYS2 не вистачає! Тут я намагався знайти його в напр. / Etc / profile ...
SamB

111

Реорганізованого з вигодою непередбачливість протиставити плюси і мінуси використання [.]inputrcvs. .bash_profile.
Підказка капелюха, щоб підкреслити_d для його допомоги.

Примітка: редагування командного рядка в Bash надається бібліотекою Readline; налаштування його нетривіально, але варто того, щоб навчитися; його функції включають можливість визначати спеціальні комбінації клавіш для вставки заздалегідь визначених фрагментів тексту - див. Редагування командного рядка в Довідковому посібнику Bash

Щоб наполегливо зробити невідмітним регістр заповнення вкладки на Bash:


Варіант A: Якщо у вас вже є:

  • /etc/inputrcфайл (застосовується в масштабах всієї системи, модифікація вимагає sudo)
  • та / або ~/.inputrcфайл (специфічний для користувача)

    та / або

ви плануєте широко налаштувати бібліотеку читальних рядків та / або хочете зробити налаштування ефективними і для сценаріїв під час виклику read -e:

Додати рядок

set completion-ignore-case on

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

Пов'язана команда, яка полегшує завершення імен файлів і каталогів:

set show-all-if-ambiguous on

Це робить зайвим натискання Tab двічі, коли є більше одного матчу.


Варіант B: Крім того, ви можете додати команди Readline до вашого ~/.bash_profileфайлу, визначеному користувачем в OS X (або ~/.bashrcв Linux), передавши їх як єдиний аргумент bindвбудованому :

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"

Зауважте, що bindкоманди в ~/.bash_profile/ ~/.bashrcмають перевагу над еквівалентними командами в /etc/inputrcабо ~/.inputrc.

Як було сказано вище, конфігурація Readline, визначена таким чином, не почне діяти в сценаріях, які вимагають read -eактивувати підтримку Readline для читання вводу користувача.


10
шоу-все-якщо-неоднозначне так приємно! Я часто замислювався над тим, чому вони двічі змушували мене вкладати цю дію. тисячі натискань клавіш, збережених у моєму майбутньому! Дякую!
користувач34112

4
Дивовижно, це навіть працює для cdкоманд. Що вирішує це питання, і врятує мене тисячі натискань клавіш. :)
hoosierEE

1
Чудовий момент повторного show-all-if-ambiguous. Однак, оскільки ви говорите "як альтернатива", чи є насправді якась користь зробити це через те bind, коли inputrcфайли, здається, роблять це не потрібним?
підкреслюй_d

1
@underscore_d: Добре запитання; будь ласка, дивіться мою оновлену відповідь.
mklement0

1
Класно, дякую! У Debian 8.2 у мене не було жодного inputrc, але я із задоволенням створив ~/.inputrcі додав ці плюс інші дійсно корисні директиви. Напевно, ми припускаємо, що всі читачі знають, що /etc/inputrc впливає на інших користувачів (якщо останні не змінюють налаштування, на які вони впливають)? Тільки тоді, коли ми згадуємо про застереження;)
підкреслити

1

Щоб уникнути зміни конфігурації для всіх користувачів та уникнення кореневих дозволів, використовуйте наступне:

if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc

Потім повторно увійдіть або перезавантажте ~ / .inputrc

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