Преглед на файлове

zsh: ctrl+g fzf-git-commit-sha-widget

raylu преди 2 години
родител
ревизия
8d16046a85
променени са 1 файла, в които са добавени 15 реда и са изтрити 0 реда
  1. 15 0
      zshrc

+ 15 - 0
zshrc

@@ -130,6 +130,21 @@ fi
 if [ -x /usr/bin/fzf ]; then
 	FZF_DEFAULT_OPTS='--no-mouse'
 	source "/usr/share/doc/fzf/examples/key-bindings.zsh"
+
+	__fzf_git_commit_sha() {
+		setopt localoptions pipefail no_aliases 2> /dev/null
+		git log --graph --color=always -n 50 --format='%C(auto)%h%d %s %C(black)%C(bold)%cr' |
+			FZF_DEFAULT_OPTS="--ansi --no-sort --tiebreak=index --height ${FZF_TMUX_HEIGHT:-40%} --reverse ${FZF_DEFAULT_OPTS-}" $(__fzfcmd) -m "$@" |
+			sed -r -e 's/([0-9a-f]+) .+/\1/' -e 's/.+ ([0-9a-f]+)/\1/'
+	}
+	fzf-git-commit-sha-widget() {
+		LBUFFER="${LBUFFER}$(__fzf_git_commit_sha)"
+		local ret=$?
+		zle reset-prompt
+		return $ret
+	}
+	zle -N fzf-git-commit-sha-widget
+	bindkey '^G' fzf-git-commit-sha-widget
 fi
 
 stty stop undef