From 01b3b80e21b0ca2f0d24139e6ad30a8bb1fb8ea9 Mon Sep 17 00:00:00 2001 From: Dexter Morganov Date: Mon, 20 Apr 2020 22:29:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=91?= =?UTF-8?q?=D0=BD=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=20'git=20?= =?UTF-8?q?=D0=B2=20zsh'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sections/zsh.asc | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/book/A-git-in-other-environments/sections/zsh.asc b/book/A-git-in-other-environments/sections/zsh.asc index a25e8944..64e9a213 100644 --- a/book/A-git-in-other-environments/sections/zsh.asc +++ b/book/A-git-in-other-environments/sections/zsh.asc @@ -2,8 +2,8 @@ (((zsh)))(((tab completion, zsh)))(((shell prompts, zsh))) Git поставляется с поддержкой автодополнения для Zsh. -Просто скопируйте файл `contrib/completion/git-completion.zsh` в вашу домашнюю директорию и добавьте его в конфигурацию `.zshrc`. -Интерфейс Zsh круче оного в Bash: +Чтобы начать им пользоваться, просто добавьте строку `autoload -Uz compinit && compinit` в ваш `.zshrc` файл. +Интерфейс Zsh более функциональный чем в Bash: [source,console] ---- @@ -16,29 +16,40 @@ cherry -- find commits not merged upstream cherry-pick -- apply changes introduced by some existing commits ---- -Возможные варианты автодополнения не просто перечислены; они снабжены полезными описаниями и вы можете выбрать нужный вариант, нажав `Tab` несколько раз. -Это работает не только для команд Git, но и для их аргументов, названий объектов (типа ссылок и удалённых репозиториев), а также для имён файлов и других вещей. +Возможные варианты автодополнения не просто перечислены; они снабжены полезными описаниями и вы можете выбрать нужный вариант из предлложенных, перемещаясь по ним нажатием клавиши `Tab`. +Это работает не только для команд Git, но и для их аргументов, названий объектов внутри репозитория (например, ссылки и удалённые репозитории), а также для имён файлов и прочего. -Настройка строки приветствия в Zsh похожа на таковую в Bash, но в Zsh вы можете установить дополнительную строку приветствия справа. -Чтобы отобразить имя текущей ветки в правой строке приветствия, добавьте следующие строки в ваш `~/.zshrc`: +В состав Zsh входит фреймворк `vcs_info`, предназначенный для извлечения информации из сестем контроля версий. +Чтобы отобразить имя текущей ветки в правой строке приветствия, добавьте следующие строки в файл `~/.zshrc`: [source,console] ---- +autoload -Uz vcs_info +precmd_vcs_info() { vcs_info } +precmd_functions+=( precmd_vcs_info ) setopt prompt_subst -. ~/git-prompt.sh -export RPROMPT=$'$(__git_ps1 "%s")' +RPROMPT=\$vcs_info_msg_0_ +# PROMPT=\$vcs_info_msg_0_'%# ' +zstyle ':vcs_info:git:*' formats '%b' ---- -В результате вы будете видеть имя текущей ветки в правой части окна терминала каждый раз, как перейдёте внутрь Git репозитория. Это выглядит примерно так: +В результате вы будете видеть имя текущей ветки в правой части окна терминала каждый раз, как перейдёте внутрь Git репозитория. +(Для отображения названия ветки слева используйте `PROMPT` вместо `RPROMPT`) +Результат выглядит примерно так: .Кастомизированная строка приветствия в `zsh`. image::images/zsh-prompt.png[Кастомизированная строка приветствия в `zsh`.] +Дополнительную информацию о `vcs_info` можно найти в документации `zshcontrib(1)` или онлайн http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Version-Control-Information[]. + +Возможно, вы предпочтёте использовать поставляемый всесте с Git скрипт настройки `git-prompt.sh`; детали использования приведены в коментариях к файлу https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh[]. +Скрипт `git-prompt.sh` совместим с обоими оболочками Bash и Zsh. + Zsh настолько конфигурируем, что существуют целые фреймворки, посвящённые его улучшению. Пример такого проекта, называемый "oh-my-zsh", расположен на https://github.com/robbyrussell/oh-my-zsh[]. Система плагинов этого проекта включает в себя мощнейший набор правил автодополнения для Git, а многие "темы" (служащие для настройки строк приветствия) отображают информацию из различных систем контроля версий. -Вот пример настройки Zsh для комфортной работы с Git <>. +<> -- лишь один из многих вариантов применения. [[roh_my_zsh_git]] -.Пример темы oh-my-zsh. +.Пример темы oh-my-zsh image::images/zsh-oh-my.png[Пример темы oh-my-zsh.]