如何在 iTerm2 中通过 control+左箭头返回一个单词?

如何在 iTerm2 中通过 control+左箭头返回一个单词?

我正在阅读 Linux 手册,我注意到它说我可以在编辑时使用 control+left 和 control+right 在终端中前进和后退单词。

“按下 Ctrl 加左箭头键或右箭头键可以一次向后或向前移动一个单词,按下 Esc 然后按 B 或 F 也可以。”

在 OS X 上control+leftcontrol+right通常控制空格。我已禁用这些。我还尝试使用首选项窗格来设置键盘快捷键:

在此处输入图片描述

在此处输入图片描述

但这不起作用并导致此错误:

在此处输入图片描述

此外,如果我在 iTerm 中使用alt+escapeB 或 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 的解决方案。简单、直接、开箱即用。

  1. 去: ⌘, Preferences → Profiles → Keys → Keyboard Behavior

  2. 加载预设:Natural Text Editing

加载预设“自然文本编辑”

答案3

我是这样修复的:

在顶部菜单中;转到

Profiles 
-> Open profiles... 
-> Edit profiles... (button) 
-> Keys (tab) 
-> Load Preset... (dropdown) 
->  Choose "Natural text editing". Done! :-)

在此处输入图片描述

答案4

实际上,我发现最简单的解决方案是转到我的配置文件设置(在 Profiles/Keys 中找到),删除有问题的配置文件快捷方式(因为配置文件会覆盖 iTerm 中的全局快捷方式),在我的情况下是 alt+left 和 alt+right,然后全局快捷方式对我来说完美地工作了!

此外,如果您使用的是 OS X,最好还是坚持使用系统范围的快捷方式,即为此目的使用 alt+left 和 alt+right,终端中的不同行为最终必然会造成麻烦。

除此之外,chmac 的解决方案使用 Better Touch Tool 是一种优雅的方式,仅在 iterm 中改变 control+arrow 的行为。

相关内容