it-swarm.cn

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

我知道这个组合 Ctrl+A 跳转到当前命令的开头,并且 Ctrl+E 跳到最后。

但有没有办法像Word一样逐字跳转 Alt+/ 在Cocoa应用程序中呢?

720
Arne

开箱即用你可以使用非常奇怪的 Esc+F 移动到下一个Word的开头 Esc+B 移动到当前Word的开头。

522
Kristian J.

在Mac OS X上 - 以下键盘快捷键默认工作。请注意,您必须在终端首选项(键盘选项卡下)中制作Option key act like Meta

  • alt (⌥)+F 通过Word跳跃F orward
  • alt (⌥)+B 通过Word跳跃B ackward

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

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

这是你怎么做的

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

  • esc+B (剩下)
  • esc+F (对)

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

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

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

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

273
Fil

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

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

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

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

Picture 1.png

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

iTerm 2

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

Picture 2.png

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

我经常按错了按钮(cmd / control / alt)用箭头键,所以我有我的箭头键组合,这些按钮都设置为前进和后退单词,但请做最适合你的。

157
cwd

实际上有一个更好的方法。保持 option ( alt 在某些键盘上)并按向左或向右箭头键按Word移动。就那么简单。

option
option

也 ctrle 将带你走到终点 ctrla 将带你到头。

142
mdubez

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

78
Peter Hilton

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

这是Bash的默认绑定:

最重要的Bash键盘快捷键

另请注意,您可以自定义它们。您需要根据需要创建一个文件名,我将我的名字命名为.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

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

"\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,则删除光标左侧的Word。但是,如果我键入大写字母,则光标右侧的Word将被终止。对于从光标开始的整行,l和L也是如此。如果我输入“a”,则实际删除整行(光标前后的所有内容)。

我向前推了一个词 Ctrl+F 并向后一个字 Ctrl+B

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

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

因此,如果您对默认绑定不满意,可以随意自定义它们。这是一个 链接到bash手册 以获取更多信息。

38
Mecki

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

set -o vi

默认情况下,您处于插入模式;命中逃生,你可以像普通模式Vim一样四处移动,所以Word的移动是wb,而 通常的移动键也可以

14
jches

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

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

14
Matt

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

12
Chris Page

在Bash中,这些都是必然的 Esc - B 和 Esc - F。 Bash有很多很多键盘快捷键;看看bind -p的输出,看看它们是什么。

8
Andy Lynch

iterm2首选项>配置文件>键下,单击下面的+键映射并记录一个新的快捷方式。对于Action,选择Send Escape Sequence并分别为向后和向前键入bf

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

Keyboard system preferences

3
qix

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

2
Dan Alboteanu

使用 自然文本编辑 预设!

enter image description here

基本上,除了其他关键序列之外,它还将Option + LeftArrow绑定到^[b序列,将Option + RightArrow绑定到^[f

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

0
Dziamid