From faff17b2a94697fe5c4568cdee5458cf780b87fa Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Fri, 29 Nov 2013 18:08:22 +0900 Subject: [PATCH] Hostname completion for ssh and telnet commands --- README.md | 16 +++++++++++++++- fzf-completion.bash | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c81b9e49..dc7feda0 100644 --- a/README.md +++ b/README.md @@ -270,6 +270,8 @@ over time* ### bash +#### Files and directories + Fuzzy completion for files and directories can be triggered if the word before the cursor ends with the trigger sequence which is by default `**`. @@ -297,7 +299,9 @@ cd ** cd ~/github/fzf** ``` -Fuzzy completion for PIDs are provided for kill command. In this case +#### Process IDs + +Fuzzy completion for PIDs is provided for kill command. In this case there is no trigger sequence, just press tab key after kill command. ```sh @@ -305,6 +309,16 @@ there is no trigger sequence, just press tab key after kill command. kill -9 ``` +#### Host names + +For ssh and telnet command, fuzzy completion for host names is provided. The +names are extracted from /etc/hosts file. + +```sh +ssh +telnet +``` + #### Settings ```sh diff --git a/fzf-completion.bash b/fzf-completion.bash index 383122df..2ffe7338 100644 --- a/fzf-completion.bash +++ b/fzf-completion.bash @@ -95,6 +95,22 @@ _fzf_kill_completion() { fi } +_fzf_host_completion() { + if [ "${COMP_WORDS[COMP_CWORD-1]}" = '-l' ]; then + return 1 + fi + + local selected + tput sc + selected=$(grep -v '^\s*\(#\|$\)' /etc/hosts | awk '{print $2}' | sort -u | fzf $FZF_COMPLETION_OPTS) + tput rc + + if [ -n "$selected" ]; then + COMPREPLY=( "$selected" ) + return 0 + fi +} + complete -F _fzf_opts_completion fzf # Directory @@ -123,3 +139,8 @@ done # Kill completion 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 +