1 # Filename: /etc/skel/.zshrc
2 # Purpose: config file for zsh (z shell)
3 # Authors: (c) grml-team (grml.org)
4 # Bug-Reports: see http://grml.org/bugs/
5 # License: This file is licensed under the GPL v2 or any later version.
6 ################################################################################
7 # Nowadays, grml's zsh setup lives in only *one* zshrc file.
8 # That is the global one: /etc/zsh/zshrc (from grml-etc-core).
9 # It is best to leave *this* file untouched and do personal changes to
10 # your zsh setup via ${HOME}/.zshrc.local which is loaded at the end of
13 # That way, we enable people on other operating systems to use our
14 # setup, too, just by copying our global zshrc to their ${HOME}/.zshrc.
15 # Adjustments would still go to the .zshrc.local file.
16 ################################################################################
18 ## Inform users about upgrade path for grml's old zshrc layout, assuming that:
19 ## /etc/skel/.zshrc was installed as ~/.zshrc,
20 ## /etc/zsh/zshrc was installed as ~/.zshrc.global and
21 ## ~/.zshrc.local does not exist yet.
22 if [ -r ~/.zshrc -a -r ~/.zshrc.global -a ! -r ~/.zshrc.local ] ; then
24 printf '-!- Looks like you are using the old zshrc layout of grml.\n'
25 printf '-!- Please read the notes in the grml-zsh-refcard, being'
26 printf '-!- available at: http://grml.org/zsh/\n'
28 printf '-!- If you just want to get rid of this warning message execute:\n'
29 printf '-!- touch ~/.zshrc.local\n'
34 #if (( EUID == 0 )); then
40 ## Now, we'll give a few examples of what you might want to use in your
41 ## .zshrc.local file (just copy'n'paste and uncomment it there):
45 ## use the vi navigation keys (hjkl) besides cursor keys in menu completion
46 #bindkey -M menuselect 'h' vi-backward-char # left
47 #bindkey -M menuselect 'k' vi-up-line-or-history # up
48 #bindkey -M menuselect 'l' vi-forward-char # right
49 #bindkey -M menuselect 'j' vi-down-line-or-history # bottom
51 ## set command prediction from history, see 'man 1 zshcontrib'
52 #is4 && zrcautoload predict-on && \
53 #zle -N predict-on && \
54 #zle -N predict-off && \
55 #bindkey "^X^Z" predict-on && \
56 #bindkey "^Z" predict-off
58 ## press ctrl-q to quote line:
60 # zle beginning-of-line
62 # # RBUFFER="'$RBUFFER'"
63 # RBUFFER=${(q)RBUFFER}
66 #zle -N mquote && bindkey '^q' mquote
68 ## define word separators (for stuff like backward-word, forward-word, backward-kill-word,..)
69 #WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>' # the default
71 #WORDCHARS='*?_[]~=&;!#$%^(){}'
72 #WORDCHARS='${WORDCHARS:s@/@}'
74 # just type '...' to get '../..'
77 #if [[ $LBUFFER =~ '(^|/| | |'$'\n''|\||;|&)\.\.$' ]]; then
85 #zle -N rationalise-dot
86 #bindkey . rationalise-dot
87 ## without this, typing a . aborts incremental history search
88 #bindkey -M isearch . self-insert
90 #bindkey '\eq' push-line-or-edit
92 ## some popular options ##
94 ## add `|' to output redirections in the history
95 #setopt histallowclobber
97 ## warning if file exists ('cat /dev/null > ~/.zshrc')
100 ## don't warn me about bg processes when exiting
103 ## alert me if something failed
104 #setopt printexitvalue
106 ## with spelling correction, assume dvorak kb
109 ## Allow comments even in interactive shells
110 #setopt interactivecomments
113 ## compsys related snippets ##
115 ## changed completer settings
116 #zstyle ':completion:*' completer _complete _correct _approximate
117 #zstyle ':completion:*' expand prefix suffix
119 ## another different completer setting: expand shell aliases
120 #zstyle ':completion:*' completer _expand_alias _complete _approximate
122 ## to have more convenient account completion, specify your logins:
124 # {grml,grml1}@foo.invalid
125 # grml-devel@bar.invalid
128 # {fred,root}@foo.invalid
131 #zstyle ':completion:*:my-accounts' users-hosts $my_accounts
132 #zstyle ':completion:*:other-accounts' users-hosts $other_accounts
134 ## add grml.org to your list of hosts
136 #zstyle ':completion:*:hosts' hosts $hosts
138 ## telnet on non-default ports? ...well:
139 ## specify specific port/service settings:
140 #telnet_users_hosts_ports=(
143 # @mail-server:{smtp,pop3}
147 #zstyle ':completion:*:*:telnet:*' users-hosts-ports $telnet_users_hosts_ports
149 ## the default grml setup provides '..' as a completion. it does not provide
150 ## '.' though. If you want that too, use the following line:
151 #zstyle ':completion:*' special-dirs true
156 #alias u='translate -i'
158 ## ignore ~/.ssh/known_hosts entries
159 #alias insecssh='ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -o "PreferredAuthentications=keyboard-interactive"'
162 ## global aliases (for those who like them) ##
164 #alias -g '...'='../..'
165 #alias -g '....'='../../..'
166 #alias -g BG='& exit'
170 #alias -g Hl=' --help |& less -r'
173 #alias -g LL='|& less -r'
175 #alias -g N='&>/dev/null'
176 #alias -g R='| tr A-z N-za-m'
177 #alias -g SL='| sort | less'
180 #alias -g V='| vim -'
182 ## instead of global aliase it might be better to use grmls $abk assoc array, whose contents are expanded after pressing ,.
183 #$abk[SnL]="| sort -n | less"
185 ## get top 10 shell commands:
186 #alias top10='print -l ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
188 ## Execute \kbd{./configure}
189 #alias CO="./configure"
191 ## Execute \kbd{./configure --help}
192 #alias CH="./configure --help"
194 ## miscellaneous code ##
196 ## Use a default width of 80 for manpages for more convenient reading
197 #export MANWIDTH=${MANWIDTH:-80}
199 ## Set a search path for the cd builtin
202 ## variation of our manzsh() function; pick you poison:
203 #manzsh() { /usr/bin/man zshall | most +/"$1" ; }
205 ## Switching shell safely and efficiently? http://www.zsh.org/mla/workers/2001/msg02410.html
207 # NO_SWITCH="yes" command bash "$@"
210 # exec $SHELL $SHELL_ARGS "$@"
213 ## Handy functions for use with the (e::) globbing qualifier (like nt)
214 #contains() { grep -q "$*" $REPLY }
215 #sameas() { diff -q "$*" $REPLY &>/dev/null }
216 #ot () { [[ $REPLY -ot ${~1} ]] }
218 ## get_ic() - queries imap servers for capabilities; real simple. no imaps
222 # if [[ ! -z $1 ]] ; then
224 # print "querying imap server on $1:${port}...\n";
225 # print "a1 capability\na2 logout\n" | nc $1 ${port}
227 # print "usage:\n $0 <imap-server> [port]"
231 ## List all occurrences of programm in current PATH
234 # if [[ $# = 0 ]] ; then
235 # echo "Usage: $0 program"
236 # echo "Example: $0 zsh"
237 # echo "Lists all occurrences of program in the current PATH."
239 # ls -l ${^path}/*$1*(*N)
243 ## Find out which libs define a symbol
245 # if [[ -n "$1" ]] ; then
246 # nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"
248 # echo "Usage: lcheck <function>" >&2
252 ## Download a file and display it locally
255 # if ! [[ -n "$1" ]] ; then
256 # print "Usage: uopen \$URL/\$file">&2
260 # MIME=$(curl --head $FILE | \
261 # grep Content-Type | \
262 # cut -d ' ' -f 2 | \
265 # curl $FILE | see ${MIME}:-
271 # ps aux | awk '{if (NR > 1) print $5;
272 # if (NR > 2) print "+"}
273 # END { print "p" }' | dc
276 ## print hex value of a number
279 # if [[ -n "$1" ]]; then
282 # print 'Usage: hex <number-to-convert>'
287 ## log out? set timeout in seconds...
288 ## ...and do not log out in some specific terminals:
289 #if [[ "${TERM}" == ([Exa]term*|rxvt|dtterm|screen*) ]] ; then
295 ## associate types and extensions (be aware with perl scripts and anwanted behaviour!)
296 #check_com zsh-mime-setup || { autoload zsh-mime-setup && zsh-mime-setup }
297 #alias -s pl='perl -S'
299 ## ctrl-s will no longer freeze the terminal.
302 ## you want to automatically use a bigger font on big terminals?
303 #if [[ "$TERM" == "xterm" ]] && [[ "$LINES" -ge 50 ]] && [[ "$COLUMNS" -ge 100 ]] && [[ -z "$SSH_CONNECTION" ]] ; then
307 ## Some quick Perl-hacks aka /useful/ oneliner
308 #bew() { perl -le 'print unpack "B*","'$1'"' }
309 #web() { perl -le 'print pack "B*","'$1'"' }
310 #hew() { perl -le 'print unpack "H*","'$1'"' }
311 #weh() { perl -le 'print pack "H*","'$1'"' }
312 #pversion() { perl -M$1 -le "print $1->VERSION" } # i. e."pversion LWP -> 5.79"
313 #getlinks () { perl -ne 'while ( m/"((www|ftp|http):\/\/.*?)"/gc ) { print $1, "\n"; }' $* }
314 #gethrefs () { perl -ne 'while ( m/href="([^"]*)"/gc ) { print $1, "\n"; }' $* }
315 #getanames () { perl -ne 'while ( m/a name="([^"]*)"/gc ) { print $1, "\n"; }' $* }
316 #getforms () { perl -ne 'while ( m:(\</?(input|form|select|option).*?\>):gic ) { print $1, "\n"; }' $* }
317 #getstrings () { perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }' $*}
318 #getanchors () { perl -ne 'while ( m/«([^«»\n]+)»/gc ) { print $1, "\n"; }' $* }
319 #showINC () { perl -e 'for (@INC) { printf "%d %s\n", $i++, $_ }' }
320 #vimpm () { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` }
321 #vimhelp () { vim -c "help $1" -c on -c "au! VimEnter *" }
323 ## END OF FILE #################################################################