viasite-ansible.zsh

Probado en Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04, MacOS 14.4.

Probado hace tiempo: Ubuntu 18.04, MacOS 10.12, CentOS 8

Para actualizar de viasite-ansible.zsh 1.x, 2.x a 3.0, vea abajo.

Instalación sin conocimiento previo:

Si estás usando Ubuntu o Debian y no estás familiarizado con Ansible, puedes simplemente ejecutar install.sh en la máquina destino:

curl https://raw.githubusercontent.com/viasite-ansible/ansible-role-zsh/master/install.sh | bash

Esto instalará pip3, ansible y configurará zsh para el usuario root y el usuario actual.

Instalación sin conocimiento previo en MacOS:

Requisitos: brew, python. Pide la contraseña del usuario. install-macos.sh instalará ansible y configurará zsh para el usuario actual y opcionalmente para root:

curl https://raw.githubusercontent.com/viasite-ansible/ansible-role-zsh/master/install-macos.sh | bash

Luego configura la aplicación de terminal.

Incluye:

Características

  • Personaliza los segmentos y colores del tema powerlevel9k
  • Colores predeterminados probados con terminal solarized dark y gris predeterminado en putty
  • Agrega elementos de prompt personalizados desde yml
  • Configuración de zsh personalizada con ~/.zshrc.local o /etc/zshrc.local
  • Carga scripts de /etc/profile.d
  • Instala solo plugins útiles para tu máquina. Por ejemplo, el plugin docker no se instalará si no tienes Docker.

Demo de 1.5 mins

Demo de 1.5 mins

Esquemas de color

Demo de colores

Piel Solarized Dark para Midnight Commander

Si estás usando el esquema Solarized Dark y mc, deberías instalar la piel, luego establece zsh_mc_solarized_skin: yes.

Instalación de demo en Vagrant

Puedes probar el funcionamiento del rol antes de instalar en una máquina real. Simplemente ejecuta vagrant up, luego vagrant ssh para entrar en la máquina virtual.

Nota: no puedes instalar vagrant en VPS como Digital Ocean o en Docker. Usa una máquina local para ello. Descarga e instala vagrant para tu sistema operativo.

Instalación en máquina real

Instalación sin conocimiento previo: consulta arriba.

Instalación manual

  1. Instala Ansible. Para Ubuntu:
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install ansible
  1. Descarga el rol:
ansible-galaxy install viasite-ansible.zsh --force
  1. Escribe un playbook o usa playbook.yml:
- hosts: all
  vars:
    zsh_antigen_bundles_extras:
      - nvm
      - joel-porquet/zsh-dircolors-solarized
    zsh_autosuggestions_bind_key: "^U"
  roles:
    - viasite-ansible.zsh
  1. Provisión del playbook:
ansible-playbook -i "localhost," -c local -K playbook.yml

Si deseas proporcionar el rol para el usuario root en macOS, debes instalar los paquetes manualmente:

brew install zsh git wget

Esto instalará el entorno zsh para el usuario remoto de ansible. Si deseas configurar zsh para otros usuarios, debes definir la variable zsh_user:

A través del playbook:

- hosts: all
  roles:
    - { role: viasite-ansible.zsh, zsh_user: otrousuario }
    - { role: viasite-ansible.zsh, zsh_user: tercerusuario }

O a través del comando:

ansible-playbook -i hosts zsh.yml -e zsh_user=otrousuario
  1. Instala fzf sin extensiones de shell, descarga el binario o brew install fzf para macOS.

Nota: no uso tmux-fzf y no he probado su funcionamiento.

Instalación compartida para múltiples usuarios

Si tienes más de 10 usuarios en el host, probablemente no quieras gestionar decenas de configuraciones y miles de archivos.

En este caso, puedes implementar una configuración zsh única e incluirla en todos los usuarios.

Esto causa algunas limitaciones:

  • Los usuarios tienen acceso solo de lectura a la configuración de zsh
  • Los usuarios no pueden desactivar bundles habilitados globalmente
  • Posibles errores como permiso denegado para escribir en la caché
  • Posibles errores con temas de oh-my-zsh

Para instalar la configuración compartida debes establecer zsh_shared: yes. La configuración se instalará en /usr/share/zsh-config, luego solo puedes incluirla en la configuración de usuario:

Instalación para todos los usuarios

Establece zsh_source_for_all_users: yes

source /usr/share/zsh-config/.zshrc

Aún puedes provisionar configuraciones personalizadas para varios usuarios.

Configurar

¡No deberías editar ~/.zshrc! Agrega tu configuración personalizada a ~/.zshrc.local (por usuario) o /etc/zshrc.local (global). .zshrc.local nunca será tocado por ansible.

Configurar la aplicación de terminal

  1. Descarga fuentes powerline, instala la fuente que prefieras. Puedes ver capturas de pantalla aquí.

  2. Establece el esquema de color.

Personalmente, prefiero el esquema de color Solarized Dark, Droid Sans Mono para Powerline en iTerm y DejaVu Sans Mono en Putty.

iTerm

Perfiles - Texto - Cambiar fuente - seleccionar fuente "para Powerline"

Perfiles - Colores - Predeterminados de color... - seleccionar Solarized Dark

Putty

Configuraciones - Ventana - Apariencia - Configuraciones de fuente

Puedes descargar Solarized Dark para Putty.

Terminal de Gnome

El terminal de gnome tiene Solarized Dark incorporado, ten en cuenta que debes seleccionar tanto el esquema de color de fondo como el esquema de paleta.

Atajos de teclado

