Как сделать автозаполнение терминала при наличии нескольких файлов / директорий?
32
Если у меня есть несколько каталогов, например:
afoo abar
иногда мой терминал будет отказываться от автозаполнения, когда я нажимаю tab (например, «cd a», затем tab), и вместо этого печатаю список каталогов. Иногда он даже издает шумный, раздражающий звук. Есть идеи, как сделать автозаполнение в подобных случаях? Например, он может показывать сначала abar, а затем afoo, если я снова нажму tab. Я видел, что это имеет место в Windows, или какое-то приложение в Ubuntu
Что-то, что спасает меня для жизни, - это циклично использовать возможности, а не показывать тупой список.
Поскольку bash использует 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ваш терминал (или удаленный терминал, как замазка) и снова открыть его ...
Примеры:
Если у вас есть 3 файла: file1, file2и , file3и вы наберете:
e fTabTabTab
это будет проходить через:
e file1
e file2
e file3
и когда вы хотите вернуться назад, просто нажмите Shift+Tab
Когда вы печатаете:
very-complicated-command with lots of command line parameters
и в следующий раз, когда вам понадобится та же команда, вы просто наберете:
very↑
и он напечатает для вас:
very-complicated-command with lots of command line parameters
Это очень приятно, спасибо (и мой голос). Есть ли универсальный способ показать варианты, через которые он будет проходить, который сочетает в себе лучшее из обоих миров? Мне нравится возможность вкладок + вкладок с папками и подкомандами и т. Д., Поэтому мне не нужно запоминать их все (например git branch <tab through branches>, если бы я мог видеть список и вкладку по его элементам, это было бы здорово! Для каталогов и файлов lsможно посмотреть, какие элементы доступны, но, к сожалению, для подкоманд это не так просто и очевидно
Эрик
Это работает и на PuTTy! Просто пришлось один раз его перезапустить :)
np8
@Erik: Видимо, то, что вы просили, возможно, но я не собираюсь редактировать мой ответ, чтобы все было просто. (удалил старый комментарий, что это невозможно)
Fabby
18
После 1-го tabвам нужно вставить больше букв. Так что если вы введете
cd a
и ударите, tabвы ничего не получите, и через секунду tab(сразу после) вы получите список имен, начинающихся с, aа затем необходимо вставить, fчтобы он автоматически завершил оставшуюся часть так,
ИМХО: Это правильный путь. Я лично нахожу поведение окон очень раздражающим. Рассмотрим случай, когда у вас много файлов, начиная с которых, aи вам нужен последний. Когда вы случайно нажмете клавишу Tab после aтого, как вам придется циклически перебирать список всех возможных дополнений, чтобы добраться до нужного.
Тобиас
@Tobias: когда вы случайно нажали [Tab] слишком рано, используя другую систему , все еще есть [Ctrl] [K] ... ;-)
~/.inputrc
может быть предпочтительнее, чем/etc/inputrc
, и 2. Я думаю, вы можете установить этоbash
непосредственно: unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926/70524git branch <tab through branches>
, если бы я мог видеть список и вкладку по его элементам, это было бы здорово! Для каталогов и файловls
можно посмотреть, какие элементы доступны, но, к сожалению, для подкоманд это не так просто и очевидноПосле 1-го tabвам нужно вставить больше букв. Так что если вы введете
и ударите, tabвы ничего не получите, и через секунду tab(сразу после) вы получите список имен, начинающихся с,
a
а затем необходимо вставить,f
чтобы он автоматически завершил оставшуюся часть так,cd a
tabtabf
tabtabприведет к
источник
a
и вам нужен последний. Когда вы случайно нажмете клавишу Tab послеa
того, как вам придется циклически перебирать список всех возможных дополнений, чтобы добраться до нужного.