🌟

macの開発環境をカスタマイズする(zsh)

2021/11/10に公開

はじめに

今回は、色んな記事を参考にして自分なりに設定した開発環境の設定の紹介です。

今まで開発環境をカスタマイズするということはしておらず、色々と試行錯誤しながら構築しているところです。

また関連するLInux(shell)についてここ最近学んでいるので、簡単にまとめていければと思います。

環境

  • macOS Big Sur 11.6
  • zsh 5.8
  • iTerm2

shell(シェル)

shellにはたくさんの種類がありますが、自分の環境ではzshを使っています。

macOS Catalina バージョンから、デフォルトのシェルがbashからzshに変わっています。
https://support.apple.com/ja-jp/HT208050

以前はbashを使用していましたが、新しいmacにする際にdefaultで設定されていたのと、bashよりも機能が多くなっている、使いこなせれば便利と聞いていたのでこの機会にとzshを使用するようになりました。(といっても全然使いこなせていない...)

shellとは

シェルは、カーネルとユーザーを繋ぐインターフェイスといった関係性です。
shell は $ マークなどのプロンプトを表示してユーザーからの入力を待ち、入力されたファイル名のプログラムを実行し、終了したらまたプロンプトを表示して待ちます.
カーネルは直接人間が操作できるようにはなっていないため、ユーザが入力した要求をシェルを通してカーネルに命令を出します。

シェルはCommand-Line Interface、略してCLIと呼ばれることもあります。

なぜカーネルとシェルが分かれているのか

わざわざカーネルとシェルを分けずに、カーネルの中にキーボードからコマンド操作できる機能を取り込んでおけばよいのにと思うこともあると思いますが、
いくつか分けるメリットがあります。

  • OS側には手を入れずに、シェルだけを自分好みのものに変更することができる
  • 自分の環境とは違ったOSを利用する際も、シェルが移植されていれば操作を同様に行うことができる
  • シェルがエラーや高負荷状態になってクラッシュしたとしても、OS側への影響を最小限に抑えることができる

などが挙げられます。

シェルの種類

  • sh
    Bourneシェル(Bシェル)と呼ばれ、もっとも古くから存在するシェルです。
    シェルスクリプトを書く際にはよく用いられますが、ログインシェルとしては機能が少ないこともあり使われるケースは少ないです。

  • csh
    Cシェルと呼ばれており、shに比べ、対話型操作が便利になっています。
    csh後継のtcshがあるため、今ではほとんど使われることはないです。

  • bash
    対話型操作を行う上で十分な機能を持ち、多くのLinux環境でデフォルトのログインシェルとして使われています。

  • zsh
    bash等、他のシェルの機能を積極的に取り込み、独自の拡張を加えたシェルです。非常に多くの機能を持っています。

以上、代表的なシェルの紹介でした。シェルには膨大な種類があるので他のものも見てみると面白そうですね。

zshのインストール

今回はzshでの設定を紹介するので、インストール方法も載せておきます。
homebrew でzshを導入します。(homebrewの導入は割愛します)

brew install zsh

シェルがzshになっているかの確認

echo $SHELL
/usr/local/bin/zsh

と出ればzshに設定されていることを確認できます。

もしzshになっていなければ、
ログインシェルを変更するコマンド

chsh -s /usr/local/bin/zsh

を入力しパスワードを入れた後に、新しいタブを開くと

This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

~~~~~~

いくつか質問が出るので、入力すると変更できます。

開発環境

ここからは自分が導入した設定の紹介です。

  • zplug

zshプラグインマネージャにzplugを導入しました。
プラグインのインストールも手軽に行えますし、設定ファイルをdotfilesで管理できるので、何かしらのプラグインマネージャを入れておくことはお勧めです。

https://github.com/zplug/zplug

  • zsh-completions

コマンド補完のプラグインです。
Tabキーを押すことによってコマンドであったり、ファイル名の候補一覧を出してくれます。

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

  • zsh-syntax-highlighting

zsh構文の強調表示をしてくれるプラグインです。
タイポしているところを強調表示してくるので便利です。

https://github.com/zsh-users/zsh-syntax-highlighting

正確にコマンドを入力したとき

タイポしているとき

  • zsh-autosuggestions

コマンド入力をすると履歴から検索しサジェストを表示してくれます。

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

  • git-prompt

プロンプトにgitのブランチ名を表示させることができます。色も好きなようにカスタマイズできます。

https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh

  • peco
    標準入力されたデータをインクリメンタルサーチをしてくれるツールです。

https://github.com/peco/peco

文字を入力することで、historyファイルに保存されている履歴を絞り込んでくれます。
自分の場合はCommand+Fで起動するよう設定しています。
コマンドはいちいち覚えておくのは大変なので、個人的に重宝しています。

ファイルの検索を行い、選択したファイルをvimで表示してくれます。
Command+Rで起動します。

pecoに関してはまだまだ使いこなせていないので、今後より活用していけるようにしたいです。

終わりに

大した設定はしていませんが、ターミナルでの操作が大きく改善されました。
もっと早く開発環境を整えていればよかった...と思うほど、ターミナルでの操作が効率良くなったと思います。
開発環境を整える楽しさも知れてよかったですし、まだまだ改善余地があると思うので今後改善していくのが楽しみです。

参考

https://ja.wikipedia.org/wiki/シェル
https://qiita.com/b4b4r07/items/cd326cd31e01955b788b
https://codezine.jp/unixdic/w/シェル機能
https://qiita.com/obake_fe/items/c2edf65de684f026c59c
https://www.amazon.co.jp/新しいLinuxの教科書-三宅-英明-ebook/dp/B072K1NH76/ref=tmm_kin_swatch_0?_encoding=UTF8&qid=&sr=
https://qiita.com/bake0937/items/79e350a474c1cd60a5e0

Discussion