1
0
Fork 0
dotfiles/common/.config/zsh/config/bindings.zsh

80 lines
2.5 KiB
Bash

# vi mode
bindkey -v
zmodload zsh/terminfo
typeset -gA key_info
key_info=(
'Control' "\C-"
'Escape' "\e"
'Meta' "\M-"
'Backspace' "^?"
'Delete' "^[[3~"
'F1' "$terminfo[kf1]"
'F2' "$terminfo[kf2]"
'F3' "$terminfo[kf3]"
'F4' "$terminfo[kf4]"
'F5' "$terminfo[kf5]"
'F6' "$terminfo[kf6]"
'F7' "$terminfo[kf7]"
'F8' "$terminfo[kf8]"
'F9' "$terminfo[kf9]"
'F10' "$terminfo[kf10]"
'F11' "$terminfo[kf11]"
'F12' "$terminfo[kf12]"
'Insert' "$terminfo[kich1]"
'Home' "$terminfo[khome]"
'PageUp' "$terminfo[kpp]"
'End' "$terminfo[kend]"
'PageDown' "$terminfo[knp]"
'Up' "$terminfo[kcuu1]"
'Left' "$terminfo[kcub1]"
'Down' "$terminfo[kcud1]"
'Right' "$terminfo[kcuf1]"
'BackTab' "$terminfo[kcbt]"
'AltLeft' "${key_info[Escape]}${key_info[Left]} \e[1;3D"
'AltRight' "${key_info[Escape]}${key_info[Right]} \e[1;3C"
'ControlLeft' "\e[1;5D"
'ControlRight' "\e[1;5C"
'ControlPageUp' "\e[5;5~"
'ControlPageDown' "\e[6;5~"
)
local -A global_keybinds
global_keybinds=(
"$key_info[Home]" beginning-of-line
"$key_info[End]" end-of-line
"$key_info[Delete]" delete-char
"$key_info[ControlLeft]" backward-word
"$key_info[ControlRight]" forward-word
"$key_info[Control]E" lf-wrap
"$key_info[Control]G" lazygit-wrap
"$key_info[Control]S" toggle-fzf-tab
"$key_info[Control]Z" fancy-ctrl-z
)
local -A viins_keybinds
viins_keybinds=(
"$key_info[Control]W" backward-kill-word
"$key_info[Backspace]" backward-delete-char
"$key_info[ControlLeft]" vi-backward-word
"$key_info[ControlRight]" vi-forward-word
)
local -A vicmd_keybinds
vicmd_keybinds=(
"$key_info[Control]V" edit-command-line
"$key_info[Delete]" delete-char
"$key_info[ControlLeft]" vi-backward-word
"$key_info[ControlRight]" vi-forward-word
"$key_info[Escape]" sudo-command-line
)
for key bind in ${(kv)global_keybinds} ${(kv)viins_keybinds}; do
bindkey -M viins "$key" "$bind"
done
for key bind in ${(kv)global_keybinds} ${(kv)vicmd_keybinds}; do
bindkey -M vicmd "$key" "$bind"
done