#!/usr/bin/env zsh cd $2 set -e tmp=`mktemp` trap "rm -f $tmp" HUP PIPE INT QUIT TERM EXIT case $1 in (find) find . -mindepth 1 -path "*/.git" -prune -o \ \( -type f -o -type d -o -type l \) -print | cut -c3- | fzf -m --preview="less -N -S {}" | while read fn ; do print ${(q)fn} ; done > $tmp ;; (buf-files) tmux capture-pane -J tmux save-buffer $tmp.capture trap "rm -f $tmp.capture" HUP PIPE INT QUIT TERM EXIT tmux delete-buffer pe < $tmp.capture > $tmp ;; (git-files) git status --short | fzf -m | perl -npe 's/^\s*\S+\s+//' > $tmp ;; (git-branches) { git branch ; git branch --remote } | fzf > $tmp ;; (git-commits) git --no-pager log --oneline -n 20 | perl -ne "print \"@~\$n \$_\"; \$n++" | fzf --reverse | cut -w -f1 > $tmp ;; (*) echo unknown command ; sleep 1 ; exit ;; esac [ -s $tmp ] || exit tmux set-buffer "`perl -npe 's/\n/ /g' $tmp`" tmux paste-buffer tmux delete-buffer