zsh

Проверено на Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04, MacOS 14.4.

Проверено давно: Ubuntu 18.04, MacOS 10.12, CentOS 8

Для обновления с viasite-ansible.zsh 1.x, 2.x на 3.0 смотрите ниже.

Установка без предварительных знаний:

Если вы используете Ubuntu или Debian и не знакомы с Ansible, вы можете просто выполнить install.sh на целевой машине:

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

Это установит pip3, ansible и настроит zsh для root и текущего пользователя.

Установка без предварительных знаний для MacOS:

Требования: brew, python. Запрашивает пароль пользователя. install-macos.sh установит ansible и настроит zsh для текущего пользователя и, при необходимости, для root:

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

Затем настройте терминальное приложение.

Включает:

Особенности

  • настраивайте сегменты и цвета темы powerlevel9k
  • протестированные цвета с темной схемой solarized и стандартным серым терминалом в putty
  • добавляйте пользовательские элементы запроса из файла yml
  • настраиваемый конфиг zsh с ~/.zshrc.local или /etc/zshrc.local
  • загружайте скрипты из /etc/profile.d
  • устанавливайте только плагины, которые полезны для вашей машины. Например, плагин docker не будет установлен, если у вас нет Docker.

Демонстрация за 1.5 минуты

Демонстрация за 1.5 минуты

Цветовые схемы

демонстрация цветов

Темная тема Midnight Commander Solarized

Если вы используете схему Solarized Dark и mc, вам нужно установить тему, затем установить zsh_mc_solarized_skin: yes.

Демонстрационная установка в Vagrant

Вы можете протестировать работу роли перед установкой на реальную машину. Просто выполните vagrant up, затем vagrant ssh, чтобы войти в виртуальную машину.

Примечание: вы не можете установить vagrant на VPS, таких как Digital Ocean или в Docker. Используйте локальную машину для этого. Скачайте и установите vagrant для вашей операционной системы.

Установка на реальную машину

Установка без предварительных знаний: смотрите выше.

Ручная установка

  1. Установите Ansible. Для Ubuntu:
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install ansible
  1. Скачайте роль:
ansible-galaxy install viasite-ansible.zsh --force
  1. Напишите плейбук или используйте 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. Выполните плейбук:
ansible-playbook -i "localhost," -c local -K playbook.yml

Если вы хотите настроить роль для пользователя root на macOS, вы должны установить пакеты вручную:

brew install zsh git wget

Это установит окружение zsh для удаленного пользователя ansible. Если вы хотите настроить zsh для других пользователей, вы должны определить переменную zsh_user:

Через плейбук:

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

Или через команду:

ansible-playbook -i hosts zsh.yml -e zsh_user=otheruser
  1. Установите fzf без расширений для оболочки, скачайте двоичный файл или выполните brew install fzf для macOS.

Примечание: я не использую tmux-fzf и не проверял его работу.

Множественная установка для пользователей

Если у вас более 10 пользователей на хосте, вероятно, вы не хотите управлять десятками конфигураций и тысячами файлов.

В этом случае вы можете развернуть единую конфигурацию zsh и включить её для всех пользователей.

Это вызывает некоторые ограничения:

  • У пользователей есть доступ только для чтения к zsh конфигам
  • Пользователи не могут отключить глобально включенные пакеты
  • Возможны ошибки, такие как отказ в разрешении на запись к кэшу
  • Возможны ошибки с темами oh-my-zsh

Для установки общей конфигурации вы должны установить zsh_shared: yes. Конфигурация будет установлена в /usr/share/zsh-config, затем вы просто можете включить её в конфигурации пользователей:

Установка для всех пользователей

Установите zsh_source_for_all_users: yes

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

Вы все еще можете настроить пользовательские конфигурации для нескольких пользователей.

Настройка

Вам не следует редактировать ~/.zshrc! Добавьте вашу пользовательскую конфигурацию в ~/.zshrc.local (для пользователя) или /etc/zshrc.local (глобально). .zshrc.local никогда не будет изменен ansible.

Настройка терминального приложения

  1. Скачайте шрифты powerline, установите шрифт по вашему выбору. Вы можете увидеть скриншоты здесь.

  2. Установите цветовую схему.

Лично я предпочитаю темную цветовую схему Solarized, шрифт Droid Sans Mono для Powerline в iTerm и DejaVu Sans Mono в Putty.

iTerm

Профили - Текст - Изменить шрифт - выберите шрифт "для Powerline"

Профили - Цвета - Цветовые пресеты... - выберите Solarized Dark

Putty

Настройки - Окно - Внешний вид - Настройки шрифта

Вы можете скачать Solarized Dark для Putty.

Gnome Terminal

gnome-terminal имеет встроенный Solarized Dark, имейте в виду, что вы должны выбрать как цветовую схему фона, так и палитру.

Горячие клавиши

Вы можете просмотреть горячие клавиши в defaults/main.yml, zsh_hotkeys.

Примеры определений горячих клавиш:

- { hotkey: '^r', action: 'fzf-history' }
# с зависимостью от пакета
- { hotkey: '`', action: autosuggest-accept, bundle: zsh-users/zsh-autosuggestions }

