diff --git a/72-widgets.zsh b/72-widgets.zsh index c6dd04a..1ca2cc9 100644 --- a/72-widgets.zsh +++ b/72-widgets.zsh @@ -21,10 +21,28 @@ if command -v fzf > /dev/null 2>&1; then fi #}}} -#ZSH_FZF_PASTE_KEY=enter -#ZSH_FZF_EXEC_KEY=ctrl-r -#zinit wait'0' lucid light-mode depth'1' for \ -# atload"bindkey '^H' fzf-history; \ -# bindkey '^Z' fzf-kill-proc-by-list" \ -# amaya382/zsh-fzf-widgets +ZSH_FZF_PASTE_KEY=enter +ZSH_FZF_EXEC_KEY=ctrl-r +fzf-kill-proc-by-list() { + local cmd=$([ "$UID" != '0' ] && echo "ps -f -u $UID" || echo 'ps -ef') + local res=$(${=cmd} \ + | FZF_DEFAULT_OPTS="${FZF_DEFAULT_OPTS} + --no-sort + --reverse + --bind=\"${ZSH_FZF_PASTE_KEY}:execute@echo kill -9 \$(echo {} | awk '{print \$2}')@+abort\" + --bind=\"${ZSH_FZF_EXEC_KEY}:execute@kill -9 \$(echo {} | awk '{print \$2}')@+abort\" + " $(__fzfcmd)) + + if [[ -n "$res" ]]; then + LBUFFER=${LBUFFER}$res + zle redisplay + else + zle reset-prompt + fi +} + +if command -v fzf > /dev/null 2>&1; then + zle -N fzf-kill-proc-by-list + bindkey '^Z' fzf-kill-proc-by-list +fi