]> gitweb @ CieloNegro.org - sugar.git/blobdiff - dot-files/_zshrc
Auto commit by The Sugar System.
[sugar.git] / dot-files / _zshrc
index 2472a04075438350b4df344cda3528ea948998a5..50e0f91bb389949a564cdd4125c015e8aee5f337 100644 (file)
@@ -127,6 +127,57 @@ function print_directory_info() {
     fi
 }
 
+function ppgrep() {
+    local -a percol_opts
+
+    if [[ $# -gt 0 ]]; then
+        percol_opts=("--query" "$1")
+    fi
+
+    ps aux | percol "${percol_opts[@]}" | awk '{ print $2 }'
+}
+
+function ppkill() {
+    local -a ppgrep_opts
+
+    if [[ $1 =~ "^[^-]" ]]; then
+        ppgrep_opts=("$1")
+        shift
+    fi
+
+    ppgrep "${ppgrep_opts[@]}" | xargs kill "$@"
+}
+
+function percol_select_history() {
+    local -a tac_cmd
+
+    if which gtac >&/dev/null; then
+        tac_cmd=("gtac")
+    elif which tac >&/dev/null; then
+        tac_cmd=("tac")
+    else
+        tac_cmd=("cat")
+    fi
+
+    local selected
+    selected=$("${tac_cmd[@]}" "$HISTFILE" | \
+        sed 's/^: [0-9]*:[0-9]*;//' | \
+        awk 'seen[$0] {next} {seen[$0]++; print}' | \
+        percol --match-method regex --query "$LBUFFER")
+    if [[ $? -eq 0 ]]; then
+        BUFFER="$selected"
+        CURSOR="$#BUFFER" # move cursor to the end of line
+        zle redisplay
+        #zle accept-line  # uncomment this to execute the selected one immediately.
+    else
+        zle redisplay
+    fi
+}
+if which percol >&/dev/null; then
+    zle -N percol_select_history
+    bindkey '^R' percol_select_history
+fi
+
 HISTFILE="$HOME/.zhistory"
 HISTSIZE=6000000
 SAVEHIST=6000000