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

时间:2008-09-17 08:57:17

标签: macos terminal keyboard-shortcuts

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

但有没有办法逐字跳转,比如Cocoa应用程序中的 Alt + /

17 个答案:

答案 0 :(得分:519)

开箱即用,您可以使用非常奇怪的 Esc + F 移动到下一个单词的开头, Esc + < kbd> B 移动到当前单词的开头。

答案 1 :(得分:384)

在Mac OS X上 - 以下键盘快捷键默认工作。请注意,您必须在终端首选项(键盘标签下)中将选项键设置为 Meta

  • alt(⌥) + F 用词来跳 F 前进
  • alt(⌥) + B 用词来跳 B ackward

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

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

答案 2 :(得分:272)

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/

答案 3 :(得分:157)

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

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

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

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

Picture 1.png

  • 现在选择键盘标签(最上面一行)

iTerm 2

  • 点击加号按钮添加新的键盘快捷键
  • 在第一个框中输入 CMD + 左箭头
  • 在第二个框中选择&#34;发送转义码&#34;
  • 在第三个框中键入字母 B

Picture 2.png

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

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

答案 4 :(得分:142)

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

选项
选项

ctrl e 会带你到行尾, ctrl a 会带你去一开始。

答案 5 :(得分:78)

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

答案 6 :(得分: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 <上向后跳了一个单词/ p>

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

正如你所看到的,你可以创建一个快捷方式,直接导致一个动作,或者你可以创建一个,只是在一个字符序列中,然后你必须输入一个(或多个)字符来引起一个动作发生在上面的例子中所示。

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

答案 7 :(得分:14)

如果您在首选项的键盘选项卡中选中Use option as meta key,那么前向和后向字的默认emacs样式命令和⌥F Alt + F )和⌥B Alt + B )。

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

答案 8 :(得分:14)

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

set -o vi

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

答案 9 :(得分:12)

从Mac OS X Lion 10.7开始,终端映射选项 - 左/右箭头 Esc - b / f < / kbd>默认情况下,现在这个内置于bash和其他使用这些emacs兼容键绑定的程序。

答案 10 :(得分:8)

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

答案 11 :(得分:3)

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

答案 12 :(得分:2)

iterm2“首选项”>“个人资料”>“键” 下,单击“键映射” 下面的+,并记录一个新的快捷方式。对于动作,选择Send Escape Sequence,然后分别向后和向前输入bf

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

Keyboard system preferences

答案 13 :(得分:0)

使用自然文本编辑预设!

enter image description here

从本质上讲,它与其他键序列绑定,例如Option + LeftArrow绑定到^[b序列和Option + RightArrow绑定到^[f

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

答案 14 :(得分:0)

如前所述,您可以在set -o vi中添加~/.bashrc以使用vi / vim键绑定,也可以在{{1}中添加以下部分},以.bashrc和方向键移动:

Ctrl

要开始执行这些代码行,请# bindings to move 1 word left/right with ctrl+left/right in terminal, just some apple stuff! bind '"\e[5C": forward-word' bind '"\e[5D": backward-word' # bindings to move 1 word left/right with ctrl+left/right in iTerm2, just some apple stuff! bind '"\e[1;5C": forward-word' bind '"\e[1;5D": backward-word' 或开始新的终端会话。

P.S。如果要添加到source ~/.bashrc~/.bash_profile,请不要忘记用已修改的文件替换~/.profile的所有实例。

答案 15 :(得分:0)

iTerm2 Build 3.3.4用户的新答案:

步骤1:(macOS X)“系统偏好设置”>“键盘”>“快捷方式”选项卡>选择“任务控制”(左侧面板)>取消选中标记为“向左移动空间”和“向右移动空间”的快捷方式

第2步:(iTerm2 Build 3.3.4)首选项>配置文件>选择*默认(左面板)>按键选项卡>删除“⌥->”和“⌥<-”条目>设置“左选项(⌥ )键:”和“右键(⌥)键:”移至Esc +

不会弄乱外壳配置文件,不会弄乱劣质masOS(默认)终端,不会尴尬的Esc + F / B,冲洗并重复无意义。

完成交易!!!

喜欢这个技巧,我的程序员!

答案 16 :(得分:0)

由于某种原因,我的终端的Option +箭头不起作用。为了在macOS 10.15.6上解决此问题,我打开了终端应用程序的首选项,并必须设置绑定。

Option-left = \033b
Option-right = \033e

Keyboard settings in Mac terminal app

由于某种原因,我的option-right被设置为\033f。现在,它已经解决了,我可以自由地再次跳过termianl中的单词。