# Shortcuts
*For Ubuntu's default keybinding settings (i.e Emacs keybindings)*
## Insert previous arguments
- Alt+.: insert last argument from last command.
- Alt+number+.: insert #nth last argument from last command.
- Alt+- , number , Alt+., **zsh:** Alt+-+number+.: insert #nth first argument from last command.
*In Linux you can repeat commands to go back in history*
### Example:
Last command is:
mv foo bar
- Alt+0+.: insert first argument of last command = `mv`
- Alt+2+.: insert last 2nd argument of last command = `foo`
- up , Ctrl+w: last command without the last word = `mv foo`
## Cut/Paste commands
*(relative to cursor's position)*
- Ctrl+w: cuts last word
- Alt+d: cuts next word
- Ctrl+k: cuts everything after
- Ctrl+u, **zsh:** Alt+w: cuts everything before
- **zsh:** Ctrl+u: cuts the entire command *(In bash you can combine Ctrl+u , Ctrl+k)*
- Ctrl+y: paste characters previously cut with any **Cut command**. *In bash you can chain **cut commands**, and Ctrl+y will paste them all.*
## Move cursor
- Ctrl+left: move to last word
- Ctrl+right: move to next word
- home or Ctrl+a: move to start of command
- end or Ctrl+e: move to end of command
## Other
- Ctrl+_: undo last edit *(very useful when exceeding Ctrl+w)*
## To see all shortcuts available
- **bash:** `bind -lp`
- **zsh:** `bindkey -L`
# Custom shortcuts
## Iterate through arguments
*only works in zsh, and probably only Linux*
### Description
Insert any argument of a previous command by iterating one by one until selection
### Setup Instructions
run this:
autoload -Uz copy-earlier-word
zle -N copy-earlier-word
bindkey "^[:" copy-earlier-word
*(to make this permanent, add it to your `~/.zshrc` and restart shell)*
Now use Alt+. to go as back as you want, then use Alt+: to iterate through the arguments
### Example:
Last command is
echo 1 2 3 4 5
- Alt+.: `5`
- Alt+.+:: `4`
- Alt+.+:+:: `3`
- Alt+.+:+:+:: `2`
- Alt+.+:+:+:+:: `1`
- Alt+.+:+:+:+:+:: `echo`
source: https://stackoverflow.com/a/34861762/3163120
# Other examples
## Common usecases
Let's consider the last command to be:
mv foo bar
up , Ctrl+w: last command without the last word = `mv foo`
Alt+0+.: first argument of last command = `mv`
# Limitations
"words" only includes `a-zA-Z` characters, so any symbol character will stop word-shortcuts.
So if last argument was a url and you want to erase it with Ctrl+w it will be a pain.
E.g: `curl -I --header "Connection: Keep-Alive" https://stackoverflow.com/questions/38176514/re-run-previous-command-with-different-arguments`
To erase that **url** using Ctrl+w, you'd have to repeat it 12 times.
---
It would be great to have similar shortcuts that only stops at the **space character**