#!/bin/sh # fzf-grep: browse through grepped lines using fzf if [ "$OPENFLAG" = 0 ]; then location="$(echo "$*" | sed 's/^\(.*\):\([0-9]\+\):.*$/\1|\2/')" file="${location%|*}"; line="${location##*|}" case "${OPENWITH:=$EDITOR}" in ''|vi|*vim*) $OPENWITH +"$line" "$file" ;; *) $OPENWITH "$file" ;; esac; exit fi [ -z "$FZF_HISTDIR" ] && export FZF_HISTDIR="${XDG_STATE_HOME:-$HOME/.local/state}/fzf" mkdir -pv "$FZF_HISTDIR" export FZF_HIST="$FZF_HISTDIR/grep_history" cmd="grep -Rnsi --exclude-dir=.git --exclude-dir=node_modules --color=always" $cmd "$@" | fzf --ansi \ --history="$FZF_HIST" \ --prompt="grep > " \ --preview='preview "$(echo {1} | cut -d: -f1)"' \ --preview-window="hidden" \ --bind 'ctrl-v:toggle-preview,ctrl-space:toggle-preview' \ --bind "ctrl-r:reload($cmd $*)" \ --bind 'enter:execute(append-to-history {} "$FZF_HIST"; OPENFLAG=0 fgrp {})' \ --bind 'alt-e:execute(append-to-history {} "$FZF_HIST"; OPENFLAG=0 OPENWITH=${EDITOR:-vi} fgrp {})' \ --bind 'alt-o:execute(append-to-history {} "$FZF_HIST"; OPENFLAG=0 OPENWITH=${OPENER:-xdg-open} fgrp {})' \ --bind 'alt-O:execute(append-to-history {} "$FZF_HIST"; OPENFLAG=0 OPENWITH=${FILES:-lf} fgrp {})'