如何在 OS X 终端中跳过单词?

如何在 OS X 终端中跳过单词?

假设我在 Mac OSX 终端中写了一条长命令,即

say "Hello, how are you? I am good thank you. How is it going with you? Fine, thanks"

现在我想把这个词Hello改为Hi

要做到这一点,现在我必须一直按下(或按住)键盘左键,直到“光标”到达单词末尾Hello,然后将其删除。通常的“按住 option”技术在大多数其他 OS X 应用程序中不起作用。

有没有办法可以一次跳过一个单词(或者任何其他更短的方法将光标移到那里)?

答案1

命令行编辑是你的 shell 的功能,而不是终端. 你的 shell 可能狂欢并且可能其命令行编辑样式设置为“emacs”。

以下是一些您可能会觉得方便的 Emacs 风格的组合键:

  • 钙:beginning-of-line
  • 铈:end-of-line
  • 女士:forward-word
  • 兆字节:backward-word
  • 光盘:delete-char
  • Md:(kill-word删除下一个‘单词’)
  • M-DEL:backward-kill-word

C-X表示Control+ x,所以 Ca 是Control+ a

M-X表示Meta+ x,但你的键盘上可能没有 Meta 键。因此,你可以使用 ESCX(即Escape然后x)。终端有一个设置,可以在按住不放的情况下按下按键之前自动发送 ESC Option。使用此功能会禁用 Mac OS X 在使用 Option 修饰符时通常提供的扩展字符处理。因此,如果您使用少量扩展字符并希望Option+x发送 ESCX,然后你可以启用这个终端选项。

在您的示例中,有很多方法可以移动到“Hello”:

  • 搜索“Hello”:Cr Hello Cj(或ESC)
    • 在普通的 Emacs 中,你只需使用 RET ( Return) 即可在当前位置结束搜索并返回编辑。但在狂欢,默认绑定导致 RET(即 Cm)始终执行当前行,即使增量搜索处于活动状态。因此 Cj/ESC 部分与普通 Emacs 有所不同。
  • 跳转到行首并向前移动:Ca Mf Cf (或
  • 跳至行首,然后按字移动:Ca Mf Mf Mb
  • 大量使用 Mb(仅当您将 Option 映射到 Meta 时才真正可行)。

还有几种方法可以实现您想要的替换:

  • 删除该单词并替换为:Md H i
  • 删除字符并替换它们:Cd Cd Cd Cd Cd H i
  • 移过“H”并删除以下内容,将其替换为:Cf Md i
  • 移过“H”并删除剩余的字符,替换它们:Cf Cd Cd Cd Cd i

如果您在单词末尾停止(可能通过 Ca Mf Mf),则可以使用 M-DEL H i。

您可能会bind -P | less发现其他有趣的绑定。请参阅阅读行部分狂欢手册页(或者readline 部分狂欢信息页面) 了解详情。

答案2

默认的 readline 绑定forward-word是 Meta-F (bash(1)手册页,阅读线部分,移动命令子部分)。不过我不确定 Meta 在 OS X 中翻译成什么。也许是选项。

相关内容