OS X终端中是否有任何方法可以逐字移动光标?

问题描述 投票:718回答:14

我知道组合Ctrl + A跳转到当前命令的开头,而Ctrl + E跳转到结尾。

但有没有办法逐字逐句跳转,比如Alt +←/→在Cocoa应用程序中呢?

macos terminal keyboard-shortcuts
14个回答
526
投票

开箱即用你可以使用相当离奇的Esc + F移动到下一个单词的开头,Esc + B移动到当前单词的开头。


12
投票

从Mac OS X Lion 10.7开始,终端默认将Option-Left / Right Arrow映射到Esc-b / f,因此现在内置于bash和其他使用这些emacs兼容键绑定的程序。


8
投票

在Bash中,它们与Esc-B和Esc-F绑定。 Bash有很多很多键盘快捷键;看看bind -p的输出,看看它们是什么。


4
投票

iterm2的Preferences> Profile> Keys下,单击Key Mappings下面的+并记录一个新的快捷方式。对于Action,选择Send Escape Sequence并分别为向后和向前键入bf

当我尝试为(Ctrl +←)录制一个时,我在键盘快捷键字段中注意到箭头从未出现过。事实证明我必须首先禁用默认mac的系统偏好设置>键盘>快捷方式>任务控制shorcuts以使事情正常工作,因为它们将覆盖iterm2的默认快捷方式。对于标准终端应用程序也应如此。

Keyboard system preferences


3
投票

按住Option键并单击要移动光标的位置


2
投票

使用自然文本编辑预设!

enter image description here

基本上,它与其他关键序列一样,将Option + LeftArrow绑定到^[b序列,将Option + RightArrow绑定到^[f

这适用于fish和bash,以及psql终端。


389
投票

在Mac OS X上 - 以下键盘快捷键默认工作。请注意,您必须使Option键像终端首选项中的Meta一样(在键盘选项卡下)

  • alt(⌥)+ F用一个单词向前跳
  • alt(⌥)+ B用一个单词向后跳

我观察到简单文本导航的默认emacs键绑定似乎适用于bash shell。您可以使用

  • alt(⌥)+ D删除从当前光标位置开始的单词
  • ctrl + A跳转到该行的开头
  • ctrl + E跳转到行尾
  • ctrl + K从光标位置开始杀死该行
  • ctrl + Y从kill buffer中粘贴文本
  • ctrl + R反向搜索您从历史记录中输入的命令
  • ctrl + S转发搜索(在zsh中为我工作但不是bash)
  • ctrl + F通过char向前移动
  • ctrl + B通过char向后移动
  • ctrl + W从光标位置向后移除单词

273
投票

Here's how you can do it

默认情况下,终端具有这些用于逐字移动(左和右)的快捷方式:

  • esc + B(左)
  • esc + F(右)

您可以配置alt +←和→为您生成这些序列:

  • 打开终端首选项(cmd +,);
  • 在“设置”选项卡上,选择“键盘”,然后双击⌥ ←(如果有),或者如果不存在则添加它。
  • 根据需要设置修改器,并在框中键入快捷键:esc + B,生成文本\033b(您不能手动键入此文本)。
  • 为右边重复(esc + F变为\033f

或者,你可以在textmate上参考这篇博文:

http://blog.macromates.com/2006/word-movement-in-terminal/


158
投票

切换到iTerm2。它比普通的旧终端更自由,更好。此外,它有更多的自定义选项,如键盘快捷键。

另外我喜欢你可以使用cmd和1-9在标签之间切换。尝试它,你永远不会回到常规终端:)

如何在iterm2中设置自定义键盘首选项

  • 安装iTerm2
  • 启动,然后转到首选项窗格。
  • 选择键盘配置文件选项卡
  • 您需要将配置文件复制到新的配置文件,然后删除箭头键快捷键,例如^ +右/左,或者如果您不关心备份,只需从默认配置文件中删除它们。
  • 接下来确保选中您已修改的个人资料(已加星标)

Picture 1.png

  • 现在选择键盘选项卡(最上面一行)

iTerm 2

  • 单击加号按钮以添加新的键盘快捷键
  • 在第一个框中键入CMD +向左箭头
  • 在第二个框中选择“发送转义码”
  • 在第三个框中键入字母B.

Picture 2.png

  • 重复所需的组合键。 escape + B向左移动一个单词,escape + f向右移动一个单词。
  • 您可能还希望设置cmd + d以使用escape + d删除光标前面的单词

我经常用箭头键击中错误的按钮(cmd / control / alt),所以我的箭头按键组合,这些按钮全部设置为向前和向后跳跃的单词,但请做最适合你的。


142
投票

实际上有一个更好的方法。按住选项(某些键盘上的alt)并按向左或向右箭头键按字键移动。就那么简单。

option← option→

ctrle也会把你带到行尾,ctrla将带你到头。


78
投票

我有Alt +←/→工作:打开首选项»设置»键盘,设置选项光标左边的条目发送字符串到shell:\ 033b,并设置选项光标向右发送字符串到shell:\ 033f。您也可以将其用于其他Control键组合。


38
投票

实际上它取决于你使用的shell,但是大多数shell都有类似的绑定。您所指的绑定(例如Ctrl + A和Ctrl + E)是您在许多其他程序中找到的绑定,并且它们已经使用了很长时间,BTW也适用于大多数UI应用程序。

这是Bash的默认绑定:

Most Important Bash Keyboard Shortcuts

另请注意,您可以自定义它们。您需要根据需要创建一个文件名,我将我的名字命名为.bash_key_bindings并将其放入我的主目录。在那里你可以设置一些常规的bash选项,你也可以设置键绑定。为了确保它们被应用,你需要修改一个名为“.bashrc”的文件,bash在启动时读入(你必须创建它,如果它不存在)并在那里进行以下调用:

bind -f ~/.bash_key_bindings

〜表示bash中的主目录,如上所述,您可以根据需要命名文件,并将其放在您喜欢的位置,只要您提供正确的路径+名称即可绑定。

让我向您展示我的.bash_key_bindings文件的一些摘录:

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网页上查找)。

"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

这些确保单独的字符只是做什么,但确保字符是“键入”(他们自己插入shell)。

"\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上向后跳了一个单词

"\C-f": forward-word
"\C-b": backward-word

正如您所看到的,您可以创建一个快捷方式,立即执行操作,或者您可以创建一个快捷方式,只需执行一个字符序列,然后您必须键入一个(或多个)字符才能执行操作在上面的例子中示出。

因此,如果您对默认绑定不满意,可以随意自定义它们。这是一个link to the bash manual以获取更多信息。


14
投票

如果您恰好是Vim用户,可以尝试使用bash的vim模式。运行此文件或将其放在~/.bashrc文件中:

set -o vi

默认情况下,您处于插入模式;击中逃脱,你可以像普通模式Vim一样四处移动,所以按字移动的是wb,以及usual movement keys also work


14
投票

如果在首选项的键盘选项卡中检查Use option as meta key,则分别为前向和后向词以及⌥F(Alt + F)和⌥B(Alt + B)的默认emacs样式命令。

我建议阅读From Bash to Z-Shell。如果你想增加你的bash / zsh实力!

© www.soinside.com 2019 - 2024. All rights reserved.