[HN Gopher] Vim universe: fzf - command line fuzzy finder (2019)...
___________________________________________________________________
Vim universe: fzf - command line fuzzy finder (2019) [video]
Author : tosh
Score : 35 points
Date : 2023-11-30 16:42 UTC (6 hours ago)
(HTM) web link (www.youtube.com)
(TXT) w3m dump (www.youtube.com)
| schindlabua wrote:
| fzf is such an amazing tool. Like yes it can do fuzzy search but
| it's so hackable and you can do so many unrelated things with it.
|
| Because it's also a tool that you can pipe an array of things
| into, select an element from it, and run a command on that
| element.
|
| Just the other day I needed to scour the git history of a huge
| project, so I wrote a function that first selects a file by
| running fzf, and then lets me see the git history of any single
| line of that file by running fzf again.
|
| gblame2 () { local file=$(fzf) cat
| "$file" | awk '{printf("%5d %s\n", NR, $0)}' | fzf --layout
| reverse --preview-window up --preview "echo {} | awk '{print
| \$1}' | xargs -I _ sh -c \"git log --color -L_,'+1:${file}'\""
|
| }
|
| chatgpt cooked that up for me in 5 minutes, saved me many many
| hours.
| 1-more wrote:
| I've shared it before but my tool for switching git branches
| based on time (it's called flog because I always read reflog as
| re-flog not ref-log) flog () {
| branch="$( git branch --sort=-committerdate --format=
| "%(committerdate:relative)%09%(refname:short)%09%(subject)" \
| | column -ts $'\t' \ | fzf \ | sed
| 's/.*ago \+\([^ ]*\) .*/\1/' )" git co
| $branch || ( echo -n "git co $branch" | pbcopy
| ) }
|
| I have a much longer one for switching between PRs requesting my
| review and previewing them while I do it.
|
| edit: funny story, I went to add 4 spaces to the start of each
| line and it turns out I did the same thing last time and my
| autocomplete got it for me which flog | sed 's/^/ /' | pbcopy
| nicbarth wrote:
| Cool idea! I actually do something similar albeit without
| sorting. The idea is if you check out a remote branch it'll
| track it. gbb() { eval $(echo git
| checkout "$(git branch --all \ | fzf
| --height 10 \ | tr -d '[:space:]' \
| | tr -d '*' \ | sed
| 's/remotes\//\-\-track /g')") }
| jonfw wrote:
| FZF is the best, I've got a variety of scripts that use FZF as
| their UI, for everything from logging into a team member's
| meeting room to targeting a cluster.
|
| I use FZF for my command line history search and save 10000 lines
| of shell history, and now I can find every weird jq, kubectl,
| awk, etc. command I've ever ran to get me going on some of the
| syntax quickly.
|
| fuzzy search is the best UI for navigating lists ever
| jaygreco wrote:
| I love fzf. The fuzzy reverse-search alone is worth a lot to me.
| javier_e06 wrote:
| This tool rocks but is intimidating.. I clone the project and the
| install script is a bash executable without the .sh suffix and is
|
| 310 lines long
|
| Sure go ahead execute this thing and cross your fingers..
|
| I use powerline-shell and git auto completion for branches and
| such and I was sweating this thing was going to shoot me.
|
| They added a Docker file for the scared cats like me so I can see
| it in action without messing my environment. I verified that it
| left my .bashrc alone and does not encroached <so far> with tmux
| and bash key bindings. So I installed and I can tell it projects
| my brain birds-eye view into the screen. The *<TAB> keybinding is
| the best.
|
| Great find.
|
| Thanks!
___________________________________________________________________
(page generated 2023-11-30 23:02 UTC)