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


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

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


112
2017-12-12 05:19


происхождения




ответы:


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

# 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 за раз, и для освоения всех нюансов требуется много времени. Ваш интерес может отличаться.


135
2017-12-12 05:48



Благодарю. Я ценю решение, специфичное для пользователя / без администратора. Кажется, что работала эхо-линия, но теперь я, похоже, потерял способность использовать Ctrl-Left / Right для перемещения курсора. Кроме того, >> быть более безопасным, чем >? - mwfearnley
В общем >> будет более безопасным, моя ошибка, я предполагал, что у вас не было ~ / .inputrc. Я также установил noclobber =) Бит наверняка, почему ваши клавиши со стрелками не работают, я не могу воспроизвести это. Вы можете удалить ~ / .inputrc и запустить новую оболочку. - Panther
Да, он снова работает, если я удалю его. Согласно linuxfromscratch.org/blfs/view/5.1/postlfs/inputrc.html новый inputrc может переопределить глобальный? - mwfearnley
Святое дерьмо, я скопировал это в / etc / inputrc, и я больше не могу набирать «i», и когда я набираю «e», он просто рассылает «ssssssssss [..]» в консоль. Лучше используйте решение от @ emtin4 - Luca Steeb
@LucaSteeb Я тоже ударил, но потом понял, что весь этот блок не должен быть помещен в ваш .inputrc, но набирается один раз. Только $include /etc/inputrc а также set completion-ignore-case on должен быть в файле ~ ..inputrc. - Chris


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

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

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

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

Это все.


41
2017-12-12 05:45



Хорошо, я уточнил это для вас. Требуется время, чтобы узнать о bash, но продолжать изучать, читать и спрашивать. linuxcommand.org это популярный старт;) - Panther
В случае, если имеется более одного пользователя, это изменяет его для всех, что может или не может быть желательным поведением - Walter Tross
безусловно самый простой и упрощенный ответ здесь - workabyte
простой и понятный ответ - tinybyte


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

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

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


9
2018-01-31 02:41



Ну, вы что-то упустили: ~/.inputrc читается readline, что и использует bash для обеспечения этого завершения. Readline также используется другими программами, поэтому, чтобы в целом установить это, ~/.inputrcкак было предложено принятый ответ было бы лучше. - muru
Спасибо за ваше предложение, он учит меня немного больше, но я должен сказать, что это не кажется более простым, чем тот, который я принял, который просто использует дополнительную строку, чтобы новый файл не сводил на нет старый. - mwfearnley
идеально. ну, единственное, что нужно запомнить bind 'set completion-ignore-case on' должны перейти в новую строку .bashrc - Vishrant