在 bash 中逐字移动

12 bash navigation

在bash中,你可以移动到与行的开头CTRL+ A,并与终端CTRL+ E。我如何通过单词向前和向后移动?

小智 16

使用 emacs 绑定:

Meta-B向后移动一个词和Meta-F向前移动一个词。

Ctrl-B向后移动一个角色并且Ctrl-F向前移动一个角色。

所以BvsF是向后 vs 向前,MetavsCtrl是单词 vs 字符。

的精确映射Meta可能因键盘而异。Alt在按下另一个键的同时尝试按住;如果这不起作用,请按下并松开Esc,然后按下另一个键。


小智 8

使用 alt+b 向后移动一个单词,使用 alt+f 向前移动一个单词。


gav*_*koa 5

普京~/.inputrc

# Ctrl+向左/向右按整个单词移动。
"\e[1;5C": 前向字
"\e[1;5D": 向后词
# 与按下 Shift 相同。
"\e[1;6C": 前向字
"\e[1;6D": 向后词

showkey -a在终端中会告诉你按键时终端发出哪些 ANSI 代码,因为Ctrl+Right我得到:

bash# showkey -a

Press any keys - Ctrl-D will terminate this program

^[[1;5C          27 0033 0x1b
         91 0133 0x5b
         49 0061 0x31
         59 0073 0x3b
         53 0065 0x35
         67 0103 0x43
Run Code Online (Sandbox Code Playgroud)

^[ESC位于.\e~/.inputrc您可以使用内置的 Bash 即时尝试bind

bind '"\e[1;5C": forward-word'
Run Code Online (Sandbox Code Playgroud)

或转储当前绑定:

bind -p
Run Code Online (Sandbox Code Playgroud)