diff --git a/bash-zsh_TerminalShorcuts.md b/bash-zsh_TerminalShorcuts.md
new file mode 100644
index 0000000..125aa3a
--- /dev/null
+++ b/bash-zsh_TerminalShorcuts.md
@@ -0,0 +1,104 @@
+# 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**
\ No newline at end of file