Полезно установить autosuggest-accept на клавишу `, но это конфликтует с Midnight Commander (прерывает подпроцесс Ctrl+O).

Вы можете добавить ваши собственные горячие клавиши, не заменяя стандартные с переменной zsh_hotkeys_extras:

zsh_hotkeys_extras:
  - { hotkey: '^[^[[D', action: backward-word } # alt+left
  - { hotkey: '^[^[[C', action: forward-word } # alt+right
  # Пример <Ctrl+.><Ctrl+,> вставляет 2-й аргумент с конца предыдущей команды
  - { hotkey: '^[,', action: copy-earlier-word } # ctrl+,

Псевдонимы

Вы можете использовать псевдонимы для своих команд с легким развертыванием. Конфигурация псевдонимов в основном такая же, как и конфигурация горячих клавиш:

zsh_aliases:
  - { alias: 'dfh', action: 'df -h | grep -v docker' }
# с зависимостью от пакета и без замены стандартных псевдонимов
- zsh_aliases_extra
  - { alias: 'dfh', action: 'df -h | grep -v docker', bundle: }

Стандартные горячие клавиши от плагинов:

  • - принять автозаполнение
  • Ctrl+Z - переместить текущее приложение в фон, нажмите снова для возврата на передний план
  • Ctrl+G - перейти к закладке. Используйте mark в директории, чтобы добавить в закладки
  • Ctrl+R - показать историю команд
  • Ctrl+@ - показать все виджеты fzf
  • Ctrl+@,C - fzf-change-dir, нажмите быстро!
  • Ctrl+\ - fzf-change-recent-dir
  • Ctrl+@,G - fzf-change-repository
  • Ctrl+@,F - fzf-edit-files
  • Ctrl+@,. - fzf-edit-dotfiles
  • Ctrl+@,S - fzf-exec-ssh (используя ваш ~/.ssh/config)
  • Ctrl+@,G,A - fzf-git-add-file
  • Ctrl+@,G,B - fzf-git-checkout-branch
  • Ctrl+@,G,D - fzf-git-delete-branches

Настройка пакетов

Вы можете проверить стандартные пакеты в defaults/main.yml. Если вам нравятся стандартные пакеты, но вы хотите добавить свои, используйте переменную zsh_antigen_bundles_extras (см. пример плейбука выше). Если вы хотите удалить некоторые стандартные пакеты, вам следует использовать переменную zsh_antigen_bundles.

Формат списка соответствует antigen. Все нижеуказанные варианты действительны:

- docker # oh-my-zsh плагин
- zsh-users/zsh-autosuggestions # плагин с github
- zsh-users/[email protected] # плагин с github с фиксированной версией
- ~/projects/zsh/my-plugin --no-local-clone # плагин из локальной директории

Обратите внимание, что пакеты могут использовать условия для загрузки. Существует два типа условий:

  1. Условия команд. Просто добавьте command к пакету:
- { name: docker, command: docker }
- name: docker-compose
  command: docker-compose

Пакеты docker и docker-compose будут добавлены в конфигурацию только в том случае, если команды существуют в целевой системе.

  1. Условия при. Вы можете определить любые условия ansible так же, как вы определяете в when в задачах:
# загружать только для zsh >= 4.3.17
- name: zsh-users/zsh-syntax-highlighting
  when: "{{ zsh_version is version_compare('4.3.17', '>=') }}"
# загружать только для macOS
- { name: brew, when: "{{ ansible_os_family != 'Darwin' }}" }

Примечание: вы должны обернуть условие в "{{ }}"

Пользовательская конфигурация

Вы можете добавить любой код в переменные zsh_custom_before, zsh_custom_after.

  • zsh_custom_before - перед включением antigen.zsh
  • zsh_custom_after - перед включением ~/.zshrc.local

Обновление

viasite-ansible.zsh v3.0 вводит antigen v2.0, которая не имеет обратной совместимости с antigen 1.x.

Я не потратил много времени на плавное обновление, поэтому вам, вероятно, придется выполнить некоторые действия вручную: если запрос powerlevel9k не загружается после предоставления роли, вам следует выполнить antigen reset.

После повторного открытия оболочки все должно заработать.

Понижение до antigen v1

Antigen v2 гораздо быстрее (в 2 раза быстрее загрузки), но если что-то пойдет не так, вы можете понизить версию до antigen v1, посмотрите примечание для пользователей zsh 4.3 ниже.

Для пользователей с zsh 4.x

Antigen v2 не работает на zsh < 5.0, если вы используете zsh 4.x, пожалуйста, добавьте в ваш плейбук:

zsh_antigen_version: v1.4.1

Известные ошибки

su username вызвал ошибки

Смотрите проблему antigen. Если и root, и su пользователь используют antigen, вам следует использовать su - username вместо su username.

Или вы можете использовать встроенный псевдоним suser.

Вы также можете попробовать исправить это, добавив в ~/.zshrc.local:

alias su='su -'

Но этот псевдоним может нарушить ваши скрипты, использующие su.

О проекте

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

Установить
ansible-galaxy install viasite-ansible/ansible-role-zsh
Лицензия
mit
Загрузки
43182
Владелец