aboutsummaryrefslogtreecommitdiff
path: root/external/zsh/plugins/fzf-history.zsh
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2020-12-20 16:49:47 +0530
committerAkshay Nair <phenax5@gmail.com>2020-12-20 16:49:47 +0530
commit568f7903ca7464f99df659b8488bd731e4f2c4f0 (patch)
treedfa7f9d077eb85ec840c8bfcaa04c1d64cc5aa29 /external/zsh/plugins/fzf-history.zsh
parentc580a9ec2a1a43a682117eca41c3867e8771117a (diff)
downloadnixos-config-568f7903ca7464f99df659b8488bd731e4f2c4f0.tar.gz
nixos-config-568f7903ca7464f99df659b8488bd731e4f2c4f0.zip
Adds zsh config
Diffstat (limited to 'external/zsh/plugins/fzf-history.zsh')
-rw-r--r--external/zsh/plugins/fzf-history.zsh19
1 files changed, 19 insertions, 0 deletions
diff --git a/external/zsh/plugins/fzf-history.zsh b/external/zsh/plugins/fzf-history.zsh
new file mode 100644
index 0000000..f91cc99
--- /dev/null
+++ b/external/zsh/plugins/fzf-history.zsh
@@ -0,0 +1,19 @@
+full_history() {
+ [[ ${@[-1]-} = *[0-9]* ]] && builtin fc -l "$@" || builtin fc -l "$@" 1;
+}
+
+trim() { sed 's/^\s*//g'; }
+reverse() { sed -n '1!G;h;$p'; }
+unique() { awk '!seen[$0]++'; }
+
+search_history() {
+ local result=$(full_history | trim | cut -d' ' -f 2- | reverse | unique | fzf);
+
+ # Replace the buffer with the editor output.
+ print -Rz - "$(echo -n "$result" | trim)";
+
+ zle send-break # Force reload from the buffer stack
+}
+
+zle -N search_history;
+bindkey '^R' search_history;