You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在fish shell中将插入模式的Esc映射为‘jk’?

在Fish Shell中配置jk退出Vi插入模式的方法

我平时也习惯用jk快速退出插入模式,刚好可以给你讲讲Fish里的等效配置,还会对比下你熟悉的Vim、Bash/Zsh的设置,方便你对应理解~

一、Fish Shell的具体配置步骤

Fish的键绑定逻辑和Bash/Zsh略有不同,不过实现起来很简单,分两步:

1. 临时生效(测试用)

先在命令行直接输入下面的命令,测试是否能正常工作:

bind -M insert 'jk' exit-insert-mode

切换到Vi插入模式后输入jk,应该能立刻回到Normal模式。

2. 持久化配置(永久生效)

要让这个设置每次打开终端都生效,推荐把绑定命令放到Fish的专门键绑定文件里:

  1. 打开(或创建)~/.config/fish/functions/fish_user_key_bindings.fish文件
  2. 写入以下内容:
function fish_user_key_bindings
    bind -M insert 'jk' exit-insert-mode
end

保存退出后,重启终端或者执行source ~/.config/fish/functions/fish_user_key_bindings.fish,设置就永久生效了。

补充:如果还没开启Fish的Vi模式,可以先执行set -U fish_key_bindings fish_vi_key_bindings来全局开启,或者通过fish_config图形界面选择Vi模式。

二、和Vim、Bash/Zsh的配置对应关系

方便你对照自己已有的设置,这里列一下不同环境的配置写法:

  • Vim:在.vimrc中添加
    inoremap jk <Esc>
    
  • Bash(Vi模式):在.bashrc中添加
    bind -m vi-insert 'jk':vi-movement-mode
    
  • Zsh(Vi模式):在.zshrc中添加
    bindkey -M viins 'jk' vi-cmd-mode
    

内容的提问来源于stack exchange,提问作者willpnw

火山引擎 最新活动