【Mac】ターミナル環境を整える

2022/09/19に公開

今回使用する環境

  • iTerm2
  • macOS Monterey12.6
  • zsh 5.8.1

Homebrewのインストール

HomebrewとはmacOS用のパッケージ管理ツールです。
まず最初にインストールを済ませておきます。
使用することで様々なパッケージをインストールすることができます。

インストール方法は、公式サイトのインストールと書いてあるところのスクリプトをコピーしてターミナルで実行します。
https://brew.sh/index_ja

インストールされているかの確認

こちらのコマンドを実行します。

brew -v

バージョンが表示されれば、無事インストールできています。

Stershipの導入

ターミナルの見た目をおしゃれにカスタマイズすることができます。

フォントのinstall

公式ではFira Code Nerd Fontを使用しているので、それに合わせておきます。
Fira Code Nerd Fontはこちらからダウンロードできます。

ターミナルのフォント設定

iTerm2>Preferences

Profile>Textの中のFontをFira Code Nerd Fontに変更

Stershipのインストール

こちらのコマンドを実行します。

brew install starship

~/.zshrc の最後に以下を追記して完了です。

.zshrc
eval "$(starship init zsh)"

自分は設定で時刻、メモリの使用量や絵文字などを入れたりしています。

細かいカスタマイズ方法は公式サイトが日本語ですごく分かりやすいので、おすすめです。
https://starship.rs/ja-jp/

Zshのオプションを有効化する

オプションを有効化するにはsetopt <オプション名>という形で追記してあげるだけです。
自分は下記の設定を追加しています。
他にもさまざまな設定がありますので、どんなオプションがあるのかを調べながら、自分が使いやすいようにカスタマイズしていくのがよいかと思います。

.zshrc
# ビープ音の停止
setopt no_beep
# ビープ音の停止(補完時)
setopt nolistbeep
#cd時にディレクトリスタックにpushdする
setopt auto_pushd
#pushdしたとき、ディレクトリがすでにスタックに含まれていればスタックに追加しない
setopt pushd_ignore_dups
#一致するディレクトリにcdなしで移動する
setopt auto_cd
#直前と同じコマンドは履歴に追加しない
setopt hist_ignore_dups
#同時に起動したzshの間で履歴を共有する
setopt share_history
#即座に履歴を保存する
setopt inc_append_history

Zinitのインストール

プラグインマネージャーです。
zshのプラグインを管理するツールになります。

こちらのコマンドを実行します。
~/.local/share/zinit/zinit.gitにZinitがインストールされます。

sh -c "$(curl -fsSL https://git.io/zinit-install)"
source ~/.zshrc
zinit self-update

.zshrcに以下が追加されていることが確認できます。

.zshrc
#Added by Zinit's installer
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
    print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
    command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
    command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
        print -P "%F{33} %F{34}Installation successful.%f%b" || \
        print -P "%F{160} The clone has failed.%f%b"
fi

source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
#End of Zinit's installer chunk

https://github.com/zdharma-continuum/zinit

プラグインを追加する

zsh-syntax-highlightingをインストール

コマンドに色付けすることができます。

こちらを.zshrcに追記します。

.zshrc
# シンタックスハイライト
zinit light zsh-users/zsh-syntax-highlighting

設定後、コマンドに色がついていることが確認できます。(brewコマンドに色がついている)

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

zsh-autosuggestionsをインストール

履歴からコマンド候補を表示してくれます。
例えばyarnコマンドを打つだけで、次のdevという候補が表示されていることが確認できます。

こちらを.zshrcに追記します。

.zshrc
#入力補完
zinit light zsh-users/zsh-autosuggestions

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

jqコマンド

JSONデータから値を抽出、変換、集計などをしてくれるJSON用コマンドです。

こちらのコマンドを実行します。

brew install jq

バージョンが表示されていればインストールができています。

jq --version

jsonファイル内のscriptを確認してみます。
package.jsonが存在する特定のディレクトリで以下のコマンドを実行する。

cat package.json| jq .scripts

package.jsonのscriptがターミナル上から確認することができました。

treeコマンド

ディレクトリ構造をツリー形式で表示して確認ができるようになります。

インストール

brew install tree

実行してみます。
(-L 2のオプションについては、下の記事などを参考にしていただければと思います。)
https://atmarkit.itmedia.co.jp/ait/articles/1802/01/news025.html#:~:text=treeコマンドとは?,インストールされていません。

tree -L 2

ディレクトリ構造をツリー形式で表示することができるようになりました。

batコマンド

batはRustで実装されたcatの代替コマンドです。
batを使用することで、行番号とシンタックスハイライトをつけてファイルを表示することができます。

インストール

brew install bat

package.jsonを表示してみる

bat package.json

行番号とシンタックスハイライトがついていることが確認できます。

batをcatのaliasに設定する

ついでにcatを実行するとbatが実行されるようにしておきます。

.zshrcに以下を追記します。

alias cat=bat

最後に、 ~/.zshrc を再読み込みしてあげます。

source ~/.zshrc

その後、catをコマンドでbatが実行されていることが確認できたら完了です。

ghq

ghqを使用することで、リポジトリを一元管理することができます。

インストール

brew install ghq

git cloneではなく、ghq getでcloneします。

ghq get <リポジトリのURL>

実行後、homeディレクトリ直下の/ghqの勝手にルールをもって配置されていることが確認できます。
整理されたことによって、cloneしてきたものがどこにあるのか分からなくなることを防げます。

使用できるコマンド

コマンド 内容
ghq get 引数か標準入力経由でtargetを受け取り、そのリポジトリを取得する。
ghq list ローカルリポジトリの全件を一覧表示

https://github.com/x-motemen/ghq

fzf

ターミナルからあいまい検索を行えるようにするツールです。

brew install fzf

https://github.com/junegunn/fzf

使い方は、コマンドの標準出力をパイプで渡すだけで,それらに対してあいまい検索を行うことができるようになります。
あいまい検索を行いたいディレクトリでこちらのコマンドを実行してみると動作することが確認できます。

find . | fzf

ghqとfzfを組み合わせる

先ほど紹介をしたghqで管理しているリポジトリを、あいまい検索ですぐ探し出せるように組み合わせることにより、作業効率が上がります。

.zshrcに関数を定義する。

.zshrc
#ghqの中身をあいまい検索する関数
$ fg() {
  declare -r REPO_NAME="$(ghq list >/dev/null | fzf-tmux --reverse +m)"
  [[ -n "${REPO_NAME}" ]] && cd "$(ghq root)/${REPO_NAME}"
}

下記のコマンドを実行すると、ghqで管理しているリポジトリをあいまい検索できます。

fg

Discussion