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

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


当前回答

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

选择← 选项→

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

其他回答

如前所述,您可以在~/中添加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或启动新的终端会话。

在Bash中,这些绑定到Esc-B和Esc-F。 Bash有很多很多快捷键;看一看bind -p的输出,看看它们是什么。

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

set -o vi

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

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

选择← 选项→

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

只要检查“使用选项作为元键”选项在终端>首选项>设置>[配置文件]>键盘,在这里已经提到了@ crisr -page。

但是请注意,在macOS Catalina(10.15)和更新版本中,zsh成为新添加用户的默认shell:它的默认配置仅将空白视为单词边界,而旧的bash将元左/右跳转到最近的非字母数字字符(类似于B/W,而不是vim中的B/W):

                  v----v- bash jumps here
$ vim some-folder/what.txt_<- jump left twice from here
  ^---^- zsh jumps here by default

(类似的动作也适用于元退格)

有不止一种方法使zsh命令行编辑器导航工作类似于bash -这里是一个这样的方法:

# Place in your profile init script, e.g. `~/.zshrc`
autoload -U select-word-style
select-word-style bash