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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在鱼壳中将转义插入模式重新映射为'jk'?相关的知识,希望对你有一定的参考价值。

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

即在vim中:

inoremap jk <esc>

庆典:

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

zsh的

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

什么是鱼壳等价物?

答案

我假设你已经通过执行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
另一答案

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

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

以上是关于如何在鱼壳中将转义插入模式重新映射为'jk'?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Vim中将菜单键(“应用程序键”)映射到Escape键?

如何在 Clojure/Compojure/Ring 中将映射转换为 URL 查询字符串?

oracle 如何插入带有引号''和连接符的字符串

在 ms access 2010 中将查询结果插入表中

如何在 Mongoose 中将一个模式的引用添加到另一个模式并通过 json 插入数据?

oracle中的转义符 - 在oracle中插入单引号与'&'