#!/bin/sh tmux capture-pane -J tmp=`mktemp` trap "rm -f $tmp" HUP PIPE INT QUIT TERM EXIT tmux save-buffer $tmp tmux delete-buffer session_name="fzf-selector" tmux has-session -t $session_name 2>/dev/null && tmux kill-session -t $session_name || : case "$1" in find) tmux new-session -d -s $session_name -c "$2" ' find . -path "*/.git" -prune -o \( -type f -o -type d -o -type l \) -print | cut -c3- | fzf -m --preview="less -N -S {}" | read data tmux set-buffer "${data:- }" ' ;; buf-files) tmux new-session -d -s $session_name -c "$2" "pe < $tmp" ;; git-files) tmux new-session -d -s $session_name -c "$2" ' git status --short | fzf -m | while read item ; do item=$(echo $item | cut -w -f2-) echo -n "$item " done | read data tmux set-buffer "${data:- }" ' ;; git-branches) tmux new-session -d -s $session_name -c "$2" ' { git branch ; git branch --remote } | fzf | read data tmux set-buffer "${data:- }" ' ;; git-commits) tmux new-session -d -s $session_name -c "$2" ' git --no-pager log --oneline -n 20 | perl -ne "print \"@~\$n \$_\"; \$n++" | fzf --reverse | cut -w -f1 | read data tmux set-buffer "${data:- }" ' ;; *) echo unknown command sleep 1 exit ;; esac tmux set-option -t $session_name status off tmux attach-session -t $session_name tmux paste-buffer tmux delete-buffer