Zsh Cheatsheet

(excuse the crappy layout, this is a draft)

  • tab is completion programmable and can dependent on the command it is used with. examples:
    • cd<TAB> shows a list containing only directories
    • cd -<TAB> shows you a list of recently visited directory, select with cursor where to go. instead of pressing <TAB>, you could also have typed cd -2 to go to the 2nd last dir.
    • ssh<TAB> shows a list of all known hosts
    • kill<TAB> gives you a list of processes. another example: `kill memca` finds the correct pid and inserts it
  • cd-less directory switching (just type name of directory)
  • all shell windows share one history, i.e you can access a command from window A’s history in a new window B
  • can shorten the path shown in the prompt (“Resources/Styles/Marble $” instead of ”/Applications/Chess.app/Contents/Resources/Styles/Marble $”)
  • more powerful globbing. example: ‘ls \\*/\_helper.rb’ lists all *_helper.rb files in the current tree
  • temporary aliases for directories, using ~dirname:
~ $ work=`pwd` 
~ $ cd / 
/ $ cd ~work ~ 
$ pwd /Users/phillip
  • bash-compatibility
  • optional prompt at the right top side
  • multiline commands with quoted strings
> sci -m "Bla
dquote> bla bla" 
  • remote path completion
scp xe<TAB>app1:/vir<TAB>tual
  • multi-line commands are editable
for x in 1 2 4
do
  echo $x
end
  • correct last command
^old^new
  • directory stacks and -history
cd -<TAB>
  • smarter Ctrl-R search in command history

General shell tips

  • Ctrl-K: Kill text to end of line (not specific)
  • use !$ and !!
  • use history