开发者

Bash CTRL to move cursor between words/strings

I am use to using the CTRL key to move faster when using the left and right arr开发者_JAVA技巧ow keys (goes to end of a word, instead of one char at a time).

Can I do that in bash somehow?

I could probably code it, but I was wondering if there is something easier / already done.


With the default readline key bindings, ALT+B goes back one word, ALT+F goes forward one word.

The default Ubuntu setup additionally provides CTRL+arrows like you're used to. These are in /etc/inputrc and specified as follows:

# 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

Not sure why we need three of them...


As Thomas explained, you can add the bindings to /etc/inputrc.

Another alternative so it loads every time you log in, is putting them in ~/.bashrc like this:

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

I learned that you can use cat > /dev/null to look at the characters that your keyboard is sending, e.g., CTRL + right arrow shows:

^[OC

where ^[ is the same as \e so that's where the code comes from in the bind command.

You can also look up bindings like this:

bind -p | grep forward-word

All of this is pretty damn awesome and I'm glad I found out some more power of bash.


A .inputrc in your home directory will cause ctrl+left to stop working on Ubuntu (for example).

To get everything working, add the following to ~/.inputrc:

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

credit to f.kowal


Add $include /etc/inputrc

in ~/.inputrc

Worked for CentOS Linux release 8.2.2004 (Core)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