Как сделать автозаполнение терминала при наличии нескольких файлов / директорий?

Если у меня есть несколько каталогов, например:

afoo abar

иногда мой терминал будет отказываться от автозаполнения, когда я нажимаю tab (например, "cd a", затем tab), и вместо этого печатаю список каталогов. Иногда он даже издает шумный, раздражающий звук. Есть идеи, как сделать автозаполнение в подобных случаях? Например, он может показывать сначала abar, а затем afoo, если я снова нажму tab. Я видел, что это имеет место в Windows, или какое-то приложение в Ubuntu

4 ответа

Что-то, что спасает меня для жизни, - это циклично использовать возможности, а не показывать тупой список.

Как Баш использует readline для его автозаполнения добавьте следующие строки в ~/.inputrc

Когда вы будете удовлетворены и тщательно протестируете приведенное ниже решение в течение нескольких дней / недель, вырежьте и вставьте (не копируйте!) Те же самые настройки из ~/.inputrc в /etc/inputrc который содержит общесистемные настройки, что делает его доступным для всех пользователей вашей системы (включая гостя).

Кодез:

# mappings to have up and down arrow searching through history:
"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: 
"\e[C": forward-char
"\e[D": backward-char

# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:
"\t": menu-complete
"\e[Z": menu-complete-backward

затем exit свой терминал (или удаленный терминал, как замазка) и откройте его снова...

Примеры:

  1. Когда у вас есть 3 файла: file1, file2 а также file3 и вы печатаете:

    e fTabTabTab

    это будет проходить через:

    e file1
    e file2
    e file3
    

    и когда вы хотите вернуться назад, просто нажмите Shift + Tab

  2. Когда вы печатаете:

    very-complicated-command with lots of command line parameters
    

    и в следующий раз, когда вам понадобится та же команда, вы просто наберете:

    very

    и он напечатает для вас:

    very-complicated-command with lots of command line parameters
    

Это сэкономит вам массу времени в bash!;-)

После 1-й вкладки вам нужно вставить больше букв. Так что если вы введете

cd a

и нажмите Tab, вы ничего не получите, и после второй вкладки (сразу после) вы получите список имен, начинающихся с a а затем нужно вставить f чтобы он автоматически завершил остаток так

cd aвкладкавкладкаfвкладкавкладка

приведет к

cd afoo

Чтобы сделать это в Bash, добавьте поток в ваш файл bash:

      # 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"

Прекрасно работает. (Взято отсюда , как указано в комментарии @muru).

Рис для Linux находится в бета-версии: https://fig.io/user-manual/linux

Он работает очень хорошо и имеет множество других функций. Ubuntu — один из поддерживаемых дистрибутивов.

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