协慌网

登录 贡献 社区

如何在 OS X 终端中逐字移动光标

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

但是,有什么方法可以像 Cocoa 应用程序中的Alt + / 那样逐字跳跃吗?

答案

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

在 Mac OS X 上 - 默认情况下,以下键盘快捷键有效。请注意,您必须在终端首选项(在键盘选项卡下)中使Option键的行为像Meta

  • ALT(⌥)+ F跳转˚Forward由字
  • alt(⌥) + B使B向后跳一个单词

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

  • alt(⌥) + D删除从当前光标位置开始的单词
  • Ctrl + A跳转到行首
  • Ctrl + E跳到行尾
  • Ctrl + K 终止从光标位置开始的行
  • Ctrl + Y从终止缓冲区粘贴文本
  • ctrl + R可从历史记录中反向搜索您过去键入的命令
  • Ctrl + S进行正向搜索(对我来说,在 zsh 中有效,但对 bash 无效)
  • Ctrl + F向前移动一个字符
  • Ctrl + B向后移动一个字符
  • Ctrl + W可以从光标位置向后删除单词

这是你怎么做

默认情况下,终端具有以下快捷方式来逐字移动(左右):

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

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

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

或者,您可以在 textmate 上参考此博客文章:

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