X-Git-Url: http://www.git.stargrave.org/?p=dotfiles.git;a=blobdiff_plain;f=bin%2Fbin%2Ftmux-fzf.zsh;fp=bin%2Fbin%2Ftmux-fzf.zsh;h=eb66b31d90a53be5d5d96d7220132f6a38c386f6;hp=0000000000000000000000000000000000000000;hb=48338303d760027e62bab963fa11a940bc0d97eb;hpb=bf11fcafc0ae32b25ca6d9388f9866555f47c625 diff --git a/bin/bin/tmux-fzf.zsh b/bin/bin/tmux-fzf.zsh new file mode 100755 index 0000000..eb66b31 --- /dev/null +++ b/bin/bin/tmux-fzf.zsh @@ -0,0 +1,34 @@ +#!/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