nettoyage, suppression cpufreqd, linux, xorg
[dotfiles.git] / zsh / zshrc
1 # /etc/zshrc ou ~/.zshrc
2
3 # Ecrit par Alexis de Lattre (http://www.via.ecp.fr/~alexis/formation-linux/)
4 # Modifié par Olivier Tétard
5
6 #
7 # 1. Les alias
8 #
9
10 #  Gestion du ls : couleur + touche pas aux accents
11 alias ls='ls --classify --tabsize=0 --literal --color=auto --show-control-chars --human-readable'
12
13 alias cp='cp --interactive'
14 alias mv='mv --interactive'
15 alias rm='rm --interactive'
16
17 alias lls='ls -l'
18 alias la='ls -a'
19 alias lla='ls -la'
20
21 # Quelques alias pratiques
22 alias s='cd ..'
23 alias df='df --human-readable'
24 alias du='du --human-readable'
25
26 alias egrep='egrep --color=tty -d skip'
27 alias egrpe='egrep --color=tty -d skip'
28 alias fgrep='fgrep --color=tty -d skip'
29 alias fgrpe='fgrep --color=tty -d skip'
30 alias grep='grep --color=tty -d skip'
31 alias grpe='grep --color=tty -d skip'
32
33 alias aterm='aterm -sb -sl 2000 -bg black -fg white'
34 # ssh + UTF-8
35 # alias ssh='LC_ALL=fr_FR luit ssh'
36 # alias sftp='LC_ALL=fr_FR luit sftp'
37
38 #
39 # 2. Prompt et Définition des touches
40 #
41
42 # Correspondance touches-fonction
43 bindkey '^A'    beginning-of-line       # Home
44 bindkey '^E'    end-of-line             # End
45 bindkey '^D'    delete-char             # Del
46 bindkey '\e[3~' delete-char             # Del
47 bindkey '\e[2~' overwrite-mode          # Insert
48 bindkey '\e[5~' history-search-backward # PgUp
49 bindkey '\e[6~' history-search-forward  # PgDn
50
51 # screen ou rxvt
52 if [ "$TERM" = "linux" -o "$TERM" = "screen" -o "$TERM" = "rxvt" ]
53 then
54   bindkey '\e[1~' beginning-of-line       # Home
55   bindkey '\e[4~' end-of-line             # End
56 fi
57
58 # xterm
59 if [ "$TERM" = "xterm" ]
60 then
61   bindkey '\e[H'  beginning-of-line       # Home
62   bindkey '\e[F'  end-of-line             # End
63 fi
64
65 # Gestion de la couleur pour 'ls' (exportation de LS_COLORS)
66 if [ -x /usr/bin/dircolors ]
67 then
68   if [ -r ~/.dir_colors ]
69   then
70     eval "`dircolors ~/.dir_colors`"
71   elif [ -r /etc/dir_colors ]
72   then
73     eval "`dircolors /etc/dir_colors`"
74   fi
75 fi
76
77 #
78 # 3. Options de zsh (cf 'man zshoptions')
79 #
80
81 # Je ne veux JAMAIS de beeps
82 unsetopt beep
83 unsetopt hist_beep
84 unsetopt list_beep
85
86 # On veut utiliser les options de compétions avancées
87 setopt extendedglob
88
89 # >| doit être utilisés pour pouvoir écraser un fichier déjà existant ;
90 unsetopt clobber
91
92 # Ctrl+D est équivalent à 'logout'
93 unsetopt ignore_eof
94
95 # Affiche le code de sortie si différent de '0'
96 setopt print_exit_value
97
98 # Demande confirmation pour 'rm *'
99 unsetopt rm_star_silent
100
101 # Correction orthographique des commandes
102 setopt correct
103
104 # Schémas de complétion
105
106 # - Schéma A :
107 # 1ère tabulation : complète jusqu'au bout de la partie commune
108 # 2ème tabulation : propose une liste de choix
109 # 3ème tabulation : complète avec le 1er item de la liste
110 # 4ème tabulation : complète avec le 2ème item de la liste, etc...
111 # -> c'est le schéma de complétion par défaut de zsh.
112
113 # Schéma B :
114 # 1ère tabulation : propose une liste de choix et complète avec le 1er item
115 #                   de la liste
116 # 2ème tabulation : complète avec le 2ème item de la liste, etc...
117 # Si vous voulez ce schéma, décommentez la ligne suivante :
118 #setopt menu_complete
119
120 # Schéma C :
121 # 1ère tabulation : complète jusqu'au bout de la partie commune et
122 #                   propose une liste de choix
123 # 2ème tabulation : complète avec le 1er item de la liste
124 # 3ème tabulation : complète avec le 2ème item de la liste, etc...
125 # Je n'ai malheureusement jamais réussi à mettre en place ce schéma
126 # alors qu'il me paraît être le schéma idéal !
127 # Si vous savez comment faire ça avec zsh -> alexis@via.ecp.fr
128
129 # Options de complétion
130
131 # Quand le dernier caractère d'une complétion est '/' et que l'on
132 # tape 'espace' après, le '/' est effaçé
133 setopt auto_remove_slash
134
135 # Fait la complétion sur les fichiers et répertoires cachés
136 setopt glob_dots
137
138 # Traite les liens symboliques comme il faut
139 setopt chase_links
140
141 # Quand l'utilisateur commence sa commande par '!' pour faire de la
142 # complétion historique, il n'exécute pas la commande immédiatement
143 # mais il écrit la commande dans le prompt
144 setopt hist_verify
145
146 # Si la commande est invalide mais correspond au nom d'un sous-répertoire
147 # exécuter 'cd sous-répertoire'
148 setopt auto_cd
149
150 # L'exécution de "cd" met le répertoire d'où l'on vient sur la pile
151 setopt auto_pushd
152
153 # Ignore les doublons dans la pile
154 setopt pushd_ignore_dups
155
156 # N'affiche pas la pile après un "pushd" ou "popd"
157 setopt pushd_silent
158
159 # "pushd" sans argument = "pushd $HOME"
160 setopt pushd_to_home
161
162 # Les jobs qui tournent en tâche de fond sont nicé à '0'
163 unsetopt bg_nice
164
165 # N'envoie pas de "HUP" aux jobs qui tourent quand le shell se ferme
166 unsetopt hup
167
168 #
169 # 4. Paramètres de l'historique des commandes
170 #
171
172 # Nombre d'entrées dans l'historique
173 export HISTORY=1000
174 export SAVEHIST=1000
175 # Fichier où est stocké l'historique
176 export HISTFILE=$HOME/.history
177
178 #
179 # 5. Complétion des options des commandes
180 #
181
182 zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}'
183 zstyle ':completion:*' max-errors 3 numeric
184 zstyle ':completion:*' use-compctl false
185
186 autoload -U compinit
187 compinit
188
189 #
190 # Le prompt !
191 #
192 function precmd {
193     local TERMWIDTH
194     (( TERMWIDTH = ${COLUMNS} - 1 ))
195
196     ###
197     # Truncate the path if it's too long.
198     
199     PR_FILLBAR=""
200     PR_PWDLEN=""
201     
202     local promptsize=${#${(%):---(%n@%m:%l)---()--}}
203     local pwdsize=${#${(%):-%~}}
204     
205 #     if [[ "$promptsize + $pwdsize" -gt $TERMWIDTH ]]; then
206 #           ((PR_PWDLEN=$TERMWIDTH - $promptsize))
207 #     else
208 #       PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $pwdsize)))..${PR_HBAR}.)}"
209 #     fi
210 # }
211 }
212
213 preexec () {
214     if [[ "$TERM" == "screen" ]]; then
215         local CMD=${1[(wr)^(*=*|sudo|-*)]}
216         echo -n "\ek$CMD\e\\"
217     fi
218 }
219
220
221 setprompt () {
222     ###
223     # Need this so the prompt will work.
224
225     setopt prompt_subst
226
227
228     ###
229     # See if we can use colors.
230
231     autoload colors zsh/terminfo
232     if [[ "$terminfo[colors]" -ge 8 ]]; then
233         colors
234     fi
235     for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
236         eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
237         eval PR_LIGHT_$color='%{$fg[${(L)color}]%}'
238         (( count = $count + 1 ))
239     done
240     PR_NO_COLOUR="%{$terminfo[sgr0]%}"
241
242
243     ###
244     # See if we can use extended characters to look nicer.
245     
246     typeset -A altchar
247     set -A altchar ${(s..)terminfo[acsc]}
248     PR_SET_CHARSET="%{$terminfo[enacs]%}"
249     PR_SHIFT_IN="%{$terminfo[smacs]%}"
250     PR_SHIFT_OUT="%{$terminfo[rmacs]%}"
251     PR_HBAR="--"
252
253     
254     ###
255     # Decide if we need to set titlebar text.
256     
257     case $TERM in
258         xterm*)
259             PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
260             ;;
261         screen)
262             PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}'
263             ;;
264         *)
265             PR_TITLEBAR=''
266             ;;
267     esac
268     
269     
270     ###
271     # Decide whether to set a screen title
272     if [[ "$TERM" == "screen" ]]; then
273         PR_STITLE=$'%{\ekzsh\e\\%}'
274     else
275         PR_STITLE=''
276     fi
277     
278     ###
279     # Finally, the prompt.
280
281     PROMPT='$PR_SET_CHARSET$PR_STITLE${(e)PR_TITLEBAR}\
282 $PR_BLUE$PR_HBAR$PR_SHIFT_OUT \
283 $PR_BLUE%(!.%SROOT%s.%n)$PR_BLUE@%m:%l:$PR_MAGENTA%$PR_PWDLEN<...<%~%<<$PR_BLUE $PR_SHIFT_IN$PR_HBAR
284 $PR_BLUE$PR_HBAR$PR_SHIFT_OUT \
285 %(?..$PR_LIGHT_RED%?$PR_BLUE:)\
286 $PR_YELLOW%D{%H:%M}\
287 $PR_LIGHT_BLUE:%(!.$PR_RED.$PR_WHITE)%#$PR_BLUE$PR_NO_COLOUR '
288
289 #     RPROMPT=' $PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_BLUE$PR_HBAR$PR_SHIFT_OUT\
290 # ($PR_YELLOW%D{%a,%b%d}$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR'
291
292     PS2='$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
293 $PR_BLUE$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT(\
294 $PR_LIGHT_GREEN%_$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
295 $PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR '
296 }
297
298 setprompt                       
299 alias krypton='ssh toutoune25@miskin.fr'
300
301 if [ -x /usr/games/fortune ]; then
302     /usr/games/fortune /usr/share/games/fortunes/debian-hints
303     echo ""
304 fi