summaryrefslogtreecommitdiff
path: root/.local/bin/fgrp
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/fgrp')
-rwxr-xr-x.local/bin/fgrp27
1 files changed, 27 insertions, 0 deletions
diff --git a/.local/bin/fgrp b/.local/bin/fgrp
new file mode 100755
index 0000000..ddf3448
--- /dev/null
+++ b/.local/bin/fgrp
@@ -0,0 +1,27 @@
+#!/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
+
+mkdir -pv "${XDG_DATA_HOME:=$HOME/.local/share}/fzf"
+export FZF_HIST="$XDG_DATA_HOME/fzf/grep_history"
+grep -Rnsi --exclude-dir=.git --exclude-dir=node_modules --color=always "$@" |
+ 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(grep -Rns --color=always $*)" \
+ --bind 'enter:execute(echo {} >> "$FZF_HIST"; OPENFLAG=0 fgrp {})' \
+ --bind 'alt-e:execute(echo {} >> "$FZF_HIST"; OPENFLAG=0 OPENWITH=${EDITOR:-vi} fgrp {})' \
+ --bind 'alt-o:execute(echo {} >> "$FZF_HIST"; OPENFLAG=0 OPENWITH=${OPENER:-xdg-open} fgrp {})' \
+ --bind 'alt-O:execute(echo {} >> "$FZF_HIST"; OPENFLAG=0 OPENWITH=${FILES:-lf} fgrp {})'