viasite-ansible.zsh
Przetestowane na: Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04, MacOS 14.4.
Dawno przetestowane: Ubuntu 18.04, MacOS 10.12, CentOS 8
Aby przeprowadzić aktualizację z viasite-ansible.zsh 1.x, 2.x do 3.0, zobacz poniżej.
Instalacja bez wiedzy o systemie:
Jeśli używasz Ubuntu lub Debiana i nie jesteś zaznajomiony z Ansible, możesz po prostu wykonać install.sh na docelowej maszynie:
curl https://raw.githubusercontent.com/viasite-ansible/ansible-role-zsh/master/install.sh | bash
Zainstaluje to pip3, ansible i skonfiguruje zsh dla użytkownika root oraz aktualnego użytkownika.
Instalacja bez wiedzy o systemie na MacOS:
Wymagania: brew, python. Zostanie poproszony o hasło użytkownika. install-macos.sh zainstaluje ansible i skonfiguruje zsh dla aktualnego użytkownika, opcjonalnie również dla roota:
curl https://raw.githubusercontent.com/viasite-ansible/ansible-role-zsh/master/install-macos.sh | bash
Następnie skonfiguruj aplikację terminala.
Zawiera:
- zsh
- antigen
- oh-my-zsh
- motyw powerlevel9k
- zsh-autosuggestions
- zsh-syntax-highlighting
- unixorn/autoupdate-antigen.zshplugin
- sorenson-axial/fzf-widgets
- urbainvaes/fzf-marks
Funkcje
- personalizacja segmentów i kolorów motywu powerlevel9k
- domyślne kolory przetestowane z ciemnym kolorem solarized oraz domyślnym szarym terminalem w putty
- dodawanie własnych elementów polecenia z yml
- niestandardowa konfiguracja zsh w
~/.zshrc.local
lub/etc/zshrc.local
- ładowanie skryptów z
/etc/profile.d
- instalowanie tylko pluginów przydatnych dla twojej maszyny. Na przykład, plugin
docker
nie zostanie zainstalowany, jeśli nie masz Dockera.
1.5 minutowa demonstracja
Schematy kolorów
Skórka Midnight Commander Solarized Dark
Jeśli używasz schematu Solarized Dark i mc
, powinieneś zainstalować skórkę, a następnie ustawić zsh_mc_solarized_skin: yes
.
Instalacja demonstracyjna w Vagrant
Możesz przetestować działanie roli przed instalacją na rzeczywistej maszynie.
Wystarczy wykonać vagrant up
, a następnie vagrant ssh
, aby wejść do wirtualnej maszyny.
Uwaga: nie możesz zainstalować vagranta na VPS, takich jak Digital Ocean lub w Dockerze. Użyj lokalnej maszyny do tego. Pobierz i zainstaluj vagranta dla swojego systemu operacyjnego.
Instalacja na rzeczywistej maszynie
Instalacja bez wiedzy: patrz wyżej.
Ręczna instalacja
- Zainstaluj Ansible. Dla Ubuntu:
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install ansible
- Pobierz rolę:
ansible-galaxy install viasite-ansible.zsh --force
- Napisz playbook lub skorzystaj z playbook.yml:
- hosts: all
vars:
zsh_antigen_bundles_extras:
- nvm
- joel-porquet/zsh-dircolors-solarized
zsh_autosuggestions_bind_key: "^U"
roles:
- viasite-ansible.zsh
- Przeprowadź provisioning playbooka:
ansible-playbook -i "localhost," -c local -K playbook.yml
Jeśli chcesz przeprowadzić provisioning roli dla użytkownika root na macOS, musisz zainstalować pakiety ręcznie:
brew install zsh git wget
To zainstaluje środowisko zsh dla zdalnego użytkownika ansible. Jeśli chcesz skonfigurować zsh dla innych użytkowników,
musisz zdefiniować zmienną zsh_user
:
Via playbook:
- hosts: all
roles:
- { role: viasite-ansible.zsh, zsh_user: otheruser }
- { role: viasite-ansible.zsh, zsh_user: thirduser }
Lub przez komendę:
ansible-playbook -i hosts zsh.yml -e zsh_user=otheruser
- Zainstaluj fzf bez rozszerzeń powłoki, pobierz binarkę
lub
brew install fzf
dla macOS.
Uwaga: Nie używam tmux-fzf
i nie przetestowałem jego działania.
Wspólna instalacja dla wielu użytkowników
Jeśli masz 10+ użytkowników na hoście, prawdopodobnie nie chcesz zarządzać dziesiątkami konfiguracji i tysiącami plików.
W takim przypadku możesz wdrożyć pojedynczą konfigurację zsh i włączyć ją dla wszystkich użytkowników.
To wiąże się z pewnymi ograniczeniami:
- Użytkownicy mają tylko dostęp do odczytu do konfiguracji zsh
- Użytkownicy nie mogą wyłączyć globalnie włączonych bundle'ów
- Możliwe błędy, takie jak odmowa zapisu w pamięci podręcznej
- Możliwe błędy z motywami oh-my-zsh
Aby zainstalować wspólną konfigurację, musisz ustawić zsh_shared: yes
.
Konfiguracja zostanie zainstalowana w /usr/share/zsh-config
, następnie możesz ją włączyć do konfiguracji użytkowników.
Instalacja dla wszystkich użytkowników
Ustaw zsh_source_for_all_users: yes
source /usr/share/zsh-config/.zshrc
Możesz nadal wdrażać niestandardowe konfiguracje dla kilku użytkowników.
Konfiguracja
Nie powinieneś edytować ~/.zshrc
!
Dodaj swoją niestandardową konfigurację do ~/.zshrc.local
(dla użytkownika) lub /etc/zshrc.local
(globalnie).
.zshrc.local
nigdy nie zostanie zmienione przez ansible.
Konfiguracja aplikacji terminala
Pobierz czcionki powerline i zainstaluj preferowaną czcionkę. Możesz zobaczyć zrzuty ekranowe tutaj.
Ustaw schemat kolorów.
Osobiście preferuję ciemny schemat kolorów Solarized, Droid Sans Mono dla Powerline w iTerm i DejaVu Sans Mono w Putty.
iTerm
Profile - Tekst - Zmień czcionkę - wybierz czcionkę "dla Powerline"
Profile - Kolory - Ustawienia kolorów... - wybierz Solarized Dark
Putty
Ustawienia - Okno - Wygląd - Ustawienia czcionek
Możesz pobrać Solarized Dark dla Putty.
Gnome Terminal
gnome-terminal ma wbudowany ciemny schemat Solarized, pamiętaj, aby wybrać zarówno schemat kolorów tła, jak i palety.
Skróty klawiszowe
Możesz zobaczyć skróty klawiszowe w defaults/main.yml, zsh_hotkeys
.
Przykładowe definicje skrótów klawiszowych:
- { hotkey: '^r', action: 'fzf-history' }
# z zależnością od bundle'a
- { hotkey: '`', action: autosuggest-accept, bundle: zsh-users/zsh-autosuggestions }
Przydatne jest ustawienie autosuggest-accept
na skrót klawiszowy `, ale koliduje to z Midnight Commander (zamyka Ctrl+O subshell).
Możesz dodać własne skróty klawiszowe bez zastępowania domyślnych skrótów, używając zmiennej zsh_hotkeys_extras
:
zsh_hotkeys_extras:
- { hotkey: '^[^[[D', action: backward-word } # alt+lewo
- { hotkey: '^[^[[C', action: forward-word } # alt+prawo
# Przykład <Ctrl+.><Ctrl+,> wstawia 2 argument z końca poprzedniego polecenia
- { hotkey: '^[,', action: copy-earlier-word } # ctrl+,
Alias
Możesz używać aliasów dla swoich poleceń z łatwym wdrożeniem. Konfiguracja aliasów jest w dużej mierze taka sama jak konfiguracja skrótów:
zsh_aliases:
- { alias: 'dfh', action: 'df -h | grep -v docker' }
# z zależnością od bundle'a i bez zastępowania domyślnych aliasów
- zsh_aliases_extra
- { alias: 'dfh', action: 'df -h | grep -v docker', bundle: }
Domyślne skróty klawiszowe z pluginów:
- → - akceptuj podpowiedź
- Ctrl+Z - przeniesienie aktualnej aplikacji do tła, naciśnij ponownie, aby wrócić do tła
- Ctrl+G - skok do zakładkowanej lokalizacji. Użyj
mark
w katalogu, aby dodać do zakładek - Ctrl+R - wyświetlenie historii poleceń
- Ctrl+@ - wyświetlenie wszystkich fzf-widgetów
- Ctrl+@,C - fzf-change-dir, naciśnij szybko!
- Ctrl+\ - fzf-change-recent-dir
- Ctrl+@,G - fzf-change-repository
- Ctrl+@,F - fzf-edit-files
- Ctrl+@,. - fzf-edit-dotfiles
- Ctrl+@,S - fzf-exec-ssh (przy użyciu twojego ~/.ssh/config)
- Ctrl+@,G,A - fzf-git-add-file
- Ctrl+@,G,B - fzf-git-checkout-branch
- Ctrl+@,G,D - fzf-git-delete-branches
Konfiguracja bundle'ów
Możesz sprawdzić domyślne bundle w defaults/main.yml.
Jeśli lubisz domyślne bundle, ale chcesz dodać własne, użyj zmiennej zsh_antigen_bundles_extras
(zobacz przykładowy playbook powyżej).
Jeśli chcesz usunąć niektóre domyślne bundle, powinieneś użyć zmiennej zsh_antigen_bundles
.
Format listy odpowiada antigen. Wszystkie poniższe warianty są poprawne:
- docker # plugin oh-my-zsh
- zsh-users/zsh-autosuggestions # plugin z githuba
- zsh-users/[email protected] # plugin z githuba z określoną wersją
- ~/projects/zsh/my-plugin --no-local-clone # plugin z lokalnego katalogu
Pamiętaj, że bundle mogą używać warunków do ładowania. Istnieją dwa rodzaje warunków:
- Warunki komend. Po prostu dodaj
command
do bundle:
- { name: docker, command: docker }
- name: docker-compose
command: docker-compose
Bundle docker
i docker-compose
zostaną dodane do konfiguracji tylko wtedy, gdy komendy istnieją w systemie docelowym.
- Warunki
when
. Możesz zdefiniować dowolne warunki ansible, tak jak definiujesz wwhen
w zadaniach:
# ładowanie tylko dla zsh >= 4.3.17
- name: zsh-users/zsh-syntax-highlighting
when: "{{ zsh_version is version_compare('4.3.17', '>=') }}"
# ładowanie tylko dla macOS
- { name: brew, when: "{{ ansible_os_family != 'Darwin' }}" }
Uwaga: powinieneś otoczyć warunek w "{{ }}"
.
Niestandardowa konfiguracja
Możesz dodać dowolny kod w zmiennych zsh_custom_before
, zsh_custom_after
.
- zsh_custom_before - przed dołączeniem antigen.zsh
- zsh_custom_after - przed dołączeniem ~/.zshrc.local
Aktualizacja
Wersja viasite-ansible.zsh v3.0 wprowadza antigen v2.0, który nie ma zgodności wstecznej z antigen 1.x.
Nie poświęciłem dużo czasu na płynne aktualizacje, dlatego prawdopodobnie będziesz musiał wykonać pewne ręczne działania:
jeśli motyw powerlevel9k nie załadował się po wdrożeniu roli, powinieneś wykonać antigen reset
.
Po ponownym otworzeniu powłoki wszystko powinno działać poprawnie.
Downgrade do antigen v1
Antigen v2 jest znacznie szybszy (do 2x szybszy start), ale jeśli coś poszło nie tak, możesz zredukować do antigen v1, zobacz notatkę dla użytkowników z zsh 4.3 poniżej.
Dla użytkowników z zsh 4.x
Antigen v2 nie działa na zsh < 5.0, jeśli korzystasz z zsh 4.x, dodaj do swojego playbooka:
zsh_antigen_version: v1.4.1
Znane błędy
su username
powoduje błędy
Zobacz problem antigen.
Jeśli zarówno root, jak i użytkownik zsu używają antigen, powinieneś użyć su - username
zamiast su username
.
Możesz także spróbować naprawić to, dodając do ~/.zshrc.local
:
alias su='su -'
Jednak ten alias może zablokować twoje skrypty, które używają su
.
ansible-galaxy install viasite-ansible.zsh