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