Puedes ver los atajos de teclado en defaults/main.yml, zsh_hotkeys.

Definiciones de atajos de teclado de ejemplo:

- { hotkey: '^r', action: 'fzf-history' }
# con dependencia de bundle
- { hotkey: '`', action: autosuggest-accept, bundle: zsh-users/zsh-autosuggestions }

Es útil establecer autosuggest-accept para `, pero entra en conflicto con Midnight Commander (rompe Ctrl+O subshell).

Puedes agregar tus atajos personalizados sin reemplazar los atajos predeterminados con la variable zsh_hotkeys_extras:

zsh_hotkeys_extras:
  - { hotkey: '^[^[[D', action: backward-word } # alt+izquierda
  - { hotkey: '^[^[[C', action: forward-word } # alt+derecha
  # Ejemplo <Ctrl+.><Ctrl+,> inserta el 2do argumento desde el final del comando previo
  - { hotkey: '^[,', action: copy-earlier-word } # ctrl+,

Alias

Puedes usar alias para tu comando con fácil implementación. La configuración de alias es casi la misma que la configuración de atajos de teclado:

zsh_aliases:
  - { alias: 'dfh', action: 'df -h | grep -v docker' }
# con dependencia de bundle y sin reemplazar los alias predeterminados
- zsh_aliases_extra
  - { alias: 'dfh', action: 'df -h | grep -v docker', bundle: }

Atajos predeterminados de los plugins:

  • - aceptar sugerencia automática
  • Ctrl+Z - mover la aplicación actual al fondo, presiona de nuevo para volver al primer plano
  • Ctrl+G - saltar a un directorio marcado. Usa mark en el directorio para agregarlo a los marcadores
  • Ctrl+R - mostrar el historial de comandos
  • Ctrl+@ - mostrar todos los widgets fzf
  • Ctrl+@,C - fzf-change-dir, ¡presiona rápido!
  • Ctrl+\ - fzf-change-recent-dir
  • Ctrl+@,G - fzf-change-repository
  • Ctrl+@,F - fzf-edit-files
  • Ctrl+@,. - fzf-edit-dotfiles
  • Ctrl+@,S - fzf-exec-ssh (usando tu ~/.ssh/config)
  • Ctrl+@,G,A - fzf-git-add-file
  • Ctrl+@,G,B - fzf-git-checkout-branch
  • Ctrl+@,G,D - fzf-git-delete-branches

Configurar bundles

Puedes revisar los bundles predeterminados en defaults/main.yml. Si te gustan los bundles predeterminados pero deseas agregar tus propios bundles, usa la variable zsh_antigen_bundles_extras (consulta el ejemplo de playbook arriba). Si deseas eliminar algunos bundles predeterminados, debes usar la variable zsh_antigen_bundles.

El formato de la lista coincide con antigen. Todas las variantes a continuación son válidas:

- docker # plugin de oh-my-zsh
- zsh-users/zsh-autosuggestions # plugin de github
- zsh-users/[email protected] # plugin de github con versión fija
- ~/projects/zsh/my-plugin --no-local-clone # plugin desde un directorio local

Ten en cuenta que los bundles pueden usar condiciones para cargar. Hay dos tipos de condiciones:

  1. Condiciones de comando. Solo agrega command al bundle:
- { name: docker, command: docker }
- name: docker-compose
  command: docker-compose

Los bundles docker y docker-compose se agregarán a la configuración solo si los comandos existen en el sistema objetivo.

  1. Condiciones de "cuando". Puedes definir cualquier condición de ansible como lo harías al definir when en las tareas:
# cargar solo para zsh >= 4.3.17
- name: zsh-users/zsh-syntax-highlighting
  when: "{{ zsh_version is version_compare('4.3.17', '>=') }}"
# cargar solo para macOS
- { name: brew, when: "{{ ansible_os_family != 'Darwin' }}" }

Nota: debes envolver la condición en "{{ }}"

Configuración personalizada

Puedes agregar cualquier código en la variable zsh_custom_before, zsh_custom_after.

  • zsh_custom_before - antes de incluir antigen.zsh
  • zsh_custom_after - antes de incluir ~/.zshrc.local

Actualización

La versión v3.0 de viasite-ansible.zsh introduce antigen v2.0, que no es compatible con versiones anteriores a antigen 1.x.

No pasé mucho tiempo en una actualización suave, por lo tanto, probablemente debas hacer algunas acciones manuales: si el prompt powerlevel9k no se carga después de provisionar el rol, deberías ejecutar antigen reset.

Tras reabrir la shell, todo debería estar listo.

Degradar a antigen v1

Antigen v2 es mucho más rápido (hasta 2 veces más rápido al iniciar), pero si algo sale mal, puedes degradar a antigen v1, consulta la nota para usuarios de zsh 4.3 a continuación.

Para usuarios con zsh 4.x

Antigen v2 no funciona en zsh < 5.0, si estás usando zsh 4.x, por favor agrega a tu playbook:

zsh_antigen_version: v1.4.1

Bugs conocidos

su username causa errores

Consulta el problema de antigen. Si tanto el root como el usuario su están usando antigen, deberías usar su - username en lugar de su username.

O puedes usar el alias incluido suser.

Además, puedes intentar solucionarlo agregando a ~/.zshrc.local:

alias su='su -'

Pero este alias puede romper tus scripts que usan su.

Acerca del proyecto

oh-my-zsh with powerlevel10k theme, fzf and other plugins

Instalar
ansible-galaxy install viasite-ansible.zsh
Licencia
mit
Descargas
46.2k
Propietario