使用 Iterm2 时,输入命令常常需要修改,但是在默认的配置下,我们常用的快捷键都失灵了,修改命令还需要一个一个单词移动过去,效率极低。(下面是 Mac 文本编辑器的通用快捷键)期望效果如下:
「Option + ←」光标移动到前一个单词
「Option + →」光标移动到后一个单词
「Command + ←」光标移动到行首
「Command + →」光标移动到行尾
「Option + Delete」删除一个单词
怎么修改
打开 Iterm2 后,打开 Preferences,(通过左上角菜单,或者快捷键「Command + ,」都可),进入 Profiles 下面的 Keys 栏:
- 找到「⌥ ←」,修改 Action 为「Send Escape Sequence」,修改 Esc+ 为「B」。
- 找到「⌥ →」,修改 Action 为「Send Escape Sequence」,修改 Esc+ 为「F」。
- 新建「⌘ ←」,修改 Action 为「Send Hex Code」,修改第三个框为「0x01」。
- 新建「⌘ →」,修改 Action 为「Send Hex Code」,修改第三个框为「0x05」。
- 新建「⌥ ←Delete」,修改 Action 为「Send Hex Code」,修改第三个框为「0x17」。
此外,再解决一下「⌘ ←/→」的冲突:
进入 Preferences 里的 Keys 下面的 Key Bindings栏,删掉「⌘ ←」和「⌘ →」这两个切换 Window 的快捷键绑定。
为什么这样可以生效
这 4 个快捷键在 Iterm2 中,都有默认的功能,「Option + ←/→」是发送某信号给 Shell,而「Command + ←/→」是切换 Window 的快捷键。
其实这两个默认的功能我们都不会用到:
- 前者咱都不懂是啥信号,咱只知道「Control + Z」和「Control + C」,留着这俩就够了;
- 后者,我们更常用的是「Control + Tab」「Command + 数字」来切换 Window。
「Send Escape Sequence」就是给 Shell 发送键盘命令,先按 Esc,再按 B,就会回到上个单词,先按 Esc,再按 F,就会到下个单词,这是 Shell 默认行为。我们相当于利用快捷键映射到了 Shell 默认行为。
「Send Hex Code」就是给 Shell 发送二进制命令,「0x01」就是跳到行首的命令,「0x05」就是跳到行尾的命令。
此外,也常常有人在 Preferences - Profiles - Keys 中,把 Left Option 改为「Esc+」,这样「Option + F」「Option + B」也可以前后移动单词。