OS X相当于Ctrl + Left / Ctrl + Right的终端


19

在Windows和Linux中,我总是可以按ctrl+ ctrl+ 在终端中向左或向右跳过单词。在文本编辑器中,似乎+ / 有效,但终端中没有骰子。我已经搜索过Google,但没有一个维基百科页面,该页面声称+ B/可以F完成这项工作,但所做的只是在终端上打印∫和ƒ字符(如果按住,则显示ı和Ï )。有任何想法吗?

Answers:



12

这也让我发疯,但是我不想使用终端专用的修复程序,因为我不使用终端,并且能够通过SSH进入OSX盒也必须使用正确的键绑定。

另外,就我个人而言,我并不关心前面讨论的密钥;我想保持我在Linux上习惯的ctrl+ / 组合。

为了解决这个问题,我在我的内容中添加了以下内容~/.profile

bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'

注意前两个适用于Terminal中的 bash ; 最后两个适用于iTerm2中的 bash 和传入的ssh连接。不要问我为什么键盘仿真是不同的;)

作为记录,由于此stackoverflow答案的提示,我能够找到实际的键码:您可以运行cat > /dev/null以监视在组合键期间发送的确切键码。

(请注意,对我来说,当我运行cat > /dev/null并按ctrl+时,会产生^[[1;5D您的确切密码可能有所不同,但第一个^[表示为\e,如我的示例代码所示。)

顺便说一句,如果您想查看所有活动的bash绑定,请运行bind -p


我喜欢用来xxd检查键盘输入。您可以在键入时看到显示的字符,然后xxd在键入return时以十六进制形式发出值。
克里斯·佩奇

完善!正是我在寻找的东西:)从来没有做过上面的“特定于应用程序”设置的运气,但这确实可行!
bisko,

确保您的sysprefs>键盘>快捷方式>exposé中没有将control + left / right映射到“开关空间”。我没有其他空格可打开,所以看起来我的键盘输入无法正常工作。
sudo

6

因为Mac OS X Lion的10.7,终端地图- / esc+ B/ F默认情况下,所以这是现在内置了对使用这些emacs的兼容键绑定bash和其他程序。


5

如果您知道如何使用vi,也可以set -o vi在您.bash_profile的命令行中或随时使用来打开vi行编辑模式。然后可以在vi命令和插入模式之间切换。因此,您可以按Escape键,然后使用vi命令浏览该行:

0 = move to beginning of line
$ = move to end of line
w = move forward one word
b = move backward one word

一旦到达正确的位置,就可以使用其他vi命令进入插入或追加模式,或一一删除字符,等等。


我不知道您可以在行首使用0,我一直使用^
Jason Salaz

1
@vxjasonxv:是的,^移到第一个非空白char,0移到第一列(您可能已经注意到了,但我想我会把它扔给其他人:P)
Robert S Ciaccio

1
噢,太好了,我还没注意到呢!噢,伙计,^的功能(第一个非空白)总是让我生气。谢谢。
詹森·萨拉兹

当然,ESC ^当您确实需要它时,它很棒,当您完全想要做其他事情时,这只会很烦人:)
ocodo 2011年

3

打开终端,转到首选项,键盘。在列表上,您将找到“向右Ctrl光标”和“向左Ctrl光标”。
将他们分配的动作分别更改为“ \ 033f”和“ \ 033b”,您将能够使用ctrl+ ctrl+ 进行移动,而不会丢失alt键。


2

似乎默认将esc+ Besc+ F映射到单词的开头和结尾。虽然,对于我的系统,您不能按住,esc但必须为每个单词重新按下它。


1
Esc键是从未改性剂,它只是进入“逍遥游”模式,当你按下它,认为这是一个做事的模式的方式,不像转变/ CTRL /元等(在事情的Readline方案反正。)
ocodo

0

最新版本的OS将此映射到Spaces。即使关闭了空格,热键仍然可以在此隐藏位置中短路:

Terminal.app光标键:禁用系统偏好设置->快捷方式->任务控制->向左移动一个空格

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.