Configuracion de zsh
Zsh tambien conovida como Z shell es un interprete de comandos para sistemas Unix, es la shell que viene por defecto en todas las mac.Es similar a la shell bash, pero en mi opinion tiene varias caracteristicas por defecto que la hacen mas moderna. Para aumentar sus capabilidades un administrador de plugins muy facil de instalar, que ya incluye varios plugins, modificaciones y alias asi como un prompt personalizado, este administrador de plugins se llama Oh-My-Zsh, lo malo de este es que yo siento que puede hacer la shell muy lenta al cargar por primera vez, asi que lo desinstale y solo agregue lo que necitaba y prompt personalizado, lo demas lo deseche y siento que ahor atengo mas control pues ahora se bien que hace cada cosa y el prompt tiene caracteristicas que no pense que podia tener asi como le quite otras que no me gustaba que tuviera.
- Cuztomizar el prompt: El prompt es el texto que aparece antes de el cursor en el terminal, y en este aparece informacion como el directorio, el estado de el proyecto de git, el tiempo que tardo en ejecutarse un comando, etc. Asi como modificar los colores y simbolos que salen, para lograr modiicar el prompt utilice un programa llamado starship, este programa soporta la mayoria de las shells y el proceso de insatlación y personalización esta en su sitio web; Yo tengo el siguiente archivo de configuración:
format = '[░▒▓█](red)[$os$username $sudo](bg:red black)[](red bg:blue)$custom$git\_status$status$cmd\_duration[](green)'
right\_format = """$character$time"""
add\_newline = false
palette = 'foo'
[palettes.foo]
red="#d12e5f"
blue="#324aa8"
orange="#ff9e64"
purple="#5a4a78"
pur="#9a348e"
green="#047e84"
[character] # The name of the module we are configuring is 'character'
success\_symbol = '[➜](bold green)'
error\_symbol = '[✗](bold red) '
[git\_status]
style="bg:orange black"
deleted="✘ ${count} "
modified="!${count} "
staged="+${count} "
ahead="⇡${count}"
untracked="?${count}"
format = "[ $all\_status$ahead\_behind ]($style)[ ](orange bg:green )"
up\_to\_date = '✓'
[status]
style = 'bg:green blink pur bold'
symbol = '🔴'
success\_symbol = '🔴'
format = '[$symbol$common\_meaning$signal\_name$maybe\_int]($style)'
map\_symbol = true
disabled = false
[sudo]
symbol = ''
disabled = false
format="as $symbol "
[time]
disabled = false
time\_format = "%H:%M"
format = "🕙$time($style) "
[username]
format="$user"
show\_always = true
[cmd\_duration]
style = 'bg:green blink pur bold'
format="[$duration]($style)"
[os]
disabled=false
format="$symbol"
[os.symbols]
Linux=" "
[custom.dir]
command = 'Dirpath'
when = true
format = '[$output]($style)[](blue bg:orange)'
style="bg:blue bold"
Lo que me da el siguiente prompt:

- Alias: Los alias es un texto definido para que la shell lo interprete como uno o varios comandos juntos con una o varias opciones, segun lo que sea definido, todos mis alias estan en mi archvio .zshrc pero aqui hay algunos
alias ls="ls --color=auto"
alias diff='diff --color'
alias gc='git commit -m'
alias ga='git add'
alias gu='git add -u'
alias gs='git status'
alias gr='git restore'
alias gd='git diff'
alias pac='sudo pacman'
alias lf='lfrun'
- Keybindings: Los keybindings son combinaciones de letras que si las presiones ejecutaran ciertos comandos, en este caso tengo Ctrl+e el cual abrira el comando que actualmente estoy escribiendo en neovim para que lo pueda editar y Ctrl+o el cual abre lf en un modo en el cual puedo buscar el directorio en el cual tengo quiero hacer un cambio, los codigos para estos son los siguientes
#&&&&&&&&&&&&&&&&& SWITCH DIRS &&&&&&&&&&&&&&&&&&&&&&&&&&
lfcd () {
tmp="$(mktemp)"
lf -last-dir-path="$tmp" "$@"
if [ -f "$tmp" ]; then
dir="$(cat "$tmp")"
rm -f "$tmp"
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
fi
}
bindkey -s '^o' 'lfcd\n'
#&&&&&&&&&&&&&&&&& Edit Line &&&&&&&&&&&&&&&&&&&&&&&&&&
autoload edit-command-line; zle -N edit-command-line
bindkey '^e' edit-command-line
* **Sugestiones:** Cuando quiero escribir un comando con un archivo si presiono **tab** zsh va a tratar de autocompletar lo que estaba tratando de escribir con una sugerencia, el motor es bastante inteligente y puede automaticamente seleccionar archivos del tipo especifico del cual el comando requiere, pero para mejorar esto le puse dos configuraciones, la cual le permite buscar en los archivo que comiencen con un "." y que no distinga entre mayusculas y minusculas, asi mismo que coloree las tipos de los archivos y que muestre el bloque blanco cuando se esta en el modo de seleccion.
autoload -U compinit
zstyle ':completion:\*' menu select
zmodload zsh/complist
compinit
\_comp\_options+=(globdots) # Include hidden files.
zstyle ':completion:\*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[.\_-]=\* r:|=\*' 'l:|=\* r:|=\*'
eval "$(dircolors)"
zstyle ':completion:\*' list-colors ${(s.:.)LS\_COLORS}
# FInalmente utilize syntax-highlighting para los comandos, para lograr esto tuve que instalar **zsh-syntax-highlighting** con pacman y luego activarlo con el siguiente codigo
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh