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

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


当前回答

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

其他回答

如前所述,您可以在~/中添加set -o vi。bashrc使用vi/vim键绑定,或者你可以在.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'

要启动这几行代码的效果,请选择源~/。Bashrc或启动新的终端会话。

以下是你可以做到的方法

默认情况下,终端有这些快捷键来逐字移动(左右):

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

您可以配置alt+←和→来生成这些序列:

打开终端首选项(cmd+,); 在“设置”选项卡上,选择“键盘”,如果有,双击“键盘”“←”;如果没有,则添加“键盘”。 根据需要设置修饰符,并在框中键入快捷键:esc+B,生成文本\033b(不能手动键入此文本)。 重复word-right (esc+F变成\033f)

或者,你可以参考这篇文章在textmate:

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

在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)

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

set -o vi

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

实际上有一个更好的方法。按住“选项”(在某些键盘上为“alt”)并按左或右方向键按字移动。就这么简单。

选择← 选项→

此外,ctrl将带你到行结束和ctrla将带你到开始。