Skip to content

Commit

Permalink
Обновлён перевод 'git в zsh'
Browse files Browse the repository at this point in the history
  • Loading branch information
Morganov committed Apr 28, 2020
1 parent 7bf3f86 commit 01b3b80
Showing 1 changed file with 22 additions and 11 deletions.
33 changes: 22 additions & 11 deletions book/A-git-in-other-environments/sections/zsh.asc
Original file line number Diff line number Diff line change
Expand Up @@ -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]
----
Expand All @@ -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>>.
<<roh_my_zsh_git>> -- лишь один из многих вариантов применения.

[[roh_my_zsh_git]]
.Пример темы oh-my-zsh.
.Пример темы oh-my-zsh
image::images/zsh-oh-my.png[Пример темы oh-my-zsh.]

0 comments on commit 01b3b80

Please sign in to comment.