Получаете более полезные подсказки завершения вкладки в 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
,
Вот несколько полезных ресурсов:
Пользователь добавил "доработки"
Конечно, чтобы дублировать функции, которые вы указали выше, вам придется разбираться с программируемым аспектом завершения и писать свои собственные функции. 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