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

但是有没有办法像Cocoa应用程序中的Alt+←/→那样逐字跳转呢?


当前回答

这是CLI的方式,验证它在bash上工作。

在~/.inputrc中添加以下代码:

# macOS Option + Left/Right arrow keys to move the cursor wordwise
"\e\e[C": forward-word
"\e\e[D": backward-word

这种方法的优点是它与终端应用程序无关——不管你是否使用终端。app、iTerm2或任何其他应用程序。

灵感来自于另一个答案。

其他回答

如果您在首选项的键盘选项卡中勾选“使用选项作为元键”,则默认的emacs样式命令分别为向前和向后的字和“F (Alt+F)”和“B (Alt+B)”。

我推荐阅读《From Bash to Z-Shell》。如果你想增加你的bash/zsh能力!

使用自然文本编辑预设!

本质上,它在其他键序列中绑定Option + LeftArrow到^[b序列,Option + RightArrow到^[f序列

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

在macOS(所有版本)上,以下键盘快捷键默认工作。

ALT+F跳跃向前一个字。 ALT+B向后跳一个字。

注意,你必须使设置选项键的行为像元键。您可以在终端中通过访问首选项(CMD+,)并选择配置文件->键盘来做到这一点。在“iTerm2 Pselect profile -> Keys -> General”中选择“Option key as Esc+”。

此外,一些用于简单文本导航的emacs风格的键绑定似乎可以在bash shell上工作。你可以使用:

CTRL+F向前移动一个字符 CTRL+B向后移动一个字符 按CTRL+A跳转到行首 按CTRL+E跳转到行尾 按CTRL+K终止从光标位置开始的行 ALT+D删除从当前光标位置开始的单词 按CTRL+W从光标位置向后删除单词 CTRL+Y从终止缓冲区粘贴文本 CTRL+R从历史记录中反向搜索过去键入的命令。 CTRL+S转发搜索(在ZSH为我工作,但不是bash)

从Mac OS X Lion 10.7开始,终端默认将option -左/右箭头映射为Esc-b/f,所以现在bash和其他使用这些emacs兼容键绑定的程序都内置了这个功能。

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

set -o vi

默认情况下,您处于插入模式;点击escape,你就可以像在普通模式的Vim中一样四处移动,所以按字移动是w或b,通常的移动键也可以工作。