Ctrl加向左或向右箭头键一次可向后或向前移动单词,与按Esc键然后按B或F一样。”
在OS X上,
control+left
和control+right
通常控制空格。我已经禁用了那些。我还尝试使用首选项窗格来设置键盘快捷键:但是这不起作用并导致此错误:
此外,如果我在iTerm中并使用
alt+escape
,则字符B或F来回移动。这是在我的任何配置更改之前发生的。但是我真的很想能够使用Control +箭头键。#1 楼
bash只需将以下内容添加到
~/.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
默认情况下,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。您可以从“系统偏好设置”→“键盘”→“快捷方式”→“任务控制”中进行操作:
评论
我尝试按照说明进行操作,以使alt +左键和alt +右键起作用。我将这两行添加到我的.inputrc文件中,但是当我按下键时发生的唯一事情是将“ D”或“ C”打印到外壳上。我将iTerm2与zsh shell一起使用。有任何想法吗?
– Flo
2012年11月27日11:23
@Flo尝试在您的〜/ .zshrc中添加以下行:bindkey -e,bindkey'^ [[1; 9C'前向词和bindkey'^ [[1; 9D'后向词”。 IIRC zsh不会读取.inputrc –至少它对我有用。
–slhck
2012年11月27日上午11:49
不适用于ctrl-left / right + bash,但如果我将其设置为alt-left / right,则效果很好。
–大林
2014年1月18日,下午3:22
添加了有关“任务控制”快捷方式的编辑,以防止其中任何一种以最不透明的方式工作。希望它可以使某人免于经历我刚做的同样的事情...
–rubyruy
2014年1月22日在18:22
对于OSX + zsh + iTerm2 + ctrl-left / right,请使用以下命令:bindkey -e; bindkey'\ e \ e [C'前向字; bindkey'\ e \ e [D'向后单词
– Artur Bodera
2014年4月11日9:30
#2 楼
zsh的工作解决方案。简单,直接,开箱即用。转到:
⌘, Preferences → Profiles → Keys → Keyboard Behavior
负载预设:
Natural Text Editing
评论
感谢@Happy Torturer,我相信这是最好的答案,主要是因为我在Terminal.app上没有这个问题,所以我不想修改bash / zsh,只想在Terminal.app中工作。
–galuszkak
17年9月23日在17:07
这个这个这个非常感谢您提供此解决方案!我购买的每台Mac电脑都经历了这个令人费解的过程。我现在知道实现此目标的最简单方法。谢谢!
–vernonk
17年11月22日在4:55
这应该是公认的答案。我想知道,有什么方法可以通过命令行而不是通过设置GUI加载此预设吗?
–卡西米尔
19/12/16在9:20
#3 楼
我是这样修复的:在顶部菜单中;转到
Profiles
-> Open profiles...
-> Edit profiles... (button)
-> Keys (tab)
-> Load Preset... (dropdown)
-> Choose "Natural text editing". Done! :-)
评论
我在该预设下拥有的全部是“出厂默认值”
– MaylorTaylor
18 Sep 10'在2:29
#4 楼
我使用了不同的方法。使用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/
评论
BetterTouchTool不是开源的,很可能会做您不希望的事情。那个家伙说他是一个学生,但他也可以成为三封信的代理。
–撤离
16年1月4日在17:43
#5 楼
实际上,我发现最简单的解决方案是转到个人资料设置(在“个人资料/密钥”中找到),删除有问题的个人资料快捷方式(因为个人资料会覆盖iTerm中的全局),在我的情况下为alt + left和alt + right,然后是全局此外,如果您使用的是OS X,则最好坚持使用系统级的快捷方式,即为此目的使用alt + left和alt + right代替终端中的行为最终必定会引起痛苦。
除了chmac的使用Better Touch Tool的解决方案是仅在iterm中更改control + arrow行为的一种优雅方法。
评论
实际上,这是最好的解决方案。这很令人困惑,因为我们大多数人都进入“密钥”选项卡。相反,我们必须转到“个人资料”标签->个人资料(例如默认)->键。
– Paschalis
15年11月3日,17:26
这绝对是最安全,最简单的解决方案。
–撤离
16年1月4日在19:14
#6 楼
这篇文章以⌥←Delete删除一个单词的方式教了这和其他快捷方式:http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-快捷方式/
评论
这实际上并不能回答有关使用
–DavidPostill♦
16年2月2日在15:38
您所要做的就是使用适合您需求的快捷方式。 “
– Seralto
16年6月2日,16:05
因此,请从参考链接中引用答案的关键部分,因为如果链接页面发生更改,答案可能会失效。
–DavidPostill♦
16年6月2日在16:12
#7 楼
您需要进入Profiles
选项卡并删除alt + left和alt + right的映射,因为默认情况下它将输出一些十六进制值。评论
这为我做到了!
–菲利普
16年5月26日在17:52
评论
顺便说一句,实现此目的的更简化的方法可能只是映射command + left和command + right,而不是ctrl + left和ctrl + right。我不需要在系统范围内禁用任何功能即可完成此操作。