From 1915036a5ef89430a55ce0a00b1bf4e89425004e Mon Sep 17 00:00:00 2001 From: Oscar Wallberg Date: Mon, 20 Oct 2025 02:45:56 +0200 Subject: [PATCH] feat: change from emacs mode to vi mode --- zsh/rc | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/zsh/rc b/zsh/rc index 2516d00..d1e1079 100644 --- a/zsh/rc +++ b/zsh/rc @@ -30,8 +30,34 @@ setopt HIST_REDUCE_BLANKS setopt HIST_VERIFY setopt INC_APPEND_HISTORY_TIME -# Emacs mode -bindkey -e +########### +# Vi mode # +########### + +bindkey -v +export KEYTIMEOUT=1 # Reduce ESC delay to 10ms +bindkey -v '^?' backward-delete-char # Make backspace work in vi insert mode +bindkey -v '^H' backward-delete-char # Alternative backspace binding +bindkey -a '_' vi-first-non-blank + +# Selection highlight +# shellcheck disable=SC2034 +zle_highlight=(region:bg=#323641) + +# Change cursor shape based on vi mode +function zle-keymap-select { + if [[ ${KEYMAP} == main ]]; then + echo -ne '\e[5 q' # Beam cursor for insert mode + elif [[ ${KEYMAP} == vicmd ]]; then + echo -ne '\e[1 q' # Block cursor for command mode + fi +} +zle -N zle-keymap-select + +function zle-line-init { + echo -ne '\e[5 q' # Beam cursor for insert mode +} +zle -N zle-line-init ################### # Shell Variables #