--- /dev/null
+ #!/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