mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 19:32:43 +00:00
feat(config): add zsh keybinds configuration
This commit is contained in:
1 parent
e3b569af08
commit
ac912e6233
1 file changed
+50
@@ -0,0 +1,50 @@
|
||||
# ~/.config/zsh/keybinds.zsh — zle ports of fish_user_key_bindings.fish.
|
||||
# Keys owned by kitty.conf never reach the shell and are NOT bound here:
|
||||
# ctrl-h/j/k/l → vim-aware split nav (pass_keys.py).
|
||||
|
||||
bindkey -e # pin emacs keymap ($EDITOR containing "vi" would pick viins)
|
||||
unsetopt flow_control # free ^Q/^S in zle so the ctrl-q exit bind fires
|
||||
|
||||
# Generic runner: widget `run-<cmd>` executes <cmd> (function or binary) with
|
||||
# the tty as stdin, then repaints — fish's `commandline -f repaint`.
|
||||
# cwd changes from gho/yy persist: widgets run in the shell process.
|
||||
_zle-run() {
|
||||
local cmd=${WIDGET#run-}
|
||||
zle -I
|
||||
$cmd </dev/tty
|
||||
zle reset-prompt
|
||||
}
|
||||
for _cmd in nvim purple clip-last gho pj omp yy lazygit; do
|
||||
zle -N "run-$_cmd" _zle-run
|
||||
done
|
||||
unset _cmd
|
||||
|
||||
bindkey '^E' run-nvim
|
||||
bindkey '^B' run-purple
|
||||
bindkey '^Y' run-clip-last
|
||||
bindkey '^O' run-gho
|
||||
bindkey '^P' run-pj
|
||||
bindkey '^A' run-omp
|
||||
# ctrl-f: pick file(s) and open in nvim; yy also cd's to yazi's exit dir.
|
||||
bindkey '^F' run-yy
|
||||
bindkey '^G' run-lazygit
|
||||
|
||||
# ctrl-q mirrors ctrl-d's preset (`exit`) — quit the shell.
|
||||
_zle-exit() { exit }
|
||||
zle -N _zle-exit
|
||||
bindkey '^Q' _zle-exit
|
||||
|
||||
# ctrl-c at the prompt: wipe any typed text AND clear screen + kitty
|
||||
# scrollback (2J/3J drops it, like the fish `clear` wrapper). ^C is the tty
|
||||
# INTR char, so this lives in TRAPINT — bindkey '^C' would never fire.
|
||||
# Mid-command SIGINT behaves normally (128+SIGINT). BUFFER is read-only in
|
||||
# trap context, so builtin widgets are invoked via `zle .name` instead.
|
||||
TRAPINT() {
|
||||
if zle; then
|
||||
zle .kill-buffer
|
||||
printf '\033[2J\033[3J\033[1;1H'
|
||||
zle .reset-prompt
|
||||
return 0
|
||||
fi
|
||||
return $(( 128 + $1 ))
|
||||
}
|
||||
Reference in new issue
Block a user