我将jk用作vim的转义序列,以及bash和zshell的vi-mode。我该怎么做?

即在vim中:

inoremap jk <esc>

重击:
bind -m vi-insert '"jk": vi-movement-mode'

sh
bindkey -M viins 'jk' vi-cmd-mode

fish shell 等于多少?

最佳答案

我假设您已经通过执行fish_vi_key_bindings启用了vi模式。否则,这个问题就没有意义了:-)

创建一个名为〜/.config/fish/functions/fish_user_key_bindings.fish的文件,其中包含以下内容:

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

您可以交互运行bind,但除非创建该自动加载的函数,否则它将不会在新的Fish session 中持久存在。另外,如果您在vi和emacs绑定(bind)之间切换,您将需要保护该绑定(bind),因此仅适用于vi模式:
if test "$__fish_active_key_bindings" = "fish_vi_key_bindings"
    bind ....
end

10-08 03:40