macの開発環境をカスタマイズする(zsh)
はじめに
今回は、色んな記事を参考にして自分なりに設定した開発環境の設定の紹介です。
今まで開発環境をカスタマイズするということはしておらず、色々と試行錯誤しながら構築しているところです。
また関連する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で管理できるので、何かしらのプラグインマネージャを入れておくことはお勧めです。
- zsh-completions
コマンド補完のプラグインです。
Tabキーを押すことによってコマンドであったり、ファイル名の候補一覧を出してくれます。
- zsh-syntax-highlighting
zsh構文の強調表示をしてくれるプラグインです。
タイポしているところを強調表示してくるので便利です。
正確にコマンドを入力したとき
タイポしているとき
- zsh-autosuggestions
コマンド入力をすると履歴から検索しサジェストを表示してくれます。
- git-prompt
プロンプトにgitのブランチ名を表示させることができます。色も好きなようにカスタマイズできます。
-
peco
標準入力されたデータをインクリメンタルサーチをしてくれるツールです。
文字を入力することで、historyファイルに保存されている履歴を絞り込んでくれます。
自分の場合はCommand+F
で起動するよう設定しています。
コマンドはいちいち覚えておくのは大変なので、個人的に重宝しています。
ファイルの検索を行い、選択したファイルをvimで表示してくれます。
Command+R
で起動します。
pecoに関してはまだまだ使いこなせていないので、今後より活用していけるようにしたいです。
終わりに
大した設定はしていませんが、ターミナルでの操作が大きく改善されました。
もっと早く開発環境を整えていればよかった...と思うほど、ターミナルでの操作が効率良くなったと思います。
開発環境を整える楽しさも知れてよかったですし、まだまだ改善余地があると思うので今後改善していくのが楽しみです。
参考
Discussion