User Tools

Site Tools


zsh

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
zsh [2012/07/05 18:19]
hkoller
zsh [2012/07/05 18:29] (current)
hkoller [Globbing]
Line 1: Line 1:
  
 +
 +
 +====== Config ======
 +zsh is very nice and powerful. Here are some things to put into your .zshrc
 +
 +
 +
 +
 +===== Make the completion show all files in a directory =====
 +
 +<​code>​
 +#turns the key \C-x F into a command complete-file ​
 +#(which goes straight to the completion system'​s file completion command, ignoring the normal context)
 +zle -C complete-file complete-word _generic
 +zstyle ':​completion:​complete-file::::'​ completer _files
 +bindkey '​^F'​ complete-file
 +</​code> ​                                                                                                                  
 +Now pressing CTRL-f at any time makes the completion show (and suggest) all the files in the directory
 +
 +
 +===== Delete Path Elements =====
 +<​code>​
 +# make ALT+<​Backspace>​ delete backwards until last slash (very useful when editing paths)
 +backward-delete-to-slash () {
 +  local WORDCHARS=${WORDCHARS//​\//​}
 +  zle .backward-delete-word
 +}
 +zle -N backward-delete-to-slash
 +bindkey "​^[^?"​ backward-delete-to-slash
 +</​code>​
 +
 +
 +===== Misc useful options =====
 +
 +<​code>​
 +# Allow comments in interactive shell
 +setopt interactivecomments
 +
 +# Say how long a command took, if it took more than 30 seconds
 +export REPORTTIME=30
 +
 +# Prompts for confirmation after 'rm *' etc ...Helps avoid mistakes like 'rm * o' when 'rm *.o' was intended
 +setopt RM_STAR_WAIT
 +
 +# Don’t nice background processes
 +setopt NO_BG_NICE
 +
 +# Watch other user login/out
 +watch=notme
 +export LOGCHECK=60
 +
 +# make every cd command also a pushd
 +setopt autopushd
 +
 +
 +</​code>​
 +
 +
 +====== Tips&​Tricks ======
 +===== Globbing =====
 +
 +See "man 1 zshexpn"​ for documentation. Some examples:
 +
 +<code bash >
 +
 +vi **/​muh.txt ​                      # edit muh.txt no matter in which subdirectory it hides
 +echo *(oL)                          # sort directory contents by size
 +echo *(om)                          # sort directory contents by modification time
 +echo **/​*(F) ​                       # list full directories
 +echo **/​*(/​^F) ​                     # list empty directories (NOT full)
 +echo *(m4)                          # list files modified exactly 4 days ago
 +
 +</​code>​
 +
 +
 +more examples: https://​www.evernote.com/​shard/​s9/​note/​d6443525-ad9a-4468-8696-29dd68f9010d/​wishi/​crazylazy#​b=5370c944-5bb8-45c1-b73a-cfe46216db32&​n=d6443525-ad9a-4468-8696-29dd68f9010d