domingo, 31 de marzo de 2013

ZSH

Ufff, que de tiempo que no escribía por aquí, en verdad que he tenido este blog bastante abandonado (nunca porque quisiera), sin embargo, en estos días decidí sucumbir ante la zsh, una shell algo particular, la usé por primera vez cuando instalaba mi funtoo usando el System-Rescue-CD y me di cuenta que la shell tenia unas cosas que no tenía la que usualmente usaba, así que hoy por fin, luego de investigar un poco de la zsh logré colocarla como quería, parecida al bash que presenta funtoo/gentoo.
    Para instalarla es necesario usar nuestro árbol de portage, para ello:

# emerge -av zsh zsh-completion

El primero es el paquete de la zsh y el segundo es el paquete necesario para el autocompletado dentro de nuestra caja gentoo/funtoo

luego de realizar la instalación es necesario editar el archivo .zshrc que se encuentra dentro del home del usuario por lo tanto (nota: cuando se inicia por primera vez ejecuta un ayudante para configurar las opciones que deseamos, pero yo prefiero editar mi archivo)

$ vim ~/.zshrc

y colocamos lo siguiente:

# Número de líneas en el historial
export HISTSIZE=100000
# Número de líneas salvada en el historial luego de cerrar sesión
export SAVEHIST=100000
# ubicación del historial
export HISTFILE=~/.zhistory
# comando cuando se ejecuta history
setopt inc_append_history
# módulo para completado de comandos de gentoo
unsetopt equals
# alias para listar en color
alias ls='ls --color'
# Módulo de autocompletado
autoload -U compinit
compinit
setopt completealiases
# Módulo de colores dentro del prompt
autoload colors; colors
zstyle ':completion:*' menu select

#color en el promt en este caso los de gentoo
export PS1="%{$fg_bold[green]%}%n@%{$fg_bold[green]%}%m%{$fg_bold[blue]%} %~ $ $reset_color"
#titulo en la bara de la terminal
chpwd() {
  [[ -o interactive ]] || return
  case $TERM in
    sun-cmd) print -Pn "\e]l%~\e\\"
      ;;
    *xterm*|rxvt|(dt|k|E)term) print -Pn "\e]2;%n@%m:~\a"
      ;;
  esac
}
#bindkeys como inicio y fin
typeset -A key
                                                                                                                        

key[Home]=${terminfo[khome]}

key[End]=${terminfo[kend]}
key[Insert]=${terminfo[kich1]}
key[Delete]=${terminfo[kdch1]}
key[Up]=${terminfo[kcuu1]}
key[Down]=${terminfo[kcud1]}
key[Left]=${terminfo[kcub1]}
key[Right]=${terminfo[kcuf1]}
key[PageUp]=${terminfo[kpp]}
key[PageDown]=${terminfo[knp]}

# configurar las teclas correctamente
[[ -n "${key[Home]}"    ]]  && bindkey  "${key[Home]}"    beginning-of-line
[[ -n "${key[End]}"     ]]  && bindkey  "${key[End]}"     end-of-line
[[ -n "${key[Insert]}"  ]]  && bindkey  "${key[Insert]}"  overwrite-mode
[[ -n "${key[Delete]}"  ]]  && bindkey  "${key[Delete]}"  delete-char
[[ -n "${key[Up]}"      ]]  && bindkey  "${key[Up]}"      up-line-or-history
[[ -n "${key[Down]}"    ]]  && bindkey  "${key[Down]}"    down-line-or-history
[[ -n "${key[Left]}"    ]]  && bindkey  "${key[Left]}"    backward-char
[[ -n "${key[Right]}"   ]]  && bindkey  "${key[Right]}"   forward-char

if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
    function zle-line-init () {
        printf '%s' "${terminfo[smkx]}"
    }
    function zle-line-finish () {
        printf '%s' "${terminfo[rmkx]}"
    }
    zle -N zle-line-init
    zle -N zle-line-finish
fi


Hay otros detalles, que colocaré cuando los logre configurar correctamente, preo con esto basta para tener una zsh funcionando correctamente, y seguir con la configuración acostumbrada dentro de nuestra bash

Luego de realizado esto, se debe editar el archivo /etc/passwd usando el comando vipw (no lo olviden). Y se cambia /bin/bash por /bin/zsh en el usuario que deseamos que use zsh luego reiniciamos la sesión y listo.