From d8f26558ed79eb6ebc067a7d7604b3efcb7b16e9 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Mon, 21 Jul 2014 21:01:05 -0700 Subject: [PATCH] Add scp completion. --- dotfiles/lib/zsh/completion.sh | 19 +++++++++++++++++++ dotfiles/zshenv | 26 ++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 dotfiles/zshenv diff --git a/dotfiles/lib/zsh/completion.sh b/dotfiles/lib/zsh/completion.sh index 560f4cf5..b649fd33 100644 --- a/dotfiles/lib/zsh/completion.sh +++ b/dotfiles/lib/zsh/completion.sh @@ -75,3 +75,22 @@ if [ "x$COMPLETION_WAITING_DOTS" = "xtrue" ]; then zle -N expand-or-complete-with-dots bindkey "^I" expand-or-complete-with-dots fi + +# ssh, scp, ping, host +zstyle ':completion:*:scp:*' tag-order \ + 'hosts:-host hosts:-domain:domain hosts:-ipaddr:IP\ address *' +zstyle ':completion:*:scp:*' group-order \ + users files all-files hosts-domain hosts-host hosts-ipaddr +zstyle ':completion:*:ssh:*' tag-order \ + users 'hosts:-host hosts:-domain:domain hosts:-ipaddr:IP\ address *' +zstyle ':completion:*:ssh:*' group-order \ + hosts-domain hosts-host users hosts-ipaddr + +zstyle ':completion:*:(ssh|scp):*:hosts-host' ignored-patterns \ + '*.*' loopback localhost +zstyle ':completion:*:(ssh|scp):*:hosts-domain' ignored-patterns \ + '<->.<->.<->.<->' '^*.*' '*@*' +zstyle ':completion:*:(ssh|scp):*:hosts-ipaddr' ignored-patterns \ + '^<->.<->.<->.<->' '127.0.0.<->' +zstyle ':completion:*:(ssh|scp):*:users' ignored-patterns \ + adm bin daemon halt lp named shutdown sync diff --git a/dotfiles/zshenv b/dotfiles/zshenv new file mode 100644 index 00000000..96b551e0 --- /dev/null +++ b/dotfiles/zshenv @@ -0,0 +1,26 @@ +# ssh, scp, ping, host +zstyle ':completion:*:scp:*' tag-order \ + 'hosts:-host hosts:-domain:domain hosts:-ipaddr:IP\ address *' +zstyle ':completion:*:scp:*' group-order \ + users files all-files hosts-domain hosts-host hosts-ipaddr +zstyle ':completion:*:ssh:*' tag-order \ + users 'hosts:-host hosts:-domain:domain hosts:-ipaddr:IP\ address *' +zstyle ':completion:*:ssh:*' group-order \ + hosts-domain hosts-host users hosts-ipaddr + +zstyle ':completion:*:(ssh|scp):*:hosts-host' ignored-patterns \ + '*.*' loopback localhost +zstyle ':completion:*:(ssh|scp):*:hosts-domain' ignored-patterns \ + '<->.<->.<->.<->' '^*.*' '*@*' +zstyle ':completion:*:(ssh|scp):*:hosts-ipaddr' ignored-patterns \ + '^<->.<->.<->.<->' '127.0.0.<->' +zstyle ':completion:*:(ssh|scp):*:users' ignored-patterns \ + adm bin daemon halt lp named shutdown sync +If you also want tab completion of the hosts listed in your ~/.ssh/known_hosts and /etc/hosts files, you can add: + +zstyle -e ':completion:*:(ssh|scp):*' hosts 'reply=( + ${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) \ + /dev/null)"}%%[# ]*}//,/ } + ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*} + ${=${${${${(@M)${(f)"$(<~/.ssh/config)"}:#Host *}#Host }:#*\**}:#*\?*}} + )' \ No newline at end of file