-
-
Save dohq/1dc702cc0b46eb62884515ea52330d60 to your computer and use it in GitHub Desktop.
function fzf-ssh () { | |
local selected_host=$(grep "Host " ~/.ssh/ssh_config | grep -v '*' | cut -b 6- | fzf --query "$LBUFFER" --prompt="SSH Remote > ") | |
if [ -n "$selected_host" ]; then | |
BUFFER="ssh ${selected_host}" | |
zle accept-line | |
fi | |
zle reset-prompt | |
} | |
zle -N fzf-ssh | |
bindkey '^s' fzf-ssh |
not working in my zsh shell . throwing following error fzf-ssh:zle:7: widgets can only be called when ZLE is active
any fix for this?
This snippet is supposed to be called from a keyboard shortcut.
If you want to run the fzf-ssh command, please use execute-named-cmd.
Also, if the screen appears to freeze with Ctrl-s, you can set the
setopt no_flow_control
in your .zshrc file.
Thanks for the comment. I tried calling the function with alias it's not working and i am not getting my ssh session showup. shortcut ctrl + S keyword combination is failing saying ZLE is not active
I tried calling the function with alias it's not working
alias is alias foo='fzf-ssh'
settings?
fzf-ssh cannot be run even via an alias.
(This is no different than running fzf-ssh
directly.)
Minimum .zshrc
setopt no_flow_control
function fzf-ssh () {
local selected_host=$(grep "Host " ~/.ssh/ssh_config | grep -v '*' | cut -b 6- | fzf --query "$LBUFFER" --prompt="SSH Remote > ")
if [ -n "$selected_host" ]; then
BUFFER="ssh ${selected_host}"
zle accept-line
fi
zle reset-prompt
}
zle -N fzf-ssh
bindkey '^s' fzf-ssh
After placing this in /tmp/.zshrc
, try executing ZDOTDIR=/tmp/ zsh
.
You should be able to ssh with Ctrl-s.
(Modify ~/.ssh/ssh_config
as you see fit.)
I didn't understand last statement place in /tmp/.zshrc then try executing ZDOTDIR=/tmp/ zsh. my .zshrc is in my home directory .. why do i put in tmp directory that i didn't get.
BTW thanks for the help
Working like a charm, thank you very much!
i created a slightly updated version of your gist:
function fzf-ssh () {
local selected_host=$(grep "Host " ~/.ssh/config | \grep -v '*' | cut -b 6- | awk '{print $1}' | fzf +s --query "$LBUFFER" --prompt="SSH Remote > ")
if [ -n "$selected_host" ]; then
BUFFER="ssh ${selected_host}"
zle accept-line
fi
zle reset-prompt
}
zle -N fzf-ssh
bindkey '^s' fzf-ssh
=> where i get the 1st string after the Host because you could have something like this in you config:
Host Server1-prod Production
and this would make your ssh session fail with: Production no such command
=> also added +s
in the fzf command to sort the Fuzzy Finder window
not working in my zsh shell . throwing following error fzf-ssh:zle:7: widgets can only be called when ZLE is active
any fix for this?