Skip to content

Instantly share code, notes, and snippets.

@2KAbhishek
Last active July 20, 2024 06:11
Show Gist options
  • Save 2KAbhishek/9c6d607e160b0439a186d4fbd1bd81df to your computer and use it in GitHub Desktop.
Save 2KAbhishek/9c6d607e160b0439a186d4fbd1bd81df to your computer and use it in GitHub Desktop.
Keyboard shortcuts for bash/zsh

Shell Keybindings

Navigation 🚀

Keybinding Action
Alt + f/b Move cursor to previous/next word
Ctrl + a/e Move cursor to beginning/end of command
Ctrl + xx Toggle between the start of line and current cursor position

Editing ✏️

Keybinding Action
Alt + . or !$ Previous commands last argument
Alt + c Capitalize word
Alt + d Delete next word
Alt + Del Delete previous word
Alt + l/u Lowercase/Uppercase word
Alt + r Cancel the changes, revert
Alt + t Swap current word with previous
Alt + w Delete until beginning (zsh)
Ctrl + _ Undo
Ctrl + k Cut till end
Ctrl + t Swap the last two characters before the cursor
Ctrl + u Delete whole line (zsh)/ cut until beginning (bash)
Ctrl + w Cut previous word
Ctrl + x,e Open command in editor
Ctrl + y Paste
Esc + t Swap the last two words before the cursor
!* All arguments of previous command

Process 📊

Keybinding Action
Ctrl + c Interrupt/Kill
Ctrl + d Close current shell
Ctrl + l Clear screen
Ctrl + z Background/Foreground job

History ⏳

Keybinding Action
Ctrl + r History search
Ctrl + s Go back to the next most recent command
^abc^def Run previous command, replacing abc with def

Modes 🕹️

Keybinding Action
Ctrl + x,v vi mode (zsh)
bindkey -e Emacs mode
set -o vi / bindkey -v Vi mode
@2KAbhishek
Copy link
Author

You can use oh-my-zsh with the fzf plugin, here's what mine looks like, link: https://github.com/2kabhishek/Dotfiles

screenshot_1609_1

@gt-novelt
Copy link

Very nice

I would add Ctrl+p Previous command

@eclectic-coding
Copy link

FWIW, Shift+G will return you to the bottom of the shell output. Especially helpful in server logs, in my case, rails server

@stobix
Copy link

stobix commented Jun 22, 2023

I'd like to add how to get to the previous COMMAND .
Sure,
Ctrl+a takes me to the beginning of the line,
Ctrl+p takes me to the previous line,
but having a 100 line long command, none of the above helps me much in getting to the previous command easily.
It seems like:
ESC+< goes back to the actual beginning of the command buffer for zsh (or the first line of history if already at start of command), and ESC+> likewise goes to the end.
So to get to the previous command in a 100-line command case, use ESC+<, Ctrl+p instead of 100 x Ctrl+p
Feel free to verify that the same holds true for bash, anyone. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment