diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2013-12-22 20:42:11 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2013-12-22 20:45:35 +0900 |
| commit | 76fe23b92877a4541fecceca6e9d721fd52f4c35 (patch) | |
| tree | c637b4e767598b0b04a3433996076df856751441 /fzf-completion.bash | |
| parent | 622c54f4a3fa270713203397716dbf802592c7ed (diff) | |
| download | fzf-76fe23b92877a4541fecceca6e9d721fd52f4c35.tar.gz | |
Fix host completion to include ssh_config entries (#13)
Diffstat (limited to 'fzf-completion.bash')
| -rw-r--r-- | fzf-completion.bash | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/fzf-completion.bash b/fzf-completion.bash index 1c35607d..8d5b903f 100644 --- a/fzf-completion.bash +++ b/fzf-completion.bash @@ -96,7 +96,7 @@ _fzf_kill_completion() { fi } -_fzf_host_completion() { +_fzf_telnet_completion() { local cur prev selected cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" @@ -112,6 +112,25 @@ _fzf_host_completion() { fi } +_fzf_ssh_completion() { + local cur prev selected + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + [[ "$cur" =~ ^- || "$prev" =~ ^- ]] && return 1 + + tput sc + selected=$(cat \ + <(cat ~/.ssh/config /etc/ssh/ssh_config 2> /dev/null | grep -i ^host) \ + <(grep -v '^\s*\(#\|$\)' /etc/hosts) | \ + awk '{print $2}' | sort -u | fzf $FZF_COMPLETION_OPTS -q "$cur") + tput rc + + if [ -n "$selected" ]; then + COMPREPLY=("$selected") + return 0 + fi +} + complete -F _fzf_opts_completion fzf # Directory @@ -141,7 +160,6 @@ done complete -F _fzf_kill_completion -o nospace -o default -o bashdefault kill # Host completion -for cmd in "ssh telnet"; do - complete -F _fzf_host_completion -o default -o bashdefault $cmd -done +complete -F _fzf_ssh_completion -o default -o bashdefault ssh +complete -F _fzf_telnet_completion -o default -o bashdefault telnet |
