Можно ли сделать вкладку автозаполнения без учета регистра в Bash?

Терминал Ubuntu использует автозаполнение с учетом регистра, как я полагаю, было бы ожидаемо для Linux.

Но я думаю, что вместо этого было бы удобнее использовать регистр без учета регистра, чтобы избавить вас от необходимости быть точным при вводе имени и, вероятно, стоило бы дополнительных ложных срабатываний. Можно ли изменить это поведение?

148
задан 28 January 2019 в 14:50

4 ответа

Откройте терминал, запустите

# If ~./inputrc doesn't exist yet, first include the original /etc/inputrc so we don't override it
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi

# Add option to ~/.inputrc to enable case-insensitive tab completion
echo 'set completion-ignore-case On' >> ~/.inputrc

Запустите новую оболочку / терминал.

, чтобы внести это изменение для всех пользователей, отредактируйте /etc/inputrc

Подробнее, см. man bash . Да, это длинная страница, но bash - довольно сложная программа, и если вы хотите просто найти на этой странице «без учета регистра», чтобы перейти к соответствующему разделу. Люди обычно изучают bash по одному варианту за раз или по одному bash-сценарию за раз, и для того, чтобы освоить все нюансы, требуется много времени. Ваш интерес может отличаться.

0
ответ дан 28 January 2019 в 14:50

Я знаю, что этот вопрос очень старый, но если я что-то упустил, думаю, у меня есть супер простое решение, если вы используете bash.

echo "bind 'set completion-ignore-case on'" >> ~/.bashrc

Или просто добавьте строку, используя ваш любимый текстовый редактор. Перезапустите сеанс bash и наслаждайтесь.

0
ответ дан 28 January 2019 в 14:50

Откройте терминал и введите следующую команду:

echo set completion-ignore-case on | sudo tee -a /etc/inputrc

Введите пароль. Перезапустите терминал.

Если в некоторых случаях вы хотите удалить без учета регистра, просто отредактируйте файл / etc / inputrc, удалив строку set completion-ignore-case.

Вот и все.

0
ответ дан 28 January 2019 в 14:50

Вы можете сделать это, установив переменную конфигурации для readline GNU, которая обрабатывает ввод в интерактивной оболочке.

Необходимая переменная - completion-ignore-case, и ее можно установить непосредственно в сеансе bash с помощью:

bind "set completion-ignore-case on"

Ее можно включить для всех будущих сеансов bash, поместив ее в файл ~/.inputrc пользователя. или система /etc/inputrc, чтобы включить его для всех пользователей. Это файл инициализации readline.

Но обратите внимание, что если вы создадите ~/.inputrc, это переопределит системную копию . (Для меня это привело к тому, что я потерял некоторые сопоставления клавиш, такие как Ctrl-Left / Right. Вы можете увидеть, какие из них просматривают файл /etc/inputrc.)
Чтобы решить эту проблему, нужно поместите строку $include /etc/inputrc вверху ~/.inputrc, например:

$include /etc/inputrc

set completion-ignore-case on

Чтобы применить изменения, перезапустите bash или перезагрузите inputrc , например с Ctrl + x , Ctrl + r .

Более подробную информацию о readline и inputrc можно найти в man bash и man 3 readline .

0
ответ дан 28 January 2019 в 14:50

Другие вопросы по тегам:

Похожие вопросы: