Files
dotfiles/dot_config/fish/functions/fish_user_key_bindings.fish
T

44 lines
2.2 KiB
Fish
Raw Normal View History

function fish_user_key_bindings
2026-08-14 13:53:55 -04:00
# Vi mode first: it rebinds the preset tables and (on first activation)
# re-triggers this function via the fish_key_bindings handler, so custom
# binds must come after it to land on top.
fish_vi_key_bindings
2026-08-14 13:53:55 -04:00
# Vi mode types in `insert`; bind customs there AND in `default` (normal)
# so the keys work regardless of mode.
for mode in insert default
# Keys owned by kitty.conf never reach fish and are NOT bound here:
# ctrl-g → lazygit overlay, ctrl-y → yazi vsplit,
2026-08-14 13:53:55 -04:00
# ctrl-h/j/k/l → vim-aware split nav (pass_keys.py).
# ctrl-e: tv git-files (bat preview, enter opens nvim). ctrl-o and
# ctrl-p also open tv cables — same keys in zsh and bash. tv runs
# --inline below the prompt; _tv_inline/_gho_bind/_pj_bind put the
# prompt back in place (or below any output) afterwards. ctrl-a:
# omp-session resumes or starts omp for the repo (same in zsh); when it
# opens the omp-sessions cable and it is cancelled, it steps back up.
# Every binding that runs a program tells iris via _iris_busy
# (_bind_run, _tv_inline, _gho_bind, _pj_bind), or iris would keep
# its prompt key handling while tv/yazi/lazygit own the screen.
bind -M $mode ctrl-e '_tv_inline git-files; commandline -f repaint'
bind -M $mode ctrl-b '_bind_run purple'
bind -M $mode ctrl-y '_bind_run clip-last'
bind -M $mode ctrl-o _gho_bind
bind -M $mode ctrl-p _pj_bind
bind -M $mode ctrl-a '_bind_run omp-session'
# ctrl-z at the prompt: fg the only background job, or pick one from
# the jobs tv cable when there are several (_jobs_bind).
bind -M $mode ctrl-z _jobs_bind
# ctrl-f: yazi (cd's to yazi's exit dir on quit).
bind -M $mode ctrl-f '_bind_run yy'
bind -M $mode ctrl-g '_bind_run lazygit'
2026-08-14 13:53:55 -04:00
# ctrl-c routes through the clear wrapper (kitty scrollback + prompt
# pinned to the bottom) AND wipes any text typed on the command line.
bind -M $mode ctrl-c 'commandline -r ""; clear; commandline -f repaint'
# ctrl-q mirrors ctrl-d's preset (`exit`) — quit the shell.
bind -M $mode ctrl-q exit
end
end