Bash CTRL在单词/字符串之间移动光标


84

CTRL习惯于在使用左右箭头键时使用键来加快移动速度(转到单词的末尾,而不是一次输入一个字符)。

我可以以某种方式进行bash吗?

我可能可以编写代码,但是我想知道是否有更简单/已经完成的事情。

Answers:


93

使用默认的readline键绑定,ALT+B后退一个单词,ALT+F前退一个单词。

默认的Ubuntu设置还提供了CTRL您习惯的+箭头。这些位于/etc/inputrc并指定如下:

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

不知道为什么我们需要三个...


20
@bryan_ruiz:不同的键盘(终端仿真器等)输出不同的序列。要查看序列,请按Ctrl-v,然后按键。对于PuTTY中的我来说,Ctrl-v Ctrl-RightArrow给我^[OC的与您的相同。在xterm我得到的^[[1;5是一样的托马斯。
暂停,直到另行通知。

7
倒不如通过编辑这样做~/.inputrc,而不是
svassr

1
我不能相信没有这个我能活多久。
瑞安·希灵顿

3
编辑〜/ .inputrc可能会停止加载“系统”(/ etc / inputrc)。另请注意,“ set -o”设置-“ set -o emacs”应在命令行上为您提供emacs样式的键绑定,而不是例如“ set -o vi”(这样做后,您需要按尝试使用w或b)之前按ESC。
David Goodwin

4
@DavidGoodwin经过一些搜索后,添加操作$include /etc/inputrc还将加载系统inputrc文件。
SirGuy

42

正如Thomas所解释的,您可以将绑定添加到/etc/inputrc

这样,每次您登录时加载的另一种选择是将它们~/.bashrc 像这样放置:

#use ctl keys to move forward and back in words
bind '"\eOC":forward-word'
bind '"\eOD":backward-word'

我了解到您可以cat > /dev/null 用来查看键盘发送的字符,例如CTRL +向右箭头显示:

^[OC

其中^[的位置与此处相同,\e 因此代码来自bind命令中的位置。

您还可以像这样查找绑定:

bind -p | grep forward-word

所有这些都真棒,我很高兴我发现了bash的更多功能。


6
认为这只会影响bash,而该inputrc解决方案也将适用于其他使用readline的程序,例如Python解释器,大多数其他shell。请注意,~/.inputrc如果您没有root用户或不希望将它们应用于所有用户,也可以将其放入。
托马斯,

无论出于何种原因,这仅在我调换上述行的顺序时才对我有用。进一步说明。我在Windows 8.1的腻子后面使用Ubuntu 14.04LTS。
丽贝卡·德森维尔

2
+1尤其适用于I learned that you can use cat > /dev/null to look at the characters that your keyboard is sending。#TIL
Sungam '17

3
您也可以简单地键入read并按Enter来获得与相同的效果cat > /dev/null。我很懒,所以我喜欢打字少的解决方案。:)
theglossy17年

Ctrl + 4使我的猫崩溃(它发送^ /)
user1040495

4

例如,您的主目录中的.inputrc将导致ctrl + left停止在Ubuntu上运行。

要使所有功能正常运行,请将以下内容添加到〜/ .inputrc中:

# Include system-wide inputrc, which is ignored by default when
# a user has their own .inputrc file.
$include /etc/inputrc

归功于f.kowal

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.