summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md16
-rw-r--r--fzf-completion.bash21
2 files changed, 36 insertions, 1 deletions
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 **<TAB>
cd ~/github/fzf**<TAB>
```
-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 <TAB>
```
+#### Host names
+
+For ssh and telnet command, fuzzy completion for host names is provided. The
+names are extracted from /etc/hosts file.
+
+```sh
+ssh <TAB>
+telnet <TAB>
+```
+
#### 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
+