How to navigate long commands faster?
Some useful line editing key bindings provided by the Readline library:
- Ctrl + A: go to the beginning of line
- Ctrl + E: go to the end of line
- Alt + B: skip one word backward
- Alt + F: skip one word forward
- Ctrl + U: delete to the beginning of line
- Ctrl + K: delete to the end of line
- Alt + D: delete to the end of word
Some more shortcuts from here
Ctrl + a – Go to the start of the command line
Ctrl + e – Go to the end of the command line
Ctrl + k – Delete from cursor to the end of the command line
Ctrl + u – Delete from cursor to the start of the command line
Ctrl + w – Delete from cursor to start of word (i.e. delete backwards one word)
Ctrl + y – Paste word or text that was cut using one of the deletion shortcuts (such as the one above) after the cursor
Ctrl + xx – Move between start of command line and current cursor position (and back again)
Alt + b – Move backward one word (or go to start of word the cursor is currently on)
Alt + f – Move forward one word (or go to end of word the cursor is currently on)
Alt + d – Delete to end of word starting at cursor (whole word if cursor is at the beginning of word)
Alt + c – Capitalize to end of word starting at cursor (whole word if cursor is at the beginning of word)
Alt + u – Make uppercase from cursor to end of word
Alt + l – Make lowercase from cursor to end of word
Alt + t – Swap current word with previous
Ctrl + f – Move forward one character
Ctrl + b – Move backward one character
Ctrl + d – Delete character under the cursor
Ctrl + h – Delete character before the cursor
Ctrl + t – Swap character under cursor with the previous one
If you're a vi[m] and bash user, you may find it useful to make readline (used by bash) use vi-style editing by adding set editing-mode vi
to your ~/.inputrc
or /etc/inputrc
files. Or, you could just make bash use vi-style editing by running the bash command set -o vi
. Add the command to your ~/.bashrc
file to make the behavior persistent.
If you're a zsh user, add bindkey -v
to your .zshrc
file for vi-style editting.
I do not know of a way to specifically jump to the middle without using the cursor keys. However, I can recommend using Ctrl + cursor key to move from blank to blank (i.e., jump from one word to another).
Source the code-snippet below in your .bashrc. Ctrl-a jumps to the start and pressing Ctrl-a again jumps to the middle.
jump_mid() {
if [ "$READLINE_POINT" -eq "0" ]; then
LEN=${#READLINE_LINE}
POS=$(($LEN / 2))
READLINE_POINT=$POS
else
READLINE_POINT=0
fi
}
bind -x '"\C-a" : jump_mid'
Or if you want to use Ctrl-Something to directly jump to the middle, change the code to:
jump_mid() {
LEN=${#READLINE_LINE}
POS=$(($LEN / 2))
READLINE_POINT=$POS
}
And bind it to something different than Ctrl-a.