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:
- zsh
- antigen
- oh-my-zsh
- powerlevel9k-Thema
- zsh-autosuggestions
- zsh-syntax-highlighting
- unixorn/autoupdate-antigen.zshplugin
- sorenson-axial/fzf-widgets
- urbainvaes/fzf-marks
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
Farbschemata
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
- Installieren Sie Ansible. Für Ubuntu:
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install ansible
- Rolle herunterladen:
ansible-galaxy install viasite-ansible.zsh --force
- 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
- 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
- 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
Laden Sie Powerline-Schriftarten herunter und installieren Sie die Schriftart, die Sie bevorzugen. Sie können Bildschirmfotos hier sehen.
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:
- 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.
- 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.
oh-my-zsh with powerlevel10k theme, fzf and other plugins
ansible-galaxy install viasite-ansible.zsh