135

Is there a way speed up Linux CLI navigation when I must enter long commands? I simply use arrows right now, and - if I have a long command it takes some time to get from start of the command to the middle of it.

Is there a way to for example jump to the middle of the command without using arrows?

172

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
  • 7
    +1 because this works even when, for some reasons, ctrl-arrows do not work. Worth to note, for screen users, Ctrl-A becomes Ctrl-A A. – enzotib May 27 '11 at 18:54
  • 3
    To undo a deletion (or move text by deleting it), use Ctrl + Y. – Lekensteyn Jun 8 '11 at 22:48
  • 7
    Ctrl+Right arrow, Ctrl+Left arrow worth mentioning. – mac Jan 16 '14 at 15:04
  • 3
    On Ubuntu using Gnome and GnomeTerminal Alt-A opens the menu instead of moving the cursor. How do you use Alt-A with Gnome? I mean, Gnome is the default, so it's likely anyone reading this would be running a terminal in Gnome. – Jason Aug 5 '14 at 23:42
  • 1
    If you're connecting to Ubuntu from OS X over SSH you may have to use "Esc" instead of Ctrl e.g., Esc-A, Esc-E and so on. This is true for iTerm and Terminal. – Fred Clausen Jan 28 '15 at 0:30
1

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.

14

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.

75

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
  • Thank you for this straightforward, chit-chat-less list. – neverMind9 Jul 9 '18 at 10:04
8

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).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.