1 # /etc/zshrc ou ~/.zshrc
3 # Ecrit par Alexis de Lattre (http://www.via.ecp.fr/~alexis/formation-linux/)
4 # Modifié par Olivier Tétard
10 # Gestion du ls : couleur + touche pas aux accents
11 alias ls='ls --classify --tabsize=0 --literal --color=auto --show-control-chars --human-readable'
13 alias cp='cp --interactive'
14 alias mv='mv --interactive'
15 alias rm='rm --interactive'
21 # Quelques alias pratiques
23 alias df='df --human-readable'
24 alias du='du --human-readable'
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'
33 alias aterm='aterm -sb -sl 2000 -bg black -fg white'
35 # alias ssh='LC_ALL=fr_FR luit ssh'
36 # alias sftp='LC_ALL=fr_FR luit sftp'
39 # 2. Prompt et Définition des touches
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
52 if [ "$TERM" = "linux" -o "$TERM" = "screen" -o "$TERM" = "rxvt" ]
54 bindkey '
\e[1~' beginning-of-line # Home
55 bindkey '
\e[4~' end-of-line # End
59 if [ "$TERM" = "xterm" ]
61 bindkey '
\e[H' beginning-of-line # Home
62 bindkey '
\e[F' end-of-line # End
65 # Gestion de la couleur pour 'ls' (exportation de LS_COLORS)
66 if [ -x /usr/bin/dircolors ]
68 if [ -r ~/.dir_colors ]
70 eval "`dircolors ~/.dir_colors`"
71 elif [ -r /etc/dir_colors ]
73 eval "`dircolors /etc/dir_colors`"
78 # 3. Options de zsh (cf 'man zshoptions')
81 # Je ne veux JAMAIS de beeps
86 # On veut utiliser les options de compétions avancées
89 # >| doit être utilisés pour pouvoir écraser un fichier déjà existant ;
92 # Ctrl+D est équivalent à 'logout'
95 # Affiche le code de sortie si différent de '0'
96 setopt print_exit_value
98 # Demande confirmation pour 'rm *'
99 unsetopt rm_star_silent
101 # Correction orthographique des commandes
104 # Schémas de complétion
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.
114 # 1ère tabulation : propose une liste de choix et complète avec le 1er item
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
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
129 # Options de complétion
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
135 # Fait la complétion sur les fichiers et répertoires cachés
138 # Traite les liens symboliques comme il faut
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
146 # Si la commande est invalide mais correspond au nom d'un sous-répertoire
147 # exécuter 'cd sous-répertoire'
150 # L'exécution de "cd" met le répertoire d'où l'on vient sur la pile
153 # Ignore les doublons dans la pile
154 setopt pushd_ignore_dups
156 # N'affiche pas la pile après un "pushd" ou "popd"
159 # "pushd" sans argument = "pushd $HOME"
162 # Les jobs qui tournent en tâche de fond sont nicé à '0'
165 # N'envoie pas de "HUP" aux jobs qui tourent quand le shell se ferme
169 # 4. Paramètres de l'historique des commandes
172 # Nombre d'entrées dans l'historique
175 # Fichier où est stocké l'historique
176 export HISTFILE=$HOME/.history
179 # 5. Complétion des options des commandes
182 zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}'
183 zstyle ':completion:*' max-errors 3 numeric
184 zstyle ':completion:*' use-compctl false
194 (( TERMWIDTH = ${COLUMNS} - 1 ))
197 # Truncate the path if it's too long.
202 local promptsize=${#${(%):---(%n@%m:%l)---()--}}
203 local pwdsize=${#${(%):-%~}}
205 # if [[ "$promptsize + $pwdsize" -gt $TERMWIDTH ]]; then
206 # ((PR_PWDLEN=$TERMWIDTH - $promptsize))
208 # PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $pwdsize)))..${PR_HBAR}.)}"
214 if [[ "$TERM" == "screen" ]]; then
215 local CMD=${1[(wr)^(*=*|sudo|-*)]}
216 echo -n "\ek$CMD\e\\"
223 # Need this so the prompt will work.
229 # See if we can use colors.
231 autoload colors zsh/terminfo
232 if [[ "$terminfo[colors]" -ge 8 ]]; then
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 ))
240 PR_NO_COLOUR="%{$terminfo[sgr0]%}"
244 # See if we can use extended characters to look nicer.
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]%}"
255 # Decide if we need to set titlebar text.
259 PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
262 PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}'
271 # Decide whether to set a screen title
272 if [[ "$TERM" == "screen" ]]; then
273 PR_STITLE=$'%{\ekzsh\e\\%}'
279 # Finally, the prompt.
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:)\
287 $PR_LIGHT_BLUE:%(!.$PR_RED.$PR_WHITE)%#$PR_BLUE$PR_NO_COLOUR '
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'
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 '
299 alias krypton='ssh toutoune25@miskin.fr'
301 if [ -x /usr/games/fortune ]; then
302 /usr/games/fortune /usr/share/games/fortunes/debian-hints