viasite-ansible.zsh

Getestet auf Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04, MacOS 14.4.

Lange her getestet: Ubuntu 18.04, MacOS 10.12, CentOS 8

Für das Upgrade von viasite-ansible.zsh 1.x, 2.x auf 3.0 siehe unten.

Null-Wissen-Installation:

Wenn Sie Ubuntu oder Debian verwenden und nicht mit Ansible vertraut sind, können Sie einfach install.sh auf der Zielmaschine ausführen:

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

Es installiert pip3, ansible und richtet zsh für den Root- und aktuellen Benutzer ein.

MacOS Null-Wissen-Installation:

Voraussetzungen: brew, python. Fragt nach dem Passwort des Benutzers. install-macos.sh installiert ansible und richtet zsh für den aktuellen Benutzer und optional für root ein:

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

Dann konfigurieren Sie die Terminal-Anwendung.

Beinhaltet:

Funktionen

  • Anpassen von Powerlevel9k-Thema-Promptersegmenten und -farben
  • Standardfarben getestet mit solarized dark und standard grau im putty
  • Hinzufügen benutzerdefinierter Promptelemente aus yml
  • Benutzerdefinierte zsh-Konfiguration mit ~/.zshrc.local oder /etc/zshrc.local
  • Laden der Skripte aus /etc/profile.d
  • Installieren Sie nur Plugins, die für Ihren Computer nützlich sind. Zum Beispiel wird das Plugin docker nicht installiert, wenn Sie Docker nicht haben.

1,5 Minuten Demo

1,5 Minuten Demo

Farbschemata

Farben Demo

Midnight Commander Solarized Dark Haut

Wenn Sie das Solarized Dark-Schema und mc verwenden, möchten Sie möglicherweise ein Skin installieren, dann setzen Sie zsh_mc_solarized_skin: yes.

Demo-Installation in Vagrant

Sie können die Rolle vor der Installation auf einem echten Computer testen. Führen Sie einfach vagrant up aus, dann vagrant ssh, um in die virtuelle Maschine einzugeben.

Hinweis: Sie können Vagrant nicht auf VPS wie Digital Ocean oder in Docker installieren. Verwenden Sie dafür den lokalen Computer. Laden Sie Vagrant herunter und installieren Sie es für Ihr Betriebssystem.

Installation auf einem echten Computer

Null-Wissen-Installation: siehe oben.

Manuelle Installation

  1. Installieren Sie Ansible. Für Ubuntu:
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install ansible
  1. Rolle herunterladen:
ansible-galaxy install viasite-ansible.zsh --force
  1. Schreiben Sie ein Playbook oder verwenden Sie 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. Provisionieren Sie das Playbook:
ansible-playbook -i "localhost," -c local -K playbook.yml

Wenn Sie die Rolle für den Root-Benutzer auf macOS bereitstellen möchten, sollten Sie die Pakete manuell installieren:

brew install zsh git wget

Es wird die zsh-Umgebung für den ansible-remote-Benutzer installieren. Wenn Sie zsh für andere Benutzer einrichten möchten, sollten Sie die Variable zsh_user definieren:

Über das Playbook:

- hosts: all
  roles:
    - { role: viasite-ansible.zsh, zsh_user: otheruser }
    - { role: viasite-ansible.zsh, zsh_user: thirduser }

Oder über den Befehl:

ansible-playbook -i hosts zsh.yml -e zsh_user=otheruser
  1. Installieren Sie fzf ohne Shell-Erweiterungen, laden Sie die Binärdatei herunter oder brew install fzf für macOS.

Hinweis: Ich verwende tmux-fzf nicht und habe dessen Funktionalität nicht getestet.

Multiuser-geteilte Installation

Wenn Sie 10+ Benutzer auf dem Host haben, möchten Sie wahrscheinlich nicht Hunderte von Konfigurationen und Tausende von Dateien verwalten.

In diesem Fall können Sie eine einzige zsh-Konfiguration bereitstellen und sie allen Benutzern hinzufügen.

Dies bringt einige Einschränkungen mit sich:

  • Benutzer haben nur Lesezugriff auf die zsh-Konfiguration
  • Benutzer können global aktivierte Bundles nicht deaktivieren
  • Mögliche Fehler wie Schreibberechtigungen im Cache
  • Mögliche Fehler mit oh-my-zsh-Themen

Für die Installation der gemeinsamen Konfiguration sollten Sie zsh_shared: yes einstellen. Die Konfiguration wird nach /usr/share/zsh-config installiert, dann können Sie sie einfach in die Benutzerkonfiguration einfügen:

Installation für alle Benutzer

Setzen Sie zsh_source_for_all_users: yes

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

Sie können weiterhin benutzerdefinierte Konfigurationen für mehrere Benutzer bereitstellen.

Konfiguration

Sie sollten ~/.zshrc nicht bearbeiten! Fügen Sie Ihre benutzerdefinierte Konfiguration zu ~/.zshrc.local (pro Benutzer) oder /etc/zshrc.local (global) hinzu. .zshrc.local wird niemals von ansible berührt.

Konfigurieren Sie die Terminal-Anwendung

  1. Laden Sie Powerline-Schriftarten herunter und installieren Sie die Schriftart, die Sie bevorzugen. Sie können Bildschirmfotos hier sehen.

  2. Stellen Sie das Farbschema ein.

Persönlich bevorzuge ich das Solarized Dark-Farbschema, Droid Sans Mono für Powerline in iTerm und DejaVu Sans Mono in Putty.

iTerm

Profiles - Text - Schriftart ändern - Schriftart "für Powerline" auswählen

Profiles - Farben - Farbvoreinstellungen... - Solarized Dark auswählen

Putty

Einstellungen - Fenster - Aussehen - Schriftarteinstellungen

Sie können Solarized Dark für Putty herunterladen.

Gnome Terminal

gnome-terminal hat Solarized Dark eingebaut, beachten Sie, dass Sie sowohl das Hintergrundfarbschema als auch das Paletten-Schema auswählen sollten.

Tastenkombinationen

Sie können die Tastenkombinationen in defaults/main.yml sehen, zsh_hotkeys.

Beispiel für Tastenkombinationen:

- { hotkey: '^r', action: 'fzf-history' }
# mit Abhängigkeit von Bundle
- { hotkey: '`', action: autosuggest-accept, bundle: zsh-users/zsh-autosuggestions }

Es ist nützlich, autosuggest-accept auf ` festzulegen, aber es kann mit Midnight Commander in Konflikt stehen (bricht Ctrl+O-Subshell).

Sie können Ihre benutzerdefinierten Tastenkombinationen ohne Ersetzung der Standard-Tastenkombinationen mit der Variable zsh_hotkeys_extras hinzufügen:

zsh_hotkeys_extras:
  - { hotkey: '^[^[[D', action: backward-word } # alt+links
  - { hotkey: '^[^[[C', action: forward-word } # alt+rechts
  # Beispiel <Ctrl+.><Ctrl+,> fügt das 2. Argument vom Ende des vorherigen Befehls ein
  - { hotkey: '^[,', action: copy-earlier-word } # ctrl+,

Aliase

Sie können Aliase für Ihren Befehl einfach bereitstellen. Die Alias-Konfiguration ist weitgehend identisch mit der Tastenkombinationskonfiguration:

zsh_aliases:
  - { alias: 'dfh', action: 'df -h | grep -v docker' }
# mit Abhängigkeit von Bundle und ohne die Standard-Alias zu ersetzen
- zsh_aliases_extra
  - { alias: 'dfh', action: 'df -h | grep -v docker', bundle: }

Standard-Tastenkombinationen von Plugins:

  • - akzeptiert die Autosuggestion
  • Ctrl+Z - bewegt die aktuelle Anwendung in den Hintergrund, beim erneuten Drücken wird sie wieder in den Vordergrund geholt
  • Ctrl+G - springt zum Lesezeichenverzeichnis. Verwenden Sie mark im Verzeichnis, um es zu den Lesezeichen hinzuzufügen
  • Ctrl+R - zeigt die Befehlshistorie an
  • Ctrl+@ - zeigt alle fzf-Widgets an
  • Ctrl+@,C - fzf-change-dir, schnell drücken!
  • Ctrl+\ - fzf-change-recent-dir
  • Ctrl+@,G - fzf-change-repository
  • Ctrl+@,F - fzf-edit-files
  • Ctrl+@,. - fzf-edit-dotfiles
  • Ctrl+@,S - fzf-exec-ssh (unter Verwendung Ihrer ~/.ssh/config)
  • Ctrl+@,G,A - fzf-git-add-file
  • Ctrl+@,G,B - fzf-git-checkout-branch
  • Ctrl+@,G,D - fzf-git-delete-branches

Bündel konfigurieren

Sie können die Standard-Bundles in defaults/main.yml überprüfen. Wenn Sie die Standard-Bundles mögen, aber Ihre Bundles hinzufügen möchten, verwenden Sie die Variable zsh_antigen_bundles_extras (siehe Beispiel-Playbook oben). Wenn Sie einige Standard-Bundles entfernen möchten, verwenden Sie die Variable zsh_antigen_bundles.

Das Format der Liste entspricht antigen. Alle folgenden Varianten sind gültig:

- docker # oh-my-zsh Plugin
- zsh-users/zsh-autosuggestions # Plugin von github
- zsh-users/[email protected] # Plugin von github mit fester Version
- ~/projects/zsh/my-plugin --no-local-clone # Plugin aus lokalem Verzeichnis

Beachten Sie, dass Bundles Bedingungen für das Laden verwenden können. Es gibt zwei Arten von Bedingungen:

  1. Befehlsbedingungen. Fügen Sie einfach command zum Bundle hinzu:
- { name: docker, command: docker }
- name: docker-compose
  command: docker-compose

Die Bundles docker und docker-compose werden nur dann zur Konfiguration hinzugefügt, wenn die Befehle im Zielsystem vorhanden sind.

  1. Wenn-Bedingungen. Sie können beliebige Ansible-Bedingungen definieren, wie Sie sie in when in Tasks definieren:
# nur laden für zsh >= 4.3.17
- name: zsh-users/zsh-syntax-highlighting
  when: "{{ zsh_version is version_compare('4.3.17', '>=') }}"
# nur laden für macOS
- { name: brew, when: "{{ ansible_os_family != 'Darwin' }}" }

Hinweis: Sie sollten die Bedingung in "{{ }}" einfügen.

Benutzerdefinierte Konfiguration

Sie können beliebigen Code in die Variablen zsh_custom_before, zsh_custom_after hinzufügen.

  • zsh_custom_before - bevor antigen.zsh eingefügt wird
  • zsh_custom_after - bevor ~/.zshrc.local eingefügt wird

Upgrade

Die Version 3.0 von viasite-ansible.zsh führt antigen v2.0 ein, das nicht rückwärtskompatibel zu antigen 1.x ist.

Ich habe nicht viel Zeit für ein reibungsloses Upgrade aufgewendet, daher sollten Sie wahrscheinlich einige manuelle Aktionen durchführen: Wenn die Powerlevel9k-Eingabeaufforderung nach dem Bereitstellen der Rolle nicht geladen wird, sollten Sie antigen reset ausführen.

Nach dem erneuten Öffnen der Shell sollte alles erledigt sein.

Downgrade auf antigen v1

Antigen v2 ist viel schneller (bis zu 2x schnellere Startzeit), aber wenn etwas schiefgeht, können Sie auf antigen v1 downgraden, siehe Hinweis für zsh 4.3-Nutzer unten.

Für Benutzer mit zsh 4.x

Antigen v2 funktioniert nicht mit zsh < 5.0, wenn Sie zsh 4.x verwenden, fügen Sie bitte Ihrem Playbook Folgendes hinzu:

zsh_antigen_version: v1.4.1

Bekannte Fehler

su username verursacht Fehler

Siehe Antigen-Problem. Wenn sowohl der root- als auch der su-Benutzer antigen verwenden, sollten Sie su - username anstelle von su username verwenden.

Oder Sie können das gebündelte Alias suser verwenden.

Außerdem können Sie versuchen, es zu beheben, indem Sie Folgendes zu ~/.zshrc.local hinzufügen:

alias su='su -'

Aber dieses Alias kann Ihre Skripte brechen, die su verwenden.

Über das Projekt

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

Installieren
ansible-galaxy install viasite-ansible.zsh
Lizenz
mit
Downloads
46.2k
Besitzer