I am use to using the CTRL key to move faster when using the left and right arrow 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.
Move Cursor on The Command LineCtrl+A or Home – moves the cursor to the start of a line. Ctrl+E or End – moves the cursor to the end of the line. Ctrl+B or Left Arrow – moves the cursor back one character at a time. Ctrl+F or Right Arrow – moves the cursor forward one character at a time.
ctrl-b: moves the cursor backward one character at a time (same as the left arrow). alt-f: moves the cursor forward one word (same as pressing ctrl + right arrow). alt-b: moves the cursor backward one word (same as pressing ctrl + left arrow).
Option + Right Arrow Moves Cursor Right by a Word in Mac Terminal.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With