autocompletion
Как настроить автодополнение в zsh для ssh хостов взятых из ~/.ssh/known_hosts
добавляем в ~/.zshrc
ssh_hosts=($hosts ${${${(f)"$(<$HOME/.ssh/known_hosts)"}%%\ *}%%,*})
# automatically remove duplicates from these arrays
typeset -U ssh_hosts
zstyle ':completion:*:hosts' hosts $ssh_hosts
zstyle ':completion:*:(ssh|scp|sftp):*' tag-order '! users' #не добавлять юзера
проверяем запустив новый шел и набрав ssh [TAB] должно выдавать хосты на которые когда то были заходы по ssh
дополнительные хосты которые вы хотите что бы автодополнялись можно заносить в массив $hosts перед приведенными командами.
использование алиасов mutt для автодополнения в zsh
1) создаем файл для алиасов mutt
2) заносим в ~/.muttrc
3) заносим в mutt алиас
запускаем mutt, жмем a, вводим например "Псевдоним: ramok","Адрес: ramok@core.org.ua" , "Полное имя: Ramok Inc." и соглашаемся сохранить
если хотим написать письмо из mutt то жмем m и потом tab можем выбрать алиас
4) настраиваем zsh. заносим в ~/.zshrc
набираем
mutt [ТАБ]
и должно предложить выбрать юзера ramok
$ mkdir ~/.mutt $ touch ~/.mutt/aliases
2) заносим в ~/.muttrc
set alias_file=~/.mutt/aliases source ~/.mutt/aliases
3) заносим в mutt алиас
запускаем mutt, жмем a, вводим например "Псевдоним: ramok","Адрес: ramok@core.org.ua" , "Полное имя: Ramok Inc." и соглашаемся сохранить
если хотим написать письмо из mutt то жмем m и потом tab можем выбрать алиас
4) настраиваем zsh. заносим в ~/.zshrc
if [[ -f ~/.mutt/aliases ]]; then
zstyle ':completion:*:mutt:*' users \
${${${(f)"$(<~/.mutt/aliases)"}#alias[[:space:]]}%%[[:space:]]*}
fi
5) проверяем как работает. запускаем новый шелнабираем
mutt [ТАБ]
и должно предложить выбрать юзера ramok
расцветка имен файлов при автодолнении в zsh
добавте в ~/.zshrc
eval `dircolors`
zstyle ':completion:*:default' list-colors "${(s.:.)LS_COLORS}"теперь например при
$ cd /[TAB]
выведутся варианты имен файлов в цвете
цвета будут такие же как и при ls --color
если хотите настроить свои цвета то читаем
man dircolors
man 5 dir_colors
Вот более портируемый вариант, который будет работать и в *BSD системах где dircolors нет
if which dircolors > /dev/null; then
eval `dircolors`
else
LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:"
LS_COLORS="${LS_COLORS}or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:"
LS_COLORS="${LS_COLORS}*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:"
