Zsh 基礎 3 -- prezto を入れてテーマを pure に変更する
Tags: zsh, prezto, pure
Published: 2022-08-11 12:01:00


## なにがしたいか

zsh の prezto の propmpt pure と Nerd Font

がみやすいと効いたので

---

## zsh テーマの 3 種の比較をして prezto を選択

zsh のテーマには、prezto の他に oh-my-zsh と zplug もある。

https://qiita.com/qwerty/items/92412925ac2cb9eabf4c#%E7%B5%90%E8%AB%96

この記事をみると、

- oh-my-zsh は設定が面倒
- zplug は動作が重い

ので Prezto が設定の手間と動作の軽さの点から良いようだ。

---

## prezto のクローン

https://github.com/sorin-ionescu/prezto

```php
git clone --recursive \
https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
```

git から直接クローンするらしい

```php
Cloning into '/home/kaede/.zprezto/modules/prompt/external/pure'...
Cloning into '/home/kaede/.zprezto/modules/prompt/external/powerlevel10k'...
Cloning into '/home/kaede/.zprezto/modules/syntax-highlighting/external'...

Submodule path 'modules/prompt/external/powerlevel10k': checked out '8a676a9157d2b0e00e88d06456ac7317f11c0317'
Submodule path 'modules/prompt/external/powerline': checked out 'c48e4c69ef5c368ea7cda961ed9d0e298a5ae1fc'
Submodule path 'modules/prompt/external/pure': checked out '5b458ba5b75f49a8071d53c343f1a23631f7bced'
Submodule path 'modules/syntax-highlighting/external': checked out '932e29a0c75411cb618f02995b66c0a4a25699bc'
```

propmt の

powerlevel10k
powerline
pure

syntax-highlighting の external

これらがインストールされたようだ。

---

## 現在の zshrc の退避と prezto 用の zshrc の生成

https://qiita.com/abirutakayuki/items/a235c1ec1a0831cfc459#%EF%BC%93%E3%82%B3%E3%83%B3%E3%83%95%E3%82%A3%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFprezto%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

```php
mv .zshrc .zshrc_temp
```

zshrc を逃がす。

```bash
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
```

これで prezto の読み込みを生成されるようだ
                                                   
```php
#
# Executes commands at the start of an interactive session.
#
# Authors:
#   Sorin Ionescu <sorin.ionescu@gmail.com>
#

# Source Prezto.
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
  source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
fi

# Customize to your needs...
```

.zprezto/init.zsh を起動時に動かす設定が書かれた。

```php
cat .zshrc_temp >> .zshrc
```

逃した zshrc の内容を追記する

---

## propmt コマンドで テーマのリストを出したりプレビューする

prezto を読み込んだだけでは見た目は一切変わらない。

propmt コマンドが使えるようになる。
これでテーマを変更できる。

```php
prompt -l
Currently available prompt themes:
agnoster cloud damoekri giddie kylewest minimal nicoulaj paradox peepcode powerlevel10k powerline pure skwp smiley sorin steeef adam1 adam2 bart bigfade clint default elite2 elite fade fire off oliver pws redhat restore suse walters zefram
```

-l で使えるテーマのリストをだせる

```php
prompt -p pure

pure theme:

~ 13s
❯ command arg1 arg2 ... argn
```

-p でプレビューができる。

肌色の 太くて背の高い ` > ` マークで
入力しているコマンドがわかりやすくなった。

https://mikebuss.com/2014/04/07/customizing-prezto/

このサイトで一覧が見れる


---

## zpreztorc に pure の設定を追加する

https://qiita.com/abirutakayuki/items/4e04114b702f8e36def7#walters


https://qiita.com/gilly/items/5ff7bd7142e963cdbb9b#%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%A8%AD%E5%AE%9A

.zpreztorc には walters がデフォルトになっていて

```php
zstyle ':prezto:module:prompt' theme 'walters'
```

これ pure に変えても読み込まれなかった

---

## 公式サイトのロードの記述を確認

https://github.com/sorin-ionescu/prezto

公式サイトには 

> Load the theme you like in ${ZDOTDIR:-$HOME}/.zpreztorc and then open a new Zsh terminal window or tab.

~/.zpreztorc にあるテーマをロードして
新しく開けば反映される

と書いてあるが、どうやってロードするのか不明

---

## propmt -s で一時的にテーマを変更

https://qiita.com/gilly/items/5ff7bd7142e963cdbb9b#%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%A8%AD%E5%AE%9A

prompt -s でできるらしい

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l96zq2t6pjyqvz1emaql.png)

しかし、これは設定ファイルを変更しないので一時的。

---

## .zshrc に autoload で adam1 を設定しているのを確認

```php
# Customize to your needs...
# Set up the prompt

autoload -Uz promptinit
promptinit
prompt adam1
``` 

zshrc に adam1 が選択されるようにでていた
この adam1 は propmt -l のリストででてきた！

なのでここを pure に変えたらできそうなので、変えてみる

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/878ro9y13q2zabmre48j.png)

すると初期起動シェルを pure に変更できた！！！ 

---

## まとめ

zsh で prezto というテーマ管理のソフトをいれて
pure というシンプルなテーマを設定するためには

```php
git clone --recursive \
https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
```

prezto を git clone して

```php
mv .zshrc .zshrc_temp
```

既存の zshrc を逃がして

```bash
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
```

~/.preztorc と preztorc の設定を入れた ~/.zshrc などをこれで生成

```php
cat .zshrc_temp >> .zshrc
```

逃した zshrc といま作った zshrc を結合する。
すると prompt コマンドが使えるようになる。

-l でリスト、-p でプレビュー、-s で一時セットできる。

```php
# Customize to your needs...
# Set up the prompt

autoload -Uz promptinit
promptinit
prompt adam1
``` 

zshrc の autolaod の propmt の
adam1 を pure に変える

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/878ro9y13q2zabmre48j.png)

すると、最初から zsh が prezto の pure で起動する。