# Oh My ZSH!

`Z shell`, `zsh` - одна из современных командных оболочек `UNIX`, использующаяся непосредственно как интерактивная оболочка, либо как скриптовый интерпретатор.

## Установка

Установка `zsh` в `Linux Solus`:

```sh
sudo eopkg it zsh
```

## Oh My ZSH!

`Oh My ZSH!` - конфигурация для управления `zsh`.

### Установка

```sh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

Если необходимо установить в качестве основного `shell` выполнить:

```sh
chsh -s $(which zsh)
```

**После установки перезапустить сеанс для применения изменений!**

### Плагины

#### zsh-autosuggestions

Предлагает команды по мере ввода на основе истории и завершений:

```sh
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
```

Добавить в файл `.zshrc` плагин `zsh-autosuggestions`:

```sh
plugins=( 
    # other plugins...
    zsh-autosuggestions
)
```

#### zsh-syntax-highlighting

Этот пакет обеспечивает подсветку синтаксиса для оболочки `zsh`. Позволяет выделять команды при их вводе в командной строке `zsh`.

Установка:

```sh
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
```

Добавить в файл `.zshrc` плагин `zsh-syntax-highlighting`:

```sh
plugins=( 
    # other plugins...
    zsh-autosuggestions
    zsh-syntax-highlighting
)
```

### Настройка терминала

Убрать имя пользователя и компьютера - добавить пустой блок `prompt_context` в файл `.zshrc`:

```sh
prompt_context() {}
```

Для ввода команды с новой строки - добавить символ перевода на новую строку (`\n`) в функцию `prompt_end()` настройках темы `zsh-theme` (например в `~/.oh-my-zsh/themes/agnoster.zsh-theme`).

Было:

```sh
prompt_end() {
  if [[ -n $CURRENT_BG ]]; then
    echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
  else
    echo -n "%{%k%}"
  fi
  echo -n "%{%f%}"
  CURRENT_BG=''
}
```

Стало:

```sh
prompt_end() {
  if [[ -n $CURRENT_BG ]]; then
    echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
  else
    echo -n "%{%k%}"
  fi
  echo -n "\n$SEGMENT_SEPARATOR%{%f%}"
  CURRENT_BG=''
}
```

**Для применения изменений возможен перезапуск терминала!**
