lisz-works

プログラミングと興味を貴方に

単純だが快適!zsh+powerlevel10kをセットアップしてみた!

【スポンサーリンク】

zsh

こんにちは、lisです!

「zshはいいぞ!」とよく聞くので、WSLにzshのセットアップをしました。

zshとpowerlevel10kを設定しただけでも、見やすいし便利でした!

今回はセットアップまでにしたことを書いていきます。

zshにするメリット

まだ少ししか使っていませんが、今回のセットアップをしてみて良かったところを。

まずプロンプトを見やすくできます。

今のところはシンプルな感じにとどめています。

動作

  1. カラフルで見やすくできる
  2. カレントディレクトとプロンプトで2段表示にしていますが、コマンドを実行する度に前行のカレントディレクト表示は消えてくれる

これだけでもかなり見やすくなる!

また実行内容をコピペしたいときとかかなり楽です。

インストール

$ apt install zsh

zsh叩いて表示されるやつそのままEnter

.zshrc

ひとまずここの.zshrcを丸コピで作成

少し凝った zshrc · GitHub

再ログインするとプロンプトが変わってた。

プロンプト

プロンプトをカスタマイズ

現状。

% echo $PROMPT
%{%}[%n@%m]%{%} %~
%#

powerlevel10k branch unstageNum, 未コミット数などを表示している その一環で要らなくなった部分の削除を行っている

preztoをインストール

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

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

Powerlevel10Kをセットアップ

~/.zpreztorcを下記のように編集します。L120あたりにありました。

#zstyle ':prezto:module:prompt' theme 'sorin'
zstyle ':prezto:module:prompt' theme 'powerlevel10k'

zshに入り直す。

$ exit
$ zsh

アイコンが表示されているか聞かれるので回答していきます。

   This is Powerlevel10k configuration wizard. You are seeing it because you haven't
  defined any Powerlevel10k configuration options. It will ask you a few questions and
                                 configure your prompt.

                    Does this look like a diamond (rotated square)?
                      reference: https://graphemica.com/%E2%97%86

                                     --->    <---

(y)  Yes.

(n)  No.

(q)  Quit and do nothing.

Choice [ynq]:
                              Does this look like a lock?
                     reference: https://fontawesome.com/icons/lock

                                     --->    <---

(y)  Yes.

(n)  No.

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [ynrq]:
                   Does this look like a Debian logo (swirl/spiral)?
                  reference: https://debian.org/logos/openlogo-nd.svg

                                     --->    <---

(y)  Yes.

(n)  No.

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [ynrq]:
                      Do all these icons fit between the crosses?

                             --->  XXXXXXXXX  <---

(y)  Yes. Icons are very close to the crosses but there is no overlap.

(n)  No. Some icons overlap neighbouring crosses.

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [ynrq]:

プロンプトのスタイルを設定します。

プロンプトのスタイルを設定

とりあえず1にしてみました。

設定が続きます。

                                     Character Set

(1)  Unicode.

  ~/src master                                                                      5s
  ❯

(2)  ASCII.

  ~/src master                                                                      5s
  >

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [12rq]:
                                     Prompt Colors

(1)  256 colors.

  ~/src master                                                                      5s
  ❯

(2)  8 colors.

  ~/src master                                                                      5s
  ❯

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [12rq]:
                                   Show current time?

(1)  No.

  ~/src master                                                                      5s
  ❯

(2)  24-hour format.

  ~/src master                                                             5s 16:23:42
  ❯

(3)  12-hour format.

  ~/src master                                                          5s 04:23:42 PM
  ❯

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [123rq]:
                                     Prompt Height

(1)  One line.

  ~/src master ❯                                                                    5s

(2)  Two lines.

  ~/src master                                                                      5s
  ❯

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [12rq]:
                                   Prompt Connection

(1)  Disconnected.

  ~/src master                                                                      5s
  ❯

(2)  Dotted.

  ~/src master ···································································· 5s
  ❯

(3)  Solid.

  ~/src master ──────────────────────────────────────────────────────────────────── 5s
  ❯

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [123rq]:
                                      Prompt Frame

(1)  No frame.

  ~/src master                                                                      5s
  ❯

(2)  Left.

  ╭─ ~/src master                                                                   5s
  ╰─❯

