如何在zsh中将中断快捷键从Ctrl+C重映射为Cmd+C
实现zsh Cmd+C映射为中断快捷键的方案
首先要明确:Cmd 是macOS系统级修饰键,默认不会直接传递给终端内的zsh进程,且触发SIGINT中断本身不是zsh的内置功能部件(widget),而是终端驱动收到对应ASCII码后主动发送中断信号给前台进程,所以你无法直接通过bindkey找到对应的操作ID,需要先在终端层做配置,方案如下:
步骤1:终端软件侧配置快捷键映射
若使用mac自带「终端.app」
- 打开终端设置 → 描述文件 → 切换到「键盘」标签页
- 点击「+」新增自定义快捷键
- 快捷键输入框按下
Cmd+C,操作选择「发送字符串到Shell」,输入框填入\x03后保存即可
若使用iTerm2
- 打开iTerm2设置 → Profiles → 选中你当前使用的配置文件 → 切换到「Keys」→「Key Bindings」标签页
- 点击「+」新增快捷键规则
- 键盘快捷键按下
Cmd+C,Action选择「Send Hex Code」,输入0x03后保存即可
步骤2:可选zsh配置(仅需禁用原有Ctrl+C中断时操作)
如果不需要保留原Ctrl+C的中断功能,只允许Cmd+C触发中断,可以在~/.zshrc文件中添加如下配置解绑原快捷键:
bindkey -r "^C"
添加后执行source ~/.zshrc即可立即生效。
完成上述配置后,Cmd+C就可以实现原Ctrl+C的中断操作效果。
内容的提问来源于stack exchange,提问作者MegaBomber
相关产品推荐
相关产品推荐

