Make host name completion require trigger sequence (#13)

This commit is contained in:
Junegunn Choi 2013-12-23 23:16:07 +09:00
parent 76fe23b928
commit 33b28be941
2 changed files with 15 additions and 13 deletions

View File

@ -305,11 +305,11 @@ kill -9 <TAB>
#### Host names #### Host names
For ssh and telnet commands, fuzzy completion for host names is provided. The For ssh and telnet commands, fuzzy completion for host names is provided. The
names are extracted from /etc/hosts file. names are extracted from /etc/hosts and ~/.ssh/config.
```sh ```sh
ssh <TAB> ssh **<TAB>
telnet <TAB> telnet **<TAB>
``` ```
#### Settings #### Settings

View File

@ -31,12 +31,12 @@ _fzf_opts_completion() {
} }
_fzf_generic_completion() { _fzf_generic_completion() {
local cur base dir leftover matches local cur base dir leftover matches trigger
COMPREPLY=() COMPREPLY=()
FZF_COMPLETION_TRIGGER=${FZF_COMPLETION_TRIGGER:-**} trigger=${FZF_COMPLETION_TRIGGER:-**}
cur="${COMP_WORDS[COMP_CWORD]}" cur="${COMP_WORDS[COMP_CWORD]}"
if [[ ${cur} == *"$FZF_COMPLETION_TRIGGER" ]]; then if [[ ${cur} == *"$trigger" ]]; then
base=${cur:0:${#cur}-${#FZF_COMPLETION_TRIGGER}} base=${cur:0:${#cur}-${#trigger}}
eval base=$base eval base=$base
dir="$base" dir="$base"
@ -97,10 +97,11 @@ _fzf_kill_completion() {
} }
_fzf_telnet_completion() { _fzf_telnet_completion() {
local cur prev selected local cur selected trigger
trigger=${FZF_COMPLETION_TRIGGER:-**}
cur="${COMP_WORDS[COMP_CWORD]}" cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}" [[ ${cur} == *"$trigger" ]] || return 1
[[ "$cur" =~ ^- || "$prev" =~ ^- ]] && return 1 cur=${cur:0:${#cur}-${#trigger}}
tput sc tput sc
selected=$(grep -v '^\s*\(#\|$\)' /etc/hosts | awk '{print $2}' | sort -u | fzf $FZF_COMPLETION_OPTS -q "$cur") selected=$(grep -v '^\s*\(#\|$\)' /etc/hosts | awk '{print $2}' | sort -u | fzf $FZF_COMPLETION_OPTS -q "$cur")
@ -113,10 +114,11 @@ _fzf_telnet_completion() {
} }
_fzf_ssh_completion() { _fzf_ssh_completion() {
local cur prev selected local cur selected trigger
trigger=${FZF_COMPLETION_TRIGGER:-**}
cur="${COMP_WORDS[COMP_CWORD]}" cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}" [[ ${cur} == *"$trigger" ]] || return 1
[[ "$cur" =~ ^- || "$prev" =~ ^- ]] && return 1 cur=${cur:0:${#cur}-${#trigger}}
tput sc tput sc
selected=$(cat \ selected=$(cat \