(3)  Right.

  ~/src master                                                                   5s ─╮
  ❯                                                                                 ─╯

(4)  Full.

  ╭─ ~/src master                                                                5s ─╮
  ╰─❯                                                                               ─╯

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [1234rq]:
                                     Prompt Spacing

(1)  Compact.

  ~/src master                                                                      5s
  ❯
  ~/src master                                                                      5s
  ❯

(2)  Sparse.

  ~/src master                                                                      5s
  ❯

  ~/src master                                                                      5s
  ❯

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [12rq]:
                                         Icons

(1)  Few icons.

  ~/src master                                                                      5s
  ❯

(2)  Many icons.

    ~/src   master                                                             5s
  ❯

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [12rq]:

フォントにCicaとMesloLGS NF Regularを設定してみましたが、Windows Terminal上だとアイコンが小さく表示されてしまうようです。

Cica

Cicaの場合

MesloLGS NF Regular

MesloLGS NF Regularの場合

アイコンがちゃんと見えれば見やすい気がしますが、今のところ見づらいしCicaがよかったので、Cicaでアイコンなしに設定しました。

                                      Prompt Flow

(1)  Concise.

  ~/src master                                                                      5s
  ❯

(2)  Fluent.

  ~/src on master                                                              took 5s
  ❯

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [12rq]:
                                Enable Transient Prompt?

(y)  Yes.

  ❯ git pull
  ❯ git branch x

  ~/src master                                                                      5s
  ❯ git checkout x

(n)  No.

  ~/src master                                                                      5s
  ❯ git pull

  ~/src master                                                                      5s
  ❯ git branch x

  ~/src master                                                                      5s
  ❯ git checkout x

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [ynrq]:
                                  Instant Prompt Mode

     https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt

(1)  Verbose (recommended).

(2)  Quiet. Choose this if you've read and understood instant prompt documentation.

(3)  Off. Choose this if you've tried instant prompt and found it incompatible with your
     zsh configuration files.

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [123rq]:

こちらは,zshの起動を高速化してくれるモードです.
引用: zsh(+ dotfiles)入門

1 Verboseを選択しました。

                               Apply changes to ~/.zshrc?

(y)  Yes (recommended).

(n)  No. I know which changes to apply and will do it myself.

(r)  Restart from the beginning.
(q)  Quit and do nothing.

Choice [ynrq]:

やっと設定完了。結構設問が長かった。

デフォルトシェルをzshに変更

ここまでやってzshいい感じだなということがわかったのでデフォルトシェルに変更しました。

$ sudo sh -c "echo '/bin/zsh' >> /etc/shells"
$ chsh -s /bin/zsh

tmuxの設定

~/.tmux.confに下記を追加します。

set-option -g default-shell "${SHELL}"
set -g default-command "${SHELL}"

これでtmuxでもzshになります。

tmux開いてもbashなんだけど……

という方は、tmuxのプロセスが全てkillされていることを確認してからtmuxを起動すればOKです。

ぼくは一旦tmuxを起動したりなんやりしていたせいで、tmuxが裏で生きていてうまくいっていませんでした。

❯ ps aux | grep tmux
lis        226  0.0  0.0   9444  5920 ?        Ss   09:32   0:02 tmux
lis       1747  0.0  0.0   8160   732 pts/1    S+   15:44   0:00 grep --color=auto tmux
❯ pkill tmux
❯ ps aux | grep tmux
lis       1753  0.0  0.0   8160   740 pts/1    S+   15:45   0:00 grep --color=auto tmux

その他対処すること

もともとbashのときに設定していた設定ファイルを読み込ませて楽をしようとしていました。

しかし、起動したら警告が出たりなんやりしたので見直しをしました。

やったことは

  • 必要箇所を.zsh*に転記する
  • 設定ファイル上でのechoを削除(これが原因でなんか警告が出る)

参考

コチラを参考にしました。ありがとうございました!

qiita.com

少し凝った zshrc · GitHub

qiita.com

slacknotebook.com

qiita.com

zenn.dev

qiita.com

loumo.jp

あとがき

zsh+powerlevel10kをセットアップしてみたでした!

カスタマイズ性が高いようなので、もっとカスタムできそうなので、できたら色々やっていきたいですね。

今回のものだけでも便利になるので、是非参考にしてみてください!

www.lisz-works.com

www.lisz-works.com