Thursday, March 8, 2007

Moja powłoka - ZSH

W końcu mam okazję napisać coś o mojej powłoce. Z bash-a przerzuciłem się na ZSH i to tylko dlatego, że słyszałem, że ma fajne uzupełnianie ... bo rzeczywiście ma ;)

Do podstawowej konfiguracji ZSH można użyć łatwego kreatora (nie pamiętam jak się go wywołuje)

# Globalne ustawienia dla całego systemu #
. /etc/profile # Ładuje sobie ustawienia z . /etc/profile

# Obsługa dopełnień #
zstyle ':completion:*' completer _complete
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # Koloruje dopełnienia

# Buduję listę znanych hostów #
local _myhosts;
_myhosts=( ${${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ }:#\!*}
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*} );
zstyle ':completion:*' hosts $_myhosts;

# Ładowanie obsługi dopełnień #
# Dużo by mówić o dopełnianiu. Samo się uczy i czyta parametry dostępne w opcji -h --help
# Trzeba zobaczyć żeby sprawdzić.
autoload -Uz compinit
compinit

# Korekcja poleceń #
# Powłoka wyłapie polecenie np: ekg1 i zapyta czy wykonać na ekg2
setopt correct # Korygowanie literówek w poleceniach
setopt correctall # To samo rozszerzone

# Kolorowy prompt w ZSH #
autoload -U promptinit
promptinit
export PS1="%{${fg_bold[red]}%}%n%{${fg_bold[green]}%}@%{${fg_bold[blue]}%}%m%{${fg_bold[yellow]}%}:%~%#%{${reset_color}%} "

# Przechodzenie po drzewie tylko przy użyciu nazw katalogów #
setopt autocd # Przechodzenie po katalogach bez użycia cd np zamiast "cd jasiu" piszemy "jasiu"

# Ustawienia dla historii #
setopt incappendhistory # Dopisuje do pliku historii "a+"
setopt histignoredups # Nie wpisuje do pliku dwóch identycznych poleceń
setopt extendedhistory # Zapis godziny wykonania polecenia
export HISTSIZE=2000 # Rozmiar historii
export SAVEHIST=2000 # Ile wpisów ma być zapisanych
export HISTFILE=~/.zsh_history # Plik z historią


# Własna konfiguracja #
export TERM='linux'

# Aliasy #
alias ls='ls --color=always' # Kolorowanie dopełnienia dla katalogów
Już nawet tak prosta konfiguracja pozwala na wygodną, szybką pracę.

Przydatne skróty:
[CTRL]+[r]: Po wciśnięciu, wszystko co będziemy wpisywać będzie wyszukiwane w historii poleceń
[CTRL]+[u]: Czyści obecną linijkę
[CTRL]+[c]: Anuluje obecną linijkę
[CTRL]+[a]: Przechodzi na początek linijki
[CTRL]+[e]: Przechodzi na koniec linijki



Kilka ciekawych linków:

Pliki konfiguracyjne - przykładowe:
http://www.gentoo.pl/~arsen/configs/.zshrc
http://wrzask.pl/files/zshrc

O ZSH:
http://jabba.pl/grzywacz/id/9394
http://docs.ramonat.fr/zshrc.html
http://grml.org/zsh/zsh-lovers.html
http://www.gentoo.ro/forum_viewtopic.php?20.8463
http://jabba.pl/leblee/id/9388
http://zsh.sunsite.dk/Intro/intro_toc.html
http://www.gentoo.org/doc/en/zsh.xml

Wiki:
http://zshwiki.org/home/

User Guide:
http://zsh.dotsrc.org/Guide/

No comments: