如何获得Control +向左箭头以在iTerm2中返回一个单词?


114

我在阅读Linux手册时发现,它说我可以在编辑时使用control + left和control + right在终端中前后移动单词。

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

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

在此处输入图片说明

在此处输入图片说明

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

在此处输入图片说明

另外,如果我在iTerm中使用alt+escapeB或F,则角色来回移动。这是在我的任何配置更改之前发生的。但是我真的很想能够使用Control +箭头键。


顺便说一句,实现此目的的更简单的方法可能只是映射command + left和command + right,而不是ctrl + left和ctrl + right。我不需要在系统范围内禁用任何功能即可完成此操作。
Mohawk医生

Answers:


135

重击

只需将以下内容添加到~/.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

sh

默认情况下,zsh不使用该readline库,因此不会读取~/.inputrc。要获得相同的功能,您可以将以下内容添加到您的内容中~/.zshrc-再次使用该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本身已被禁用。您可以从系统偏好设置→键盘→快捷方式→任务控制中进行操作

任务控制键盘偏好


4
我尝试按照说明进行操作,以使alt +左​​键和alt +右键起作用。我将这两行添加到我的.inputrc文件中,但是当我按下键时发生的唯一事情是将“ D”或“ C”打印到外壳上。我将iTerm2与zsh shell一起使用。有任何想法吗?
2012年

1
@Flo尝试添加线条bindkey -ebindkey '^[[1;9C' forward-word以及bindkey '^[[1;9D' backward-word你的~/.zshrc吧。IIRC zsh无法读取.inputrc-或至少以这种方式对我有用。
slhck 2012年

2
不适用于ctrl-left / right + bash,但如果我将其设置为alt-left / right,则效果很好。
大林2014年

3
添加了有关“任务控制”快捷方式的编辑,以防止其中任何一种以最不透明的方式工作。希望它可以使某人免于经历我刚做过的同样的事情……
rubyruy 2014年

12
对于OSX + zsh + iTerm2 + ctrl-left / right,请使用以下命令:bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word
Artur Bodera 2014年

45

zsh的工作解决方案。简单,直接,开箱即用。

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

  2. 加载预设: Natural Text Editing

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


感谢@Happy Torturer,我相信这是最好的答案,主要是因为我在Terminal.app上没有这个问题,所以我不想修改bash / zsh,只想在Terminal.app中工作。
galuszkak

这个这个这个 非常感谢您提供此解决方案!我购买的每台Mac电脑都经历了这一令人费解的过程。我现在知道实现此目标的最简单方法。谢谢!
vernonk

8

我以这种方式修复了它:

在顶部菜单中;去

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

我在该预设下拥有的全部是“ Factory Defaults”
MaylorTaylor

7

我使用了不同的方法。使用BetterTouchTool,我为iTerm2编写了自定义键盘快捷键。当我在iTerm2中按alt-left时,它将发送键盘快捷键ctrl-left并带有“将键盘快捷键发送到特定应用程序”操作。该应用程序是iTerm2。我对映射到ctrl-right的alt-right执行了相同的操作。

效果是,在iTerm中按alt-left或alt-right可以将ctrl-left或ctrl-right直接发送到iTerm2,而绕过通常的系统级快捷方式向左或向右移动桌面。像这样,我在本地终端会话上以及远程SSH会话上都在iTerm2中获得了典型的mac行为,并且可以使用标准ctrl-left / ctrl-right移至其他桌面。我在这里写下:

http://www.callum-macdonald.com/2013/04/17/ctrl-left-and-ctrl-right-on-iterm2/


2
BetterTouchTool不是开源的,很可能会做您不希望的事情。那个家伙说他是一个学生,但他也可以成为三封信的代理。
2016年

7

实际上,我发现最简单的解决方案是转到个人资料设置(在“个人资料/密钥”中找到),删除有问题的个人资料快捷方式(因为个人资料会覆盖iTerm中的全局),在我的情况下为alt + left和alt + right,然后是全局快捷方式对我来说很完美!

另外,如果您使用的是OS X,则最好坚持使用系统范围内的快捷方式,即为此使用alt + left和alt + right来代替,终端中的不同行为最终会导致痛苦。

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


实际上,这是最好的解决方案。当我们大多数人进入Keys选项卡时,这很令人困惑。相反,我们必须转到Profiles选项卡->配置文件(例如默认)->键。
Paschalis,2015年

这绝对是最安全,最简单的解决方案。
2016年

2

这篇文章以⌥←Delete删除单词的方式教了此快捷方式和其他快捷方式:

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/


这实际上并不能回答问题,这是关于使用<ctrl> <left>
DavidPostill

您所要做的就是使用适合您需求的快捷方式。“ <ctrl> <left>”或任何您想要的。
塞拉尔托

1
因此,请从参考链接中引用答案的关键部分,因为如果链接页面发生更改,答案可能会失效。
DavidPostill

1

您需要进入Profiles选项卡并删除alt+ leftalt+ 的映射,right因为默认情况下它将输出一些十六进制值。


这为我做到了!
菲利普
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.