如何将转义插入模式重新映射到' jk'在鱼壳?

时间:2018-02-23 22:14:39

标签: shell vim vi fish

我在vim中使用jk作为我的转义序列,在bash和zshell中使用vi-mode。我怎么在鱼壳里做这个?

即。在vim:

mode

击:

openhook

的zsh

inoremap jk <esc>

什么是鱼壳等效物?

3 个答案:

答案 0 :(得分:2)

我假设您已经通过执行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,但除非您创建自动加载功能,否则它不会在新的鱼会话中持久存在。此外,如果你在vi和emacs绑定之间切换,你会想要保护绑定,所以它只针对vi模式:

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

答案 1 :(得分:0)

在使用oh-my-fish框架时,我不得不向bind的其他答案中添加$OMF_CONFIG/key_bindings.fish命令,请参见the oh-my-fish wiki

只是提到万一使用这种框架的其他人也正在努力使之正常工作。

答案 2 :(得分:-3)

这是一篇博文,完全符合我的要求:

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

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