如何在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的专门键绑定文件里:
- 打开(或创建)
~/.config/fish/functions/fish_user_key_bindings.fish文件 - 写入以下内容:
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




