From 66adff9257c0bdcf5fea357cf4afd9c5804ac9d9 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Wed, 23 Dec 2020 23:40:35 +0530 Subject: Moves zsh config to config and symlinked --- config/zsh/plugins/completion.zsh | 11 +++++++++++ config/zsh/plugins/fzf-history.zsh | 19 +++++++++++++++++++ config/zsh/plugins/magic-enter.zsh | 29 +++++++++++++++++++++++++++++ config/zsh/plugins/manpage.zsh | 6 ++++++ config/zsh/plugins/sudo.zsh | 35 +++++++++++++++++++++++++++++++++++ 5 files changed, 100 insertions(+) create mode 100644 config/zsh/plugins/completion.zsh create mode 100644 config/zsh/plugins/fzf-history.zsh create mode 100644 config/zsh/plugins/magic-enter.zsh create mode 100644 config/zsh/plugins/manpage.zsh create mode 100644 config/zsh/plugins/sudo.zsh (limited to 'config/zsh/plugins') diff --git a/config/zsh/plugins/completion.zsh b/config/zsh/plugins/completion.zsh new file mode 100644 index 0000000..bf6e731 --- /dev/null +++ b/config/zsh/plugins/completion.zsh @@ -0,0 +1,11 @@ + +autoload -Uz compinit && compinit; +# load bashcompinit for some old bash completions +autoload bashcompinit && bashcompinit + +# partial completion suggestions +zstyle ':completion:*' list-suffixes +zstyle ':completion:*' expand prefix suffix + +# Case insensitive +zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' diff --git a/config/zsh/plugins/fzf-history.zsh b/config/zsh/plugins/fzf-history.zsh new file mode 100644 index 0000000..f91cc99 --- /dev/null +++ b/config/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; diff --git a/config/zsh/plugins/magic-enter.zsh b/config/zsh/plugins/magic-enter.zsh new file mode 100644 index 0000000..5d50316 --- /dev/null +++ b/config/zsh/plugins/magic-enter.zsh @@ -0,0 +1,29 @@ +# Bind quick stuff to enter! +# +# Pressing enter in a git directory runs `git status` +# in other directories `ls` +magic-enter () { + # If commands are not already set, use the defaults + [ -z "$MAGIC_ENTER_GIT_COMMAND" ] && MAGIC_ENTER_GIT_COMMAND="git status -u ." + [ -z "$MAGIC_ENTER_OTHER_COMMAND" ] && MAGIC_ENTER_OTHER_COMMAND="ls -lh ." + + if [[ -z $BUFFER ]]; then + echo "" + if git rev-parse --is-inside-work-tree &>/dev/null; then + eval "$MAGIC_ENTER_GIT_COMMAND" + else + eval "$MAGIC_ENTER_OTHER_COMMAND" + fi + zle redisplay + else + zle accept-line + fi +} + +zle -N magic-enter + +bindkey "^M" magic-enter + +# Auto correct typos +#setopt CORRECT +#setopt CORRECT_ALL diff --git a/config/zsh/plugins/manpage.zsh b/config/zsh/plugins/manpage.zsh new file mode 100644 index 0000000..8c8c372 --- /dev/null +++ b/config/zsh/plugins/manpage.zsh @@ -0,0 +1,6 @@ + +open-man() { macho; } + +zle -N open-man +bindkey -M emacs '^_' open-man + diff --git a/config/zsh/plugins/sudo.zsh b/config/zsh/plugins/sudo.zsh new file mode 100644 index 0000000..fd43b93 --- /dev/null +++ b/config/zsh/plugins/sudo.zsh @@ -0,0 +1,35 @@ +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# sudo or sudoedit will be inserted before the command +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * Dongweiming +# +# ------------------------------------------------------------------------------ + +MAGIC_ENTER_GIT_COMMAND='git status'; +MAGIC_ENTER_OTHER_COMMAND='ls'; + +sudo-command-line() { + [[ -z $BUFFER ]] && zle up-history + if [[ $BUFFER == sudo\ * ]]; then + LBUFFER="${LBUFFER#sudo }" + elif [[ $BUFFER == $EDITOR\ * ]]; then + LBUFFER="${LBUFFER#$EDITOR }" + LBUFFER="sudoedit $LBUFFER" + elif [[ $BUFFER == sudoedit\ * ]]; then + LBUFFER="${LBUFFER#sudoedit }" + LBUFFER="$EDITOR $LBUFFER" + else + LBUFFER="sudo $LBUFFER" + fi +} + +zle -N sudo-command-line; +bindkey '^Z' sudo-command-line; + -- cgit v1.3.1