nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 0620b1dfb5c5e9a66a210c6111ea829f4c5b4ab7
parent 407b690404e60f3c66a8b7bb2b580b8d2e6e61f3
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date:   Sun, 17 Nov 2019 19:14:30 +0530

Plugin fzhist

Diffstat:
Mplugins/README.md | 1+
Aplugins/fzhist | 31+++++++++++++++++++++++++++++++
2 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/plugins/README.md b/plugins/README.md @@ -15,6 +15,7 @@ The currently available plugins are listed below. | dragdrop | sh | [dragon](https://github.com/mwh/dragon) | Drag/drop files from/into nnn | | exetoggle | sh | chmod | Toggle executable status of hovered file | | fzcd | sh | fzy/fzf<br>(optional fd) | Change to the directory of a fuzzy-selected file/dir | +| fzhist | sh | fzy | Fuzzy-select a cmd from history, edit in $EDITOR and run | | fzopen | sh | fzy, xdg-open | Fuzzy find a file in dir subtree and edit or xdg-open | | getplugs | sh | curl | Update plugins | | gutenread | sh | curl, unzip, w3m<br>[epr](https://github.com/wustho/epr) (optional)| Browse, download, read from Project Gutenberg | diff --git a/plugins/fzhist b/plugins/fzhist @@ -0,0 +1,31 @@ +#!/usr/bin/env sh + +# Description: Fuzzy find a command from history, edit in $EDITOR and run as a command +# Currently supports only bash and fish history +# +# Shell: POSIX compliant +# Author: Arun Prakash Jana + +shellname="$(basename "$SHELL")" + +if [ "$shellname" = "bash" ]; then + hist_file="$HOME/.bash_history" + entry="$(cat "$hist_file" | fzy)" +elif [ "$shellname" = "fish" ]; then + hist_file="$HOME/.config/fish/fish_history" + entry="$(cat "$hist_file" | grep "\- cmd: " | cut -c 8- | fzy)" +fi + +if ! [ -z "$entry" ]; then + tmpfile=$(mktemp) + echo "$entry" >> $tmpfile + $EDITOR $tmpfile + + cmd="$(cat $tmpfile)" + + if ! [ -z "$cmd" ]; then + $SHELL -c "$cmd" + fi + + rm $tmpfile +fi