Is there any way in the OS X Terminal to move the cursor word by word?
我知道ctrl+a组合跳到当前命令的开头,ctrl+e组合跳到结尾。
但是,是否有任何方法可以逐字跳转,比如可可应用程序中的alt+←/→?
您可以使用非常奇怪的esc+f移动到下一个单词的开头,并使用esc+b移动到当前单词的开头。
在Mac OS X上-以下键盘快捷键默认工作。请注意,您必须使选项键在终端首选项中(在"键盘"选项卡下)像元键一样工作。
- ALT(?)+f按单词向前跳
- ALT(?)+b向后跳一个字
我注意到,用于简单文本导航的默认Emacs键绑定似乎可以在bash shell上工作。你可以使用
- ALT(?)+d删除从当前光标位置开始的单词
- ctrl+a跳到行首
- ctrl+e跳到行尾
- ctrl+kbakbd,从光标位置开始终止行。
- ctrl+y从kill缓冲区粘贴文本
- CtrL+R,用于从历史记录中反向搜索过去键入的命令
- ctrl+s用于正向搜索(在zsh中为我工作,但不在bash中工作)
- ctrl+f向前移动一个字符
- ctrl+b向后移动一个字符
- ctrl+w从光标位置向后删除单词
你可以这样做
默认情况下,终端具有逐字(左和右)移动的快捷方式:
- esc+XYKDB(左)
- esc+f(右)
您可以配置alt+←和→为您生成这些序列:
- 打开终端首选项(cmd+,);
- 在"设置"选项卡上,选择"键盘",如果有则双击
? ← ,如果没有则添加。 - 根据需要设置修改器,并在框中键入快捷键:esc+b,生成文本
\033b (不能手动键入此文本)。 - 对单词right重复(esc+f变为
\033f )
或者,您也可以在textmate上引用此博客文章:
http://blog.macromates.com/2006/word-movement-in-terminal/
切换到ITerm2。它是免费的,而且比普通的老式航站楼要好得多。此外,它还有很多自定义选项,比如键盘快捷键。
另外,我喜欢您可以使用CMD和1-9在选项卡之间切换。尝试一下,您将永远不会回到常规终端:)
如何在iterm2中设置自定义键盘首选项
- 安装TyrM2
- 启动,然后转到首选项窗格。
- 选择键盘配置文件选项卡
- 您可能需要将配置文件复制到新的文件中,然后删除箭头键快捷方式,如^+right/left,或者如果不关心备份,只需从默认配置文件中删除它们。
- 下一步确保已选择修改的配置文件(带星号)
- 现在选择键盘选项卡(最上面一行)
- 单击加号按钮添加新的键盘快捷方式
- 在第一个框中键入cmd+left arrow
- 在第二个框中选择"发送转义码"
- 在第三个框中键入字母b
- 用所需的组合键重复。escapebkbd+b向左移动一个单词,escapebkbd+f向右移动一个单词。
- 您也可以设置cmd+d,用escapebkbd+d删除光标前面的单词。
我经常用箭头键点击错误的按钮(cmd/control/alt),所以我的箭头键组合与这些按钮都设置为向前和向后跳单词,但请做最适合你的事情。
实际上,有一种更好的方法。按住option(某些键盘上的alt),然后按向左或向右箭头键按Word移动。很简单。
option←(option←)option→
此外,CtrLBakBd将带您到达行尾,CtrLA将带您到达行首。
我有alt+←/→工作:打开首选项?设置?键盘,将选项光标左键的项设置为将字符串发送到shell: 33b,并将选项光标右键设置为将字符串发送到shell: 33f。您也可以将此项用于其他控制键组合。
实际上,这取决于您使用的shell,但是大多数shell都有类似的绑定。您所指的绑定(例如ctrl+a和ctrl+e)是您在许多其他程序中可以找到的绑定,它们可以使用很长时间,btw也可以在大多数UI应用程序中使用。
下面是bash的默认绑定:
最重要的bash键盘快捷键
请注意,您可以自定义它们。您需要创建一个文件,名称如您所愿,我将其命名为mine.bash_key_bindings并将其放入我的主目录。在这里,您可以设置一些常规的bash选项,还可以设置键绑定。为了确保应用了它们,您需要修改一个名为".bashrc"的文件,bash在启动时读取该文件(如果不存在,则必须创建该文件),然后在该文件中进行以下调用:
1 | bind -f ~/.bash_key_bindings |
~表示bash中的主目录,如上所述,您可以根据自己的喜好命名文件,也可以将其放在自己喜欢的位置,只要您提供正确的路径+要绑定的名称。
让我向您展示一些.bash_key_bindings文件的摘录:
1 2 3 4 5 6 7 | set meta-flag on set input-meta on set output-meta on set convert-meta off set show-all-if-ambiguous on set bell-style none set print-completions-horizontally off |
这些只是设置了几个选项(例如,禁用铃声;可以在bash网页上查找所有选项)。
1 2 3 4 5 6 7 8 9 10 | "A": self-insert "B": self-insert "C": self-insert "D": self-insert "E": self-insert "F": self-insert "G": self-insert "H": self-insert "I": self-insert "J": self-insert |
这些操作确保仅字符一个不做任何事情,但要确保字符是"键入的"(它们将自己插入外壳)。
1 2 3 4 5 | "\C-dW": kill-word "\C-dL": kill-line "\C-dw": backward-kill-word "\C-dl": backward-kill-line "\C-da": kill-line |
这很有趣。如果我只点击ctrl+d(我选择了d作为删除),什么都不会发生。但是如果我输入小写的w,光标左侧的单词就会被删除。但是,如果我键入一个大写,光标右侧的单词将被删除。对于从光标开始的整行,L和L也是如此。如果我输入一个"A",整个行实际上被删除(光标前后的所有内容)。
我在ctrl+f上向前跳一个字,在ctrl+b上向后跳一个字。
1 2 | "\C-f": forward-word "\C-b": backward-word |
正如您所看到的,您可以创建一个快捷方式,它会立即导致一个操作,或者您可以创建一个快捷方式,它只初始化一个字符序列,然后您必须键入一个(或多个)字符,以使操作发生,如上面的示例所示。
因此,如果您对默认绑定不满意,可以随意自定义它们。这里有一个到bash手册的链接以获取更多信息。
如果您碰巧是一个VIM用户,您可以尝试使用bash的VIM模式。运行此文件或将其放入您的
1 | set -o vi |
默认情况下,您处于插入模式;点击Escape,您可以像在正常模式VIM中一样四处移动,所以按单词移动是
如果在"首选项"的"键盘"选项卡中选中
我建议从bash到z-shell阅读。如果你想提高你的bash/zsh能力!
从Mac OS X Lion 10.7开始,终端默认将option LEFT/右箭头映射到esc B/F,因此现在这是内置于bash和其他使用这些Emacs兼容键绑定的程序中。
在bash中,这些绑定到esc b和esc f。bash有许多,更多的快捷键;查看
按住选项键并单击要移动光标的位置
在
当我试图为(ctrl+←)录制一个时,我注意到在键盘快捷键字段中箭头从未出现。结果发现我必须先禁用默认的Mac系统首选项>键盘>快捷键>任务控制快捷键以使事情正常工作,因为它们将覆盖ITerm2的默认快捷键。对于标准的终端应用程序也是如此。