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:

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

1.5 minutowa demonstracja

Schematy kolorów

demonstacja 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

  1. Zainstaluj Ansible. Dla Ubuntu:
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install ansible
  1. Pobierz rolę:
ansible-galaxy install viasite-ansible.zsh --force
  1. 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
  1. 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
  1. 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

  1. Pobierz czcionki powerline i zainstaluj preferowaną czcionkę. Możesz zobaczyć zrzuty ekranowe tutaj.

  2. 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:

  1. 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.

  1. Warunki when. Możesz zdefiniować dowolne warunki ansible, tak jak definiujesz w when 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.

O projekcie

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

Zainstaluj
ansible-galaxy install viasite-ansible.zsh
Licencja
mit
Pobrania
46.2k
Właściciel