etc/skel/.zshrc: set file encoding to UTF8
[grml-etc-core.git] / etc / skel / .zshrc
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
11 # the global zshrc.
12 #
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 ################################################################################
17
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
23     printf '-!-\n'
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'
27     printf '-!-\n'
28     printf '-!- If you just want to get rid of this warning message execute:\n'
29     printf '-!-        touch ~/.zshrc.local\n'
30     printf '-!-\n'
31 fi
32
33 ## Settings for umask
34 #if (( EUID == 0 )); then
35 #    umask 002
36 #else
37 #    umask 022
38 #fi
39
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):
42
43 ## Prompt theme extension ##
44
45 # Virtualenv support
46
47 #function virtual_env_prompt () {
48 #    REPLY=${VIRTUAL_ENV+(${VIRTUAL_ENV:t}) }
49 #}
50 #grml_theme_add_token  virtual-env -f virtual_env_prompt '%F{magenta}' '%f'
51 #zstyle ':prompt:grml:left:setup' items rc virtual-env change-root user at host path vcs percent
52
53 ## ZLE tweaks ##
54
55 ## use the vi navigation keys (hjkl) besides cursor keys in menu completion
56 #bindkey -M menuselect 'h' vi-backward-char        # left
57 #bindkey -M menuselect 'k' vi-up-line-or-history   # up
58 #bindkey -M menuselect 'l' vi-forward-char         # right
59 #bindkey -M menuselect 'j' vi-down-line-or-history # bottom
60
61 ## set command prediction from history, see 'man 1 zshcontrib'
62 #is4 && zrcautoload predict-on && \
63 #zle -N predict-on         && \
64 #zle -N predict-off        && \
65 #bindkey "^X^Z" predict-on && \
66 #bindkey "^Z" predict-off
67
68 ## press ctrl-q to quote line:
69 #mquote () {
70 #      zle beginning-of-line
71 #      zle forward-word
72 #      # RBUFFER="'$RBUFFER'"
73 #      RBUFFER=${(q)RBUFFER}
74 #      zle end-of-line
75 #}
76 #zle -N mquote && bindkey '^q' mquote
77
78 ## define word separators (for stuff like backward-word, forward-word, backward-kill-word,..)
79 #WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>' # the default
80 #WORDCHARS=.
81 #WORDCHARS='*?_[]~=&;!#$%^(){}'
82 #WORDCHARS='${WORDCHARS:s@/@}'
83
84 # just type '...' to get '../..'
85 #rationalise-dot() {
86 #local MATCH
87 #if [[ $LBUFFER =~ '(^|/| |     |'$'\n''|\||;|&)\.\.$' ]]; then
88 #  LBUFFER+=/
89 #  zle self-insert
90 #  zle self-insert
91 #else
92 #  zle self-insert
93 #fi
94 #}
95 #zle -N rationalise-dot
96 #bindkey . rationalise-dot
97 ## without this, typing a . aborts incremental history search
98 #bindkey -M isearch . self-insert
99
100 #bindkey '\eq' push-line-or-edit
101
102 ## some popular options ##
103
104 ## add `|' to output redirections in the history
105 #setopt histallowclobber
106
107 ## try to avoid the 'zsh: no matches found...'
108 #setopt nonomatch
109
110 ## warning if file exists ('cat /dev/null > ~/.zshrc')
111 #setopt NO_clobber
112
113 ## don't warn me about bg processes when exiting
114 #setopt nocheckjobs
115
116 ## alert me if something failed
117 #setopt printexitvalue
118
119 ## with spelling correction, assume dvorak kb
120 #setopt dvorak
121
122 ## Allow comments even in interactive shells
123 #setopt interactivecomments
124
125 ## if a new command line being added to the history list duplicates an older
126 ## one, the older command is removed from the list
127 #is4 && setopt histignorealldups
128
129 ## compsys related snippets ##
130
131 ## changed completer settings
132 #zstyle ':completion:*' completer _complete _correct _approximate
133 #zstyle ':completion:*' expand prefix suffix
134
135 ## another different completer setting: expand shell aliases
136 #zstyle ':completion:*' completer _expand_alias _complete _approximate
137
138 ## to have more convenient account completion, specify your logins:
139 #my_accounts=(
140 # {grml,grml1}@foo.invalid
141 # grml-devel@bar.invalid
142 #)
143 #other_accounts=(
144 # {fred,root}@foo.invalid
145 # vera@bar.invalid
146 #)
147 #zstyle ':completion:*:my-accounts' users-hosts $my_accounts
148 #zstyle ':completion:*:other-accounts' users-hosts $other_accounts
149
150 ## add grml.org to your list of hosts
151 #hosts+=(grml.org)
152 #zstyle ':completion:*:hosts' hosts $hosts
153
154 ## telnet on non-default ports? ...well:
155 ## specify specific port/service settings:
156 #telnet_users_hosts_ports=(
157 #  user1@host1:
158 #  user2@host2:
159 #  @mail-server:{smtp,pop3}
160 #  @news-server:nntp
161 #  @proxy-server:8000
162 #)
163 #zstyle ':completion:*:*:telnet:*' users-hosts-ports $telnet_users_hosts_ports
164
165 ## the default grml setup provides '..' as a completion. it does not provide
166 ## '.' though. If you want that too, use the following line:
167 #zstyle ':completion:*' special-dirs true
168
169 ## aliases ##
170
171 ## translate
172 #alias u='translate -i'
173
174 ## ignore ~/.ssh/known_hosts entries
175 #alias insecssh='ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -o "PreferredAuthentications=keyboard-interactive"'
176
177
178 ## global aliases (for those who like them) ##
179
180 #alias -g '...'='../..'
181 #alias -g '....'='../../..'
182 #alias -g BG='& exit'
183 #alias -g C='|wc -l'
184 #alias -g G='|grep'
185 #alias -g H='|head'
186 #alias -g Hl=' --help |& less -r'
187 #alias -g J='|jq'
188 #alias -g K='|keep'
189 #alias -g L='|less'
190 #alias -g LL='|& less -r'
191 #alias -g M='|most'
192 #alias -g N='&>/dev/null'
193 #alias -g R='| tr A-z N-za-m'
194 #alias -g SL='| sort | less'
195 #alias -g S='| sort'
196 #alias -g T='|tail'
197 #alias -g V='| vim -'
198
199 ## instead of global aliase it might be better to use grmls $abk assoc array, whose contents are expanded after pressing ,.
200 #$abk[SnL]="| sort -n | less"
201
202 ## get top 10 shell commands:
203 #alias top10='print -l ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
204
205 ## Execute \kbd{./configure}
206 #alias CO="./configure"
207
208 ## Execute \kbd{./configure --help}
209 #alias CH="./configure --help"
210
211 ## miscellaneous code ##
212
213 ## Use a default width of 80 for manpages for more convenient reading
214 #export MANWIDTH=${MANWIDTH:-80}
215
216 ## Set a search path for the cd builtin
217 #cdpath=(.. ~)
218
219 ## variation of our manzsh() function; pick you poison:
220 #manzsh()  { /usr/bin/man zshall |  most +/"$1" ; }
221
222 ## Switching shell safely and efficiently? http://www.zsh.org/mla/workers/2001/msg02410.html
223 #bash() {
224 #    NO_SWITCH="yes" command bash "$@"
225 #}
226 #restart () {
227 #    exec $SHELL $SHELL_ARGS "$@"
228 #}
229
230 ## Handy functions for use with the (e::) globbing qualifier (like nt)
231 #contains() { grep -q "$*" $REPLY }
232 #sameas() { diff -q "$*" $REPLY &>/dev/null }
233 #ot () { [[ $REPLY -ot ${~1} ]] }
234
235 ## get_ic() - queries imap servers for capabilities; real simple. no imaps
236 #ic_get() {
237 #    emulate -L zsh
238 #    local port
239 #    if [[ ! -z $1 ]] ; then
240 #        port=${2:-143}
241 #        print "querying imap server on $1:${port}...\n";
242 #        print "a1 capability\na2 logout\n" | nc $1 ${port}
243 #    else
244 #        print "usage:\n  $0 <imap-server> [port]"
245 #    fi
246 #}
247
248 ## List all occurrences of programm in current PATH
249 #plap() {
250 #    emulate -L zsh
251 #    if [[ $# = 0 ]] ; then
252 #        echo "Usage:    $0 program"
253 #        echo "Example:  $0 zsh"
254 #        echo "Lists all occurrences of program in the current PATH."
255 #    else
256 #        ls -l ${^path}/*$1*(*N)
257 #    fi
258 #}
259
260 ## Find out which libs define a symbol
261 #lcheck() {
262 #    if [[ -n "$1" ]] ; then
263 #        nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"
264 #    else
265 #        echo "Usage: lcheck <function>" >&2
266 #    fi
267 #}
268
269 ## Download a file and display it locally
270 #uopen() {
271 #    emulate -L zsh
272 #    if ! [[ -n "$1" ]] ; then
273 #        print "Usage: uopen \$URL/\$file">&2
274 #        return 1
275 #    else
276 #        FILE=$1
277 #        MIME=$(curl --head $FILE | \
278 #               grep Content-Type | \
279 #               cut -d ' ' -f 2 | \
280 #               cut -d\; -f 1)
281 #        MIME=${MIME%$'\r'}
282 #        curl $FILE | see ${MIME}:-
283 #    fi
284 #}
285
286 ## Memory overview
287 #memusage() {
288 #    ps aux | awk '{if (NR > 1) print $5;
289 #                   if (NR > 2) print "+"}
290 #                   END { print "p" }' | dc
291 #}
292
293 ## print hex value of a number
294 #hex() {
295 #    emulate -L zsh
296 #    if [[ -n "$1" ]]; then
297 #        printf "%x\n" $1
298 #    else
299 #        print 'Usage: hex <number-to-convert>'
300 #        return 1
301 #    fi
302 #}
303
304 ## log out? set timeout in seconds...
305 ## ...and do not log out in some specific terminals:
306 #if [[ "${TERM}" == ([Exa]term*|rxvt|dtterm|screen*) ]] ; then
307 #    unset TMOUT
308 #else
309 #    TMOUT=1800
310 #fi
311
312 ## associate types and extensions (be aware with perl scripts and anwanted behaviour!)
313 #check_com zsh-mime-setup || { autoload zsh-mime-setup && zsh-mime-setup }
314 #alias -s pl='perl -S'
315
316 ## ctrl-s will no longer freeze the terminal.
317 #stty erase "^?"
318
319 ## you want to automatically use a bigger font on big terminals?
320 #if [[ "$TERM" == "xterm" ]] && [[ "$LINES" -ge 50 ]] && [[ "$COLUMNS" -ge 100 ]] && [[ -z "$SSH_CONNECTION" ]] ; then
321 #    large
322 #fi
323
324 ## Some quick Perl-hacks aka /useful/ oneliner
325 #bew() { perl -le 'print unpack "B*","'$1'"' }
326 #web() { perl -le 'print pack "B*","'$1'"' }
327 #hew() { perl -le 'print unpack "H*","'$1'"' }
328 #weh() { perl -le 'print pack "H*","'$1'"' }
329 #pversion()    { perl -M$1 -le "print $1->VERSION" } # i. e."pversion LWP -> 5.79"
330 #getlinks ()   { perl -ne 'while ( m/"((www|ftp|http):\/\/.*?)"/gc ) { print $1, "\n"; }' $* }
331 #gethrefs ()   { perl -ne 'while ( m/href="([^"]*)"/gc ) { print $1, "\n"; }' $* }
332 #getanames ()  { perl -ne 'while ( m/a name="([^"]*)"/gc ) { print $1, "\n"; }' $* }
333 #getforms ()   { perl -ne 'while ( m:(\</?(input|form|select|option).*?\>):gic ) { print $1, "\n"; }' $* }
334 #getstrings () { perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }' $*}
335 #getanchors () { perl -ne 'while ( m/«([^«»\n]+)»/gc ) { print $1, "\n"; }' $* }
336 #showINC ()    { perl -e 'for (@INC) { printf "%d %s\n", $i++, $_ }' }
337 #vimpm ()      { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` }
338 #vimhelp ()    { vim -c "help $1" -c on -c "au! VimEnter *" }
339
340 ## END OF FILE #################################################################