Получаете более полезные подсказки завершения вкладки в bash?

Допустим, у меня есть каталог с несколькими файлами, например:

$ ls
file1  file2  file3

И я хочу сделать некоторые вкладки в bash:

$ cat file<tab>
file1  file2  file3  

Я помню, как кто-то делал завершение табуляции, а оболочка выделяла следующие части, так что в этом случае это выделило бы 1, 2 а также 3 имени файла, так что это будет выглядеть так: файл1 файл2 файл3

который скажет вам, что вы должны напечатать в следующем.

Я думаю, что это была особенность zsh, но есть ли способ получить его в bash?

3 ответа

В дистрибутивах на основе Red Hat есть пакетное завершение bash. Этот пакет заполняет каталог /etc/bash_completion.d/ определенным поведением завершения для нескольких программ. Я использую его под Fedora, Red Hat и CentOS.

yum install bash-completion

Я не знаю напрямую перенесенной функциональности, но есть способ взломать это в bash, Программируемое завершение позволяет вам указать, что вы хотели бы видеть, когда вы нажимаете эту клавишу табуляции, в зависимости от вызывающей программы, что позволяет (в качестве популярного примера) ssh [вкладка], чтобы показать параметры автозаполнения из ~/.ssh/known_hosts,

Вот несколько полезных ресурсов:

Вступление, Источник и RPM

Пользователь добавил "доработки"

Больше примеров

И еще примеры

Конечно, чтобы дублировать функции, которые вы указали выше, вам придется разбираться с программируемым аспектом завершения и писать свои собственные функции. Ubuntu поставляет собственный набор дополнений, внесенных пользователями, которые являются хорошей отправной точкой.

Я использую tcsh из-за похожей особенности.

Вот мой файл /etc/csh.cshrc:

if ($?tcsh && $?prompt) then

   bindkey "\e[1~" beginning-of-line # Home
   bindkey "\e[7~" beginning-of-line # Home rxvt
   bindkey "\e[2~" overwrite-mode    # Ins
   bindkey "\e[3~" delete-char       # Delete
   bindkey "\e[4~" end-of-line       # End
   bindkey "\e[8~" end-of-line       # End rxvt

   bindkey -k up history-search-backward
   bindkey -k down history-search-forward

   set filec
   set prompt="[%B%m%b:%~] %n%# "
   set complete = enhance            # important line
   set autolist                      # important line too
   alias ls 'ls -hA --color'
   alias ll 'ls -l'
endif
Другие вопросы по тегам