shell - 如何在 fish shell 中将转义插入模式重新映射到 'jk'?

标签 shell vim vi fish

我在 vim 中使用 jk 作为我的转义序列,在 bash 和 zshell 中使用 vi-mode。我如何在 fish shell 中做到这一点?

即在vim中:

inoremap jk <esc>

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

zsh
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

关于shell - 如何在 fish shell 中将转义插入模式重新映射到 'jk'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48956984/

相关文章:

linux - "export var=` echo ${var1}/.. .`"中的反引号和回显是否有原因?

shell - 在文件顶部附加文本

vim - 关于如何创建类似Vim的编辑器的任何教程吗?

ssl - 访问 vi 历史

linux - 使用 procmail 触发应用程序在我的计算机上运行...但我遇到了障碍

c - 为什么我的第二个子进程在第一个子进程之前受到攻击?

vim - 如何在 INTELLIJ 中不使用箭头键进行选择

python - 如何在 Vim 插件输出中为单词着色

vim - 是否可以在 Vim 中重新映射 Ex 命令(重新映射 :Ack to :ack)?

linux - 从多个文件中逐行删除特定行