Bash:如何一次将光标向左移动?


14

在OSX中,我可以按住option键并按左光标键,直到找到需要编辑的单词为止(或者在Vi中,我可以直接点击b,但是我无法在终端中确定如何执行此操作然而...


您可以在此页面上看到readline绑定的完整列表,包括有关如何自定义绑定的说明。
jasonwryan

Answers:


26

设置按键绑定:首先,您必须找出Ctrl+ Left按键序列创建的按键代码。只需使用该命令cat关闭对现有键绑定的任何干扰,然后键入键序列。在我的系统(Linux)中,如下所示:

$ cat
^[[1;5D

Ctrl+ d退出cat。现在您发现Ctrl-Left发出6个键代码:

  • 转义(^ [)
  • [
  • 1个
  • ;
  • 5
  • d

现在,您可以发出bind命令:

bind '"\e[1;5D": backward-word'

6
您可以在$ HOME / .inputrc中添加“ \\ [1; 5D”:向后单词”,以永久生效。
llhuii 2012年

@llhuii +1,我忘了提!
丹尼尔·库尔曼

2
+1是最灵活的方法,可以在任何地方绑定任意组合键!
Irfy 2013年

14

您想要的bash函数是backward-word。您可以运行bind -q backward-word以获取绑定到该功能的键的列表。一种常见的绑定方式是Esc+b

此外,许多终端支持Ctrl+ Left(您可以在X中使用的同一热键可以逐字向后跳转)


1
好的,它返回了,backward-word can be invoked via "\eb".但是如何绑定control + Left而不是Esc + b?而且,我已经看到的Esc + b的一个缺点是,每当我能返回一个单词时,我都必须放弃Esc键,这不是更好的方法吗?
日本

1
有没有更好的办法?自然:set editing-mode vi:)
jasonwryan

3
@nipponese“ esc b”也可以在键盘上用作ALT-b。根据您的配置,这可能需要特别是向左或向右切换,因此请同时尝试。
Random832

8

Bash中默认的快捷键backword-wordAlt+ b。用Esc+ 可以达到相同的结果b。您应该在编辑键绑定之前尝试一下。

使用bind命令来编辑或bind -q [name]获取特定操作的当前键绑定。


2
...向前-– Alt + f
Putnik
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.