有什么办法在OS Xterminal来逐词移动光标?

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

但是有什么办法可以一字一字地跳,就像在Cocoa应用程序中的Alt + / 呢?

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

在Mac OS X上 – 以下键盘快捷键默认工作。 请注意,您必须在“terminal”偏好设置(在“键盘”选项卡下)中将“

  • alt⌥+ F一个字跳跃向前
  • alt⌥+ B一个字跳了起来

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

  • alt + D删除从当前光标位置开始的一个字
  • ctrl + A跳转到行首
  • ctrl + E跳转到行尾
  • ctrl + K从光标位置开始杀掉行
  • ctrl + Y从kill buffer中粘贴文本
  • 按Ctrl + R来反转search您从历史logging中input的过去的命令
  • CTRL + S转发search(在zsh工作,但不bash)
  • 按Ctrl + F向前移动一个字符
  • 按Ctrl + B向后移动一个字符
  • 按Ctrl + W从光标位置向后删除单词

这是你如何做到的

默认情况下,terminal有这些快捷方式可以逐字(左和右)移动:

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

您可以configurationalt + 为您生成这些序列:

  • 打开terminal首选项( cmd + );
  • 在设置选项卡上,select键盘并双击⌥ ←如果它在那里,或者如果不是,则添加它。
  • 根据需要设置修改器,然后在框中input快捷键: esc + B ,生成文本\033b (不能手动input此文本)。
  • 重复单词右键( esc + F变成\033f

另外,你可以参考这个博客张贴textmate:

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

切换到iTerm2 。 这是免费的,比普通旧terminal更好。 另外它还有更多的自定义选项,比如键盘快捷键。

另外我喜欢你可以使用cmd和1-9切换标签。 尝试一下,你永远不会回到常规terminal:)

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

  • 安装iTerm2
  • 启动,然后转到偏好窗格。
  • select键盘configuration文件选项卡
  • 您需要将configuration文件复制到新的configuration文件中,然后删除箭头键快捷键( ^ right / left arrow或者如果您不关心备份,只需从默认configuration文件中删除即可。
  • 接下来确保您的修改后的configuration文件被选中(加星标)

图片1.png

  • 现在select键盘选项卡(非常顶行)

iTerm 2

  • 点击加号button添加一个新的键盘快捷键
  • 在第一个框中键入CMD + left arrow
  • 在第二个框中select“发送转义码”
  • 在第三个框中键入字母B.

图片2.png

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

我经常用箭头键敲错button(cmd / control / alt),所以我有我的箭头组合键与所有设置为跳转前进和后退单词的button,但请做适合你最好的。

其实有一个更好的方法。 按住选项,左右方向键按字移动。 就那么简单。

选项
选项

另外ctrl e会带你到行的末尾, ctrl a会带你到开始。

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

实际上它取决于你使用的是什么shell,但是大多数shell有类似的绑定。 你所指的绑定(例如Ctrl + ACtrl + E )是你在许多其他程序中可以find的绑定,它们被用于很多年龄段,BTW也适用于大多数UI应用程序。

下面是Bash的默认绑定:

最重要的Bash键盘快捷键

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

 bind -f ~/.bash_key_bindings 

〜表示bash中的主目录,如上所述,您可以根据需要命名该文件,也可以将其放在您喜欢的位置,只要您input正确的path+名称进行绑定即可。

让我给你看一些我的.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 (我select了d删除),没有任何反应。 但是如果我input一个小写字母w,光标左边的单词就会被删除。 如果我input一个大写字母,但是,光标右边的单词被杀死。 关于从光标开始的整行,l和L也是一样的。 如果我input“a”,整行就会被删除(光标前后的所有内容)。

我在Ctrl + F上向前跳一个单词,在Ctrl + B上向后跳一个单词

 "\Cf": forward-word "\Cb": backward-word 

正如你所看到的,你可以创build一个快捷方式,立即引发一个动作,或者你可以创build一个只属于一个字符序列的快捷方式,然后你必须input一个(或多个)字符来引起一个动作如上面的示例中所示。

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

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

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

如果你碰巧是一个Vim用户,你可以尝试bash的vim模式。 运行这个或者把它放在你的~/.bashrc文件中:

 set -o vi 

默认情况下你处于插入模式; 命中逃生,你可以像在正常模式Vim中一样移动 ,所以按字移动是wb ,而通常的移动键也可以工作 。

从Mac OS X Lion 10.7开始,terminal默认将选项左/右箭头映射到Escb / f ,所以现在内置了bash和其他使用这些emacs兼容的按键绑定的程序。

在Bash中,这些绑定到EscBEscF 。 Bash有许多更多的键盘快捷方式; 看看bind -p的输出来看看它们是什么。