From 843b8510acd58fa9c1d1df6d8837d0406392e1b2 Mon Sep 17 00:00:00 2001 From: Guangxiong Lin Date: Sat, 22 Jan 2022 21:11:52 +0800 Subject: Add fzf config The fzf config is splited into .env and .functions before. It will be hard to remove the config of fzf when I want to replace fzf with other finder (e.g. skim). I place all config related to .fzfrc now. Besides, I add the config to load fzf completion and key bindings. --- .fzfrc | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 .fzfrc (limited to '.fzfrc') diff --git a/.fzfrc b/.fzfrc new file mode 100755 index 0000000..53fb5d3 --- /dev/null +++ b/.fzfrc @@ -0,0 +1,62 @@ +# vim: ft=sh + +export FZF_DEFAULT_COMMAND='find . -type f' +if [ -f /usr/bin/fd ];then + export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' +fi + +# completion and key bindings + +case $SHELL in +*/zsh) + complete_share_file=/usr/share/fzf/completion.zsh + keybinds_share_file=/usr/share/fzf/key-bindings.zsh + + [ -f $complete_share_file ] && source $complete_share_file + [ -f $keybinds_share_file ] && source $keybinds_share_file + + complete_local_file=/usr/local/opt/fzf/shell/completion.zsh + keybinds_local_file=/usr/local/opt/fzf/shell/key-bindings.zsh + + [ -f $complete_local_file ] && source $complete_local_file + [ -f $keybinds_local_file ] && source $keybinds_local_file + ;; +*/bash) + ;; +*) +esac + +# functions + +fco () { + local tags branches target + branches=$( + git --no-pager branch --all \ + --format="%(if)%(HEAD)%(then)%(else)%(if:equals=HEAD)%(refname:strip=3)%(then)%(else)%1B[0;34;1mbranch%09%1B[m%(refname:short)%(end)%(end)" \ + | sed '/^$/d' + ) || return + tags=$( + git --no-pager tag | awk '{print "\x1b[35;1mtag\x1b[m\t" $1}' + ) || return + target=$( + (echo $branches; echo $tags) \ + | fzf --no-hscroll --no-multi -n 2 --ansi + ) || return + git checkout $(awk '{print $2}' <<<$target) +} + +fs () { + local session + session=$(tmux list-sessions -F "#{session_name}" \ + | fzf --query=$1 --select-1 --exit-0) \ + && tmux switch-client -t $session +} + +tm() { + [[ -n "$TMUX" ]] && change="switch-client" || change="attach-session" + if [ $1 ]; then + tmux $change -t "$1" 2>/dev/null || (tmux new-session -d -s $1 && tmux $change -t "$1"); return + fi + session=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --exit-0) && tmux $change -t "$session" || echo "No sessions found." +} + -- cgit v1.2.3