Den meisten Vim Usern sollte fzf, ein in Go geschriebener, ultra schneller, Fuzzy Finder ein Begriff sein. fzf kann aber auch unabhängig von Vim benutzt werden.

Möchte man z.B. direkt aus der Kommandozeile eine Datei in Vim öffnen, genügt ein vim **<tab> aus, um fzf für das Suchen der Datei zu nutzen (hier kann vim natürlich auch durch jedes andere Tool ersetzt werden). Die Möglichkeiten sind quasi unendlich, weil fzf auch über diverse Parameter getuned werden kann.

Auch wenn ich meistens Git Tower für Commits und tig zum History browsen benutzte, stellte ich gerade fest, dass ein kleines Script des fzf Autors, tig für mich fast komplett ersetzt hat.

Denn in den meisten Fällen, in denen ich in meiner Git History herumsuche, geht es darum, einen bestimmten Commit zu finden und zu schauen, welche Änderungen ich dort (oder jemand anderes) vorgenommen hat.

fshow

fshow ist einfach ein kleines Script, dass git log und fzf verwurstet und so einen ziemlich schnellen History Browser ermöglicht.

Einfach das Script in die .bashrc oder .zshrc kopieren und per fshow aufrufen.

# fshow - git commit browser
fshow() {
  git log --graph --color=always \
      --format="%C(auto)%h%d %s %C(black)%C(bold)%cr" "$@" |
  fzf --ansi --no-sort --reverse --tiebreak=index --bind=ctrl-s:toggle-sort \
      --bind "ctrl-m:execute:
                (grep -o '[a-f0-9]\{7\}' | head -1 |
                xargs -I % sh -c 'git show --color=always % | less -R') << 'FZF-EOF'
                {}
FZF-EOF"
}

Danach kann man direkt einen Suchbegriff eingeben und die Ergebnisse mit J/K durchscrollen. Drückt man Enter auf einem Ergebnis, wird ein git diff angezeigt, welches natürlich auch wieder per J/K gescrollt werden kann.