我正在阅读 Linux 手册,我注意到它说我可以在编辑时使用 control+left 和 control+right 在终端中前进和后退单词。
“按下 Ctrl 加左箭头键或右箭头键可以一次向后或向前移动一个单词,按下 Esc 然后按 B 或 F 也可以。”
在 OS X 上control+left
,control+right
通常控制空格。我已禁用这些。我还尝试使用首选项窗格来设置键盘快捷键:
但这不起作用并导致此错误:
此外,如果我在 iTerm 中使用alt+escape
B 或 F,角色就会来回移动。这在我更改任何配置之前就发生了。但我真的很想能够使用 control + 箭头键。
答案1
狂欢
只需添加以下内容~/.inputrc
:
"\e[1;5D": backward-word
"\e[1;5C": forward-word
看此存档的 Wiki 帖子更多解释。如果您想使用alt键来进行单词间移动(如默认的 OS X 行为),请使用:
"\e[1;9D": backward-word
"\e[1;9C": forward-word
嘚
zsh 默认不使用该readline
库,因此不会读取~/.inputrc
。要获得相同的功能,您可以将以下内容添加到~/.zshrc
要使用的文件中ctrl:
bindkey -e
bindkey '\e\e[C' forward-word
bindkey '\e\e[D' backward-word
要使用alt密钥:
bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word
看本文档有关内置 zsh 行编辑器 (zle) 的更多信息。
这是为什么?您已将配置文件设置为使用 Xterm 默认设置:
这就是为什么您需要“捕捉”这个序列并告诉readline
要做什么。
如果上述方法仍然不起作用,并且您使用的是 OS X 10.9 (Mavericks) 或类似版本,您可能需要禁用全局 Mission Control 快捷键,这些快捷键会阻止 Control+箭头键到达 iTerm,即使 Mission Control 本身已禁用。您可以从系统偏好设置 → 键盘 → 快捷方式 → 任务控制:
答案2
适用于 zsh 的解决方案。简单、直接、开箱即用。
去:
⌘, Preferences → Profiles → Keys → Keyboard Behavior
加载预设:
Natural Text Editing
答案3
答案4
实际上,我发现最简单的解决方案是转到我的配置文件设置(在 Profiles/Keys 中找到),删除有问题的配置文件快捷方式(因为配置文件会覆盖 iTerm 中的全局快捷方式),在我的情况下是 alt+left 和 alt+right,然后全局快捷方式对我来说完美地工作了!
此外,如果您使用的是 OS X,最好还是坚持使用系统范围的快捷方式,即为此目的使用 alt+left 和 alt+right,终端中的不同行为最终必然会造成麻烦。
除此之外,chmac 的解决方案使用 Better Touch Tool 是一种优雅的方式,仅在 iterm 中改变 control+arrow 的行为。