zsh についてまとめたい

.zshenv と .zprofile と .zshrc

この記事 がとてもわかりやすい。

シェルの種類読み込まれる設定ファイル
ログインシェル.zshenv, .zshrc, .zshprofile
インタラクティブシェル.zshenv, .zshrc
シェルスクリプト.zshenv

とりあえず zshprofile に入れといて困ったら zshrc や zshenv に移していけば良さそう。

zsh のオプション

オプション とは zsh の振る舞いを変化させる機能。 setopt, unsetopt コマンドで切り替えることができる。オプション名は大文字小文字は無視して、アンダースコアも無いのと同じ扱いになる。この記事が詳しい。

history 関連の設定

入力内容とマッチするコマンドを検索する control + r はとてもよく使うけど連打していると目当ての検索結果を飛ばしてしまうことがある。デフォルトでは control + s で検索を戻ることができるはずだが、この操作をしても戻ることができない。 control + s が X-OFF というハードウェアフロー制御文字を送信してしまうのが原因らしい。この制御文字は、ハードウェアに対して、データ送信を一旦停止させることを指示するらしい。ターミナルで実際に使われているのはみたことがない。~control + s~ でフロー制御を行わないようにするには stty という UNIX コマンドを使うと良いらしい。

stty stop undef  # X-OFF を指示する制御文字(デフォルト control + s)を未定義にする
stty start undef # X-ON を指示する制御文字(デフォルト control + q)を未定義にする

zsh のオプションを使うと、もう少し端的に書くことができる。

setopt no_flow_control

あとはタブごとに違う履歴を持ったりしないように sharehistory の設定も入れておくと便利。

プラグイン

zplug

https://github.com/zplug/zplug

zsh のプラグイン(パッケージ)マネージャ。インストールしてみる。

brew install zplug

インストール後のメッセージは下のような感じ。

In order to use zplug, please add the following to your .zshrc:
  export ZPLUG_HOME=/opt/homebrew/opt/zplug
  source $ZPLUG_HOME/init.zsh

あとは適当にパッケージをインストールしてロードすれば良い。

zplug "zsh-users/zsh-autosuggestions"
zplug install
zplug load

ローカルファイルの読み込みも管理できるらしくて、ごちゃごちゃした設定ファイルを整理するにはちょうど良さそうである。

zsh-autosuggestions

https://github.com/zsh-users/zsh-autosuggestions

コマンドを叩いている途中に、履歴を参照してサジェストしてくれる。 TABcontrol + e でサジェストを受け入れる。細かい設定もできるらしいけど特に触らなくてもある程度便利になるのでそれで良いかなと思う。

zplug "zsh-users/zsh-autosuggestions"

zsh-peco-history

https://github.com/jimeh/zsh-peco-history

インクリメンタルサーチの UI を peco に取り替える。emacs の ivy とかに似ている。事前に brew install peco とかで peco をインストールする必要がある。これを設定するなら control + s を無効化しなくても良いかもしれない。

zplug "jimeh/zsh-peco-history", defer:2

その他