/ / Wie kann man den Escape-Einfügemodus in 'jk' in der Fischschale neu zuordnen? - shell, vim, vi, fish

Wie man den Escape-Einfügemodus auf 'jk' in der Fischschale umstellt? - Schale, vim, vi, Fisch

Ich verwende jk als meine Escape-Sequenz in vim sowie den vi-mode für bash und zshell. Wie mache ich das in Fish Shell?

in vim:

inoremap jk <esc>

bash:

bind -m vi-insert ""jk": vi-movement-mode"

zsh

bindkey -M viins "jk" vi-cmd-mode

Was ist das Äquivalent der Fischschale?

Antworten:

1 für die Antwort № 1

Ich gehe davon aus, dass Sie den vi-Modus bereits durch Ausführen aktiviert haben fish_vi_key_bindings. Ansonsten macht die Frage keinen Sinn :-)

Erstellen Sie eine Datei mit dem Namen ~ / .config / fish / functions / fish_user_key_bindings.fish das enthält das:

function fish_user_key_bindings
bind -M insert jk "if commandline -P; commandline -f cancel; else; set fish_bind_mode default; commandline -f backward-char force-repaint; end"
end

Sie können das ausführen bind interaktiv, aber es wird nicht hartnäckig seinneue Fischsitzungen, es sei denn, Sie erstellen diese automatisch geladene Funktion. Wenn Sie zwischen der vi - und der emacs-Bindung wechseln, möchten Sie diese Bindung schützen, sodass sie nur für den vi-Modus ausgeführt wird:

if test "$__fish_active_key_bindings" = "fish_vi_key_bindings"
bind ....
end

-3 für die Antwort № 2

Hier ist ein Blogpost, der genau das macht, wonach ich gesucht habe:

https://fedragon.github.io/vimode-fishshell-osx/

TLDR;)

~/.config/fish/functions/fish_user_key_bindings.fish
---------------------------------------------------
function fish_user_key_bindings
fish_vi_key_bindings
bind -M insert -m default jk backward-char force-repaint
end

Und

~/.config/fish/config.fish
---------------------------------------------------
set fish_key_bindings fish_user_key_bindings