From 4200b44e6226eacf8c2f609064af1615755b21f6 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Wed, 15 May 2024 02:09:26 +0200 Subject: [PATCH] feat: add more zsh features (theme, keybinding) --- modules/home-manager/cli/zsh/default.nix | 63 ++++++++++++++++++++---- 1 file changed, 53 insertions(+), 10 deletions(-) diff --git a/modules/home-manager/cli/zsh/default.nix b/modules/home-manager/cli/zsh/default.nix index 316485d..413f26d 100644 --- a/modules/home-manager/cli/zsh/default.nix +++ b/modules/home-manager/cli/zsh/default.nix @@ -26,20 +26,61 @@ in }; syntaxHighlighting = { enable = true; - highlighters = [ "brackets" "main" ]; + highlighters = [ "brackets" "main" "pattern" ]; styles = { - single-hyphen-option = "fg=blue"; - double-hyphen-option = "fg=blue"; + builtin = "fg=#7cafc2,bold"; + single-hyphen-option = "fg=#86c1b9"; + double-hyphen-option = "fg=#86c1b9"; + back-quoted-argument-delimiter = "fg=ba8baf,bold"; + single-quoted-argument = "fg=f7ca88"; function = "fg=blue"; - reserved-word = "fg=magenta,bold"; - assign = "fg=red"; - bracket-level-1 = "fg=blue"; - bracket-level-2 = "fg=magenta"; - bracket-level-3 = "fg=green"; - bracket-error = "fg=red,bold"; - cursor-matchingbracket = "fg=magenta,bold"; + reserved-word = "fg=#ba8baf,bold"; + assign = "fg=#a1b56c"; + bracket-level-1 = "fg=7cafc2"; + bracket-level-2 = "fg=ba8baf"; + bracket-level-3 = "fg=#a1b56c"; + bracket-error = "fg=#ab4642,bold"; + cursor-matchingbracket = "fg=ba8baf,bold"; + redirection = "fg=#f7ca88,bold"; + back-double-quoted-argument = "fg=#7cafc2"; + dollar-double-quoted-argument = "fg=#86c1b9"; + }; + patterns = { + "\\|" = "fg=#f7ca88,bold"; + " \\|\\| " = "fg=ba8baf,bold"; + " \\&\\& " = "fg=ba8baf,bold"; + "\\n" = "fg=#7cafc2"; }; }; + initExtra = '' + # Ctrl + backspace: delete word + bindkey -v "^H" backward-kill-word + + bindkey -v "^b" backward-word + bindkey -v "^e" forward-word + bindkey -v "^u" backward-kill-line + bindkey -v "^[^u" kill-line + bindkey -v "^w" backward-kill-word + bindkey -v "^[^w" kill-word + + ## Edit command line with nvim + autoload -z edit-command-line + zle -N edit-command-line + bindkey -a v edit-command-line + + # change cursor like vim does + zle-keymap-select () { + if [[ ''$KEYMAP == vicmd ]]; then + # the command mode for vi + echo -ne "\e[2 q" + else + # the insert mode for vi + echo -ne "\e[5 q" + fi + } + precmd_functions+=(zle-keymap-select) + zle -N zle-keymap-select + ''; completionInit = '' autoload -Uz compinit for dump in ''${ZDOTDIR}/.zcompdump(N.mh+24); do @@ -77,6 +118,8 @@ in }]; localVariables = { BASE16_THEME = "$HOME/.config/zsh/plugins/base16"; + # Make ESC key more reactive to go to normal mode + KEYTIMEOUT = 1; }; }; };