viasite-ansible.zsh

testé sur Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04, MacOS 14.4.

Testé il y a longtemps : Ubuntu 18.04, MacOS 10.12, CentOS 8

Pour la mise à niveau de viasite-ansible.zsh 1.x, 2.x à 3.0, voir ci-dessous.

Installation sans connaissances :

Si vous utilisez Ubuntu ou Debian et que vous n'êtes pas familier avec Ansible, vous pouvez simplement exécuter install.sh sur la machine cible :

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

Cela installera pip3, ansible et configurera zsh pour l'utilisateur root et l'utilisateur courant.

Installation sans connaissances sur MacOS :

Exigences : brew, python. Demande le mot de passe de l'utilisateur. install-macos.sh installera ansible et configurera zsh pour l'utilisateur courant et, en option, pour root :

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

Ensuite, configurer l'application terminal.

Comprend :

Fonctionnalités

  • personnaliser les segments d'invite et les couleurs du thème powerlevel9k
  • couleurs par défaut testées avec le terminal gris par défaut et le mode sombre solarisé
  • ajouter des éléments d'invite personnalisés à partir de yml
  • configuration zsh personnalisée avec ~/.zshrc.local ou /etc/zshrc.local
  • charger les scripts de /etc/profile.d
  • installer uniquement les plugins utiles pour votre machine. Par exemple, le plugin docker ne sera pas installé si vous n'avez pas Docker.

Démo de 1,5 minutes

Démo de 1,5 minutes

Schémas de couleurs

démo de couleurs

Skin Solarized Dark pour Midnight Commander

Si vous utilisez le schéma Solarized Dark et mc, vous souhaiterez probablement installer le skin, puis définir zsh_mc_solarized_skin: yes

Installation de démo dans Vagrant

Vous pouvez tester le fonctionnement du rôle avant de l'installer sur une vraie machine. Il suffit d'exécuter vagrant up, puis vagrant ssh pour entrer dans la machine virtuelle.

Remarque : vous ne pouvez pas installer vagrant sur des VPS comme Digital Ocean ou dans Docker. Utilisez une machine locale pour cela. Téléchargez et installez vagrant pour votre système d'exploitation.

Installation sur une vraie machine

Installation sans connaissances : voir ci-dessus.

Installation manuelle

  1. Installer Ansible. Pour Ubuntu :
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install ansible
  1. Télécharger le rôle :
ansible-galaxy install viasite-ansible.zsh --force
  1. Écrire un playbook ou utiliser 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. Provisionner le playbook :
ansible-playbook -i "localhost," -c local -K playbook.yml

Si vous souhaitez provisionner le rôle pour l'utilisateur root sur macOS, vous devez installer les packages manuellement :

brew install zsh git wget

Cela installera l'environnement zsh pour l'utilisateur distant ansible. Si vous souhaitez configurer zsh pour d'autres utilisateurs, vous devez définir la variable zsh_user :

Via playbook :

- hosts: all
  roles:
    - { role: viasite-ansible.zsh, zsh_user: autreutilisateur }
    - { role: viasite-ansible.zsh, zsh_user: troisiemeutilisateur }

Ou via la commande :

ansible-playbook -i hosts zsh.yml -e zsh_user=autreutilisateur
  1. Installer fzf sans extensions de shell, télécharger le binaire ou brew install fzf pour macOS.

Remarque : je n'utilise pas tmux-fzf et je n'ai pas testé son fonctionnement.

Installation partagée multiusager

Si vous avez plus de 10 utilisateurs sur l'hôte, vous ne voudrez probablement pas gérer des dizaines de configurations et des milliers de fichiers.

Dans ce cas, vous pouvez déployer une seule configuration zsh et l'inclure pour tous les utilisateurs.

Cela entraîne certaines limitations :

  • Les utilisateurs ont un accès en lecture seule à la configuration zsh
  • Les utilisateurs ne peuvent pas désactiver les bundles activés globalement
  • Bugs possibles tels que l'écriture de cache refusée
  • Bugs possibles avec les thèmes oh-my-zsh

Pour installer une configuration partagée, vous devez définir zsh_shared: yes. La configuration sera installée dans /usr/share/zsh-config, puis vous pouvez simplement l'inclure dans la configuration utilisateur :

Installation pour tous les utilisateurs

Définir zsh_source_for_all_users: yes

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

Vous pouvez également provisionner des configurations personnalisées pour plusieurs utilisateurs.

Configurer

Vous ne devez pas modifier ~/.zshrc ! Ajoutez votre configuration personnalisée à ~/.zshrc.local (par utilisateur) ou /etc/zshrc.local (global). .zshrc.local ne sera jamais touché par ansible.

Configurer l'application terminal

  1. Téléchargez les polices powerline, installez la police que vous préférez. Vous pouvez voir des captures d'écran ici.

  2. Définir le schéma de couleurs.

Personnellement, je préfère le schéma de couleurs Solarized Dark, Droid Sans Mono pour Powerline dans iTerm et DejaVu Sans Mono dans Putty.

iTerm

Profils - Texte - Changer de police - sélectionner la police "pour Powerline"

Profils - Couleurs - Préréglages de couleurs... - sélectionner Solarized Dark

Putty

Paramètres - Fenêtre - Apparence - Paramètres de police

Vous pouvez télécharger Solarized Dark pour Putty.

Gnome Terminal

gnome-terminal a un Solarized Dark intégré, notez que vous devez sélectionner à la fois le schéma de couleur de fond et le schéma de palette.

Raccourcis

Vous pouvez consulter les raccourcis dans defaults/main.yml, zsh_hotkeys.

Exemples de définitions de raccourcis :

- { hotkey: '^r', action: 'fzf-history' }
# avec dépendance d'un bundle
- { hotkey: '`', action: autosuggest-accept, bundle: zsh-users/zsh-autosuggestions }

Il est utile de définir autosuggest-accept sur la touche `, mais cela entre en conflit avec Midnight Commander (interrompt Ctrl+O shell secondaire).

Vous pouvez ajouter vos raccourcis personnalisés sans remplacer les raccourcis par défaut avec la variable zsh_hotkeys_extras :

zsh_hotkeys_extras:
  - { hotkey: '^[^[[D', action: backward-word } # alt+gauche
  - { hotkey: '^[^[[C', action: forward-word } # alt+droite
  # Exemple <Ctrl+.><Ctrl+,> insère le 2ème argument à partir de la fin de la commande précédente
  - { hotkey: '^[,', action: copy-earlier-word } # ctrl+,

Alias

Vous pouvez utiliser des alias pour vos commandes avec un déploiement facile. La configuration des alias est presque identique à celle des raccourcis :

zsh_aliases:
  - { alias: 'dfh', action: 'df -h | grep -v docker' }
# avec dépendance de bundle et sans remplacer les alias par défaut
- zsh_aliases_extra
  - { alias: 'dfh', action: 'df -h | grep -v docker', bundle: }

Raccourcis par défaut des plugins :

  • - accepter l'auto-suggestion
  • Ctrl+Z - déplacer l'application actuelle en arrière-plan, appuyer à nouveau pour revenir au premier plan
  • Ctrl+G - sauter vers le répertoire marqué. Utilisez mark dans le répertoire pour ajouter aux favoris
  • Ctrl+R - afficher l'historique des commandes
  • Ctrl+@ - afficher tous les widgets fzf
  • Ctrl+@,C - fzf-change-dir, appuyez rapidement !
  • Ctrl+\ - fzf-change-recent-dir
  • Ctrl+@,G - fzf-change-repository
  • Ctrl+@,F - fzf-edit-files
  • Ctrl+@,. - fzf-edit-dotfiles
  • Ctrl+@,S - fzf-exec-ssh (à l'aide de votre ~/.ssh/config)
  • Ctrl+@,G,A - fzf-git-add-file
  • Ctrl+@,G,B - fzf-git-checkout-branch
  • Ctrl+@,G,D - fzf-git-delete-branches

Configurer les bundles

Vous pouvez vérifier les bundles par défaut dans defaults/main.yml. Si vous aimez les bundles par défaut, mais que vous souhaitez ajouter vos bundles, utilisez la variable zsh_antigen_bundles_extras (voir l'exemple de playbook ci-dessus). Si vous souhaitez supprimer certains bundles par défaut, vous devez utiliser la variable zsh_antigen_bundles.

Le format de la liste correspond à antigen. Toutes les variantes ci-dessous sont valides :

- docker # plugin oh-my-zsh
- zsh-users/zsh-autosuggestions # plugin de github
- zsh-users/[email protected] # plugin de github avec version fixe
- ~/projects/zsh/my-plugin --no-local-clone # plugin à partir du répertoire local

Notez que les bundles peuvent utiliser des conditions pour le chargement. Il existe deux types de conditions :

  1. Conditions de commande. Ajoutez simplement command au bundle :
- { name: docker, command: docker }
- name: docker-compose
  command: docker-compose

Les bundles docker et docker-compose seront ajoutés à la configuration uniquement si les commandes existent sur le système cible.

  1. Conditions when. Vous pouvez définir n'importe quelle condition ansible comme vous le faites dans when dans les tâches :
# charger uniquement pour zsh >= 4.3.17
- name: zsh-users/zsh-syntax-highlighting
  when: "{{ zsh_version is version_compare('4.3.17', '>=') }}"
# charger uniquement pour macOS
- { name: brew, when: "{{ ansible_os_family != 'Darwin' }}" }

Remarque : vous devez envelopper la condition dans "{{ }}"

Configuration personnalisée

Vous pouvez ajouter n'importe quel code dans les variables zsh_custom_before, zsh_custom_after.

  • zsh_custom_before - avant d'inclure antigen.zsh
  • zsh_custom_after - avant d'inclure ~/.zshrc.local

Mise à niveau

La version 3.0 de viasite-ansible.zsh introduit antigen v2.0, qui n'est pas compatible avec antigen 1.x.

Je n'ai pas passé beaucoup de temps pour assurer une mise à niveau fluide, donc vous devriez probablement effectuer certaines actions manuelles : si l'invite powerlevel9k ne se charge pas après le provisionnement du rôle, vous devez exécuter antigen reset.

Après avoir rouvert le shell, tout devrait être terminé.

Rétrogradation à antigen v1

Antigen v2 est beaucoup plus rapide (jusqu'à 2 fois plus rapide au démarrage), mais si quelque chose ne va pas, vous pouvez rétrograder à antigen v1, voir la note pour les utilisateurs de zsh 4.3 ci-dessous.

Pour les utilisateurs avec zsh 4.x

Antigen v2 ne fonctionne pas sur zsh < 5.0, si vous utilisez zsh 4.x, veuillez ajouter à votre playbook :

zsh_antigen_version: v1.4.1

Bugs connus

Erreurs causées par su username

Voir problème d'antigen. Si à la fois root et l'utilisateur su utilisent antigen, vous devez utiliser su - username à la place de su username.

Ou vous pouvez utiliser l'alias regroupé suser.

De plus, vous pouvez essayer de le corriger, ajoutez à ~/.zshrc.local :

alias su='su -'

Mais cet alias peut casser vos scripts utilisant su.

À propos du projet

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

Installer
ansible-galaxy install viasite-ansible.zsh
Licence
mit
Téléchargements
46.2k
Propriétaire