diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index 308586b..a08f108 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -80,6 +80,7 @@ fpath=( # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. plugins=( + 'atuin' 'colored-man-pages' 'docker' 'docker-compose' @@ -117,6 +118,6 @@ source source-remote-file \ "https://raw.githubusercontent.com/dracula/zsh-syntax-highlighting/master/zsh-syntax-highlighting.sh" \ "dracula-syntax-highlighting" -[ -x "$(command -v atuin)" ] && eval "$(atuin init zsh)" +[ -x "$(command -v atuin)" ] && eval "$(atuin init zsh --disable-up-arrow --disable-ctrl-r)" [ -x "$(command -v direnv)" ] && eval "$(direnv hook zsh)" [ -x "$(command -v starship)" ] && eval "$(starship init zsh)" diff --git a/.config/zsh/custom/plugins/atuin/atuin.plugin.zsh b/.config/zsh/custom/plugins/atuin/atuin.plugin.zsh new file mode 100644 index 0000000..fc0733b --- /dev/null +++ b/.config/zsh/custom/plugins/atuin/atuin.plugin.zsh @@ -0,0 +1,41 @@ +autoload -U add-zsh-hook + +# Reset up count on new command +ATUIN_UP_COUNT=0 +_atuin_reset_up_count() { + ATUIN_UP_COUNT=0 +} +add-zsh-hook precmd _atuin_reset_up_count + +# Define functions +_atuin_up_cond() { # first arg is mode (viins or vicmd) + ATUIN_UP_COUNT=$(( ATUIN_UP_COUNT + 1 )) + if [ $ATUIN_UP_COUNT -gt 3 ] + then + zle "atuin-up-search$1" + else + zle up-line-or-beginning-search + fi +} +_atuin_up_cond_vicmd() { + _atuin_up_cond "-vicmd" +} +_atuin_up_cond_viins() { + _atuin_up_cond "-viins" +} + +# Add functions to zle +zle -N atuin-up-cond _atuin_up_cond +zle -N atuin-up-cond-vicmd _atuin_up_cond_vicmd +zle -N atuin-up-cond-viins _atuin_up_cond_viins + +# Bind keys +bindkey -M emacs '^[[A' atuin-up-cond +bindkey -M vicmd '^[[A' atuin-up-cond-vicmd +bindkey -M viins '^[[A' atuin-up-cond-viins + +bindkey -M emacs '^[OA' atuin-up-cond +bindkey -M vicmd '^[OA' atuin-up-cond-vicmd +bindkey -M viins '^[OA' atuin-up-cond-viins + +bindkey -M vicmd 'k' atuin-up-cond-vicmd