プログラミングをしていると何かとお世話になることが多いターミナルソフト。そのまま使うこともできますが、お気に入りの見た目に変更したり、便利な機能を導入することで使い勝手を向上できます。
これもハマると抜け出せないなかなかの沼っぷり。プログラミングをするために環境を整えているつもりが、いつの間にかカスタマイズすることに喜びを感じてしまうのです。。恐ろしい。。でも楽しい。。
今回は、そんなターミナルソフトのカスタマイズ例をご紹介します。
なお、使用している環境は、MacBook Pro2020(Intel)です。
OSのバージョンはmacOS Ventura を利用しています。
% sw_vers
ProductName: macOS
ProductVersion: 13.0.1
BuildVersion: 22A400
テーマカラーを変える
まずは、ターミナルのテーマカラーの変更をします。標準のテーマカラーだと気に入ったものがなかったので、検索して見つけた「Iceburg」を使うことにしました。Iceburgの特徴は、黒基調で寒色系の色が中心です。彩度も抑え気味なので、刺激が少なくて目に優しいです。
Iceberg - dark blue color scheme for Vim / Neovim
テーマ「Iceburg」の追加手順
Macの場合は、ページを下の方にぐぐっとスクロールしていくと、Iceburg for MacOSというのが見つかるのでそこからDownloadボタンでテーマファイルをMacに保存します。保存したら、以下の画面で読み込みを押して、保存したテーマファイルを指定すればテーマが追加されます。
一般というタブに、起動時に開くプロファイルという項目があるので、ここにiceburgを指定すると、次回のターミナル起動時にiceburgのテーマで表示されるようになります。
文字フォントを変更する
ターミナルに表示されるフォントも変更していきます。フォントの選び方については以前紹介したこちらの記事を参考にしつつ、自分が気に入ったフォントを見つけてもらえばと思います。
osio-tosimasa.com
ここでは、ターミナルフォントにJetBrains Monoに変更しています。JetBrains Monoはプログラマ向けのフォントで、無料で利用することができます。見た目がパリッとしていて見やすいところが好きです。
フォントの追加手順
JetBrains社のWebサイトからフォントをダウンロードします。
JetBrains Mono: A free and open source typeface for developers | JetBrains: Developer Tools for Professionals and Teams
フォントをMacにインストールする
Macの場合は、公式サイトに詳しい説明が載っていますので、こちらを参考にインストールしていきます。
Mac でフォントをインストール/削除する方法 - Apple サポート (日本)
ターミナルに設定する
設定メニューから、さきほど設定したiceburgを選び、フォントの変更からJetBrainsMonoを選びます。フォントが出てこない場合は、開いているターミナルを一度閉じてから起動すると読み込まれると思います。
ちなみにフォントの大きさは13pt。文字間隔1。行間隔1.2。で設定しています。
Z Shell(ズィーシェル)をカスタマイズする
さてここからは、ちょっとマニアックな設定になってしまうのですが、ターミナル上で動作する、Z Shell。通称zshというソフトについてカスタマイズしていきます。カスタマイズするには設定ファイルを作る必要があります。
カスタマイズしたターミナルソフトを立ち上げて、以下のコマンドでファイルを作成します。
ls -a ~/.zshrc
ls: ~/.zshrc: No such file or directory
touch ~/.zshrc
作られたファイルをテキストエディタで編集します。編集するソフトはなんでも大丈夫ですが、以前紹介したテキストエディタがおすすめです。
osio-tosimasa.com
VisualStudioCodeで開くときは、少し注意が必要です。作られたファイルはホームアイコンにあるのですが、ファイルを開くメニューからその場所に行っても見つかりません。そう言う場合は、ファイルが表示されている場所をどこか適当に選択したあと、Cmd+Shift+.を入力します。そうすると.(ドット)から始まるディレクトリやファイルも表示されるようになります。
余談ですが、.(ドット)から始まるディレクトリを隠しディレクトリ。ファイルは隠しファイルと呼びます。様々なアプリがこの隠しディレクトリやファイルを使って設定ファイルを保存したりしているのでうかつに手で消したりしないように普段は見えないようにしています。
さて、無事ファイルを開けたらこんな感じで設定を追記していきます。設定例として以下に中身をぺたっと貼り付けます。#で始まる箇所はコメントという説明文で、その下の行が実際の設定になります。めっちゃ多いですね。。その中でも特に大事そうなところだけ、かいつまんで説明します。
# rbenvの読み込み
eval "$(rbenv init -)"
# Terminal
## ファイル名日本語表示対応
export LANG=ja_JP.UTF-8
## 色を使用出来るようにする
autoload -Uz colors
colors
## ヒストリの設定
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=1000
### 直前のコマンドの重複を削除
setopt hist_ignore_dups
### 同じコマンドをヒストリに残さない
setopt hist_ignore_all_dups
### 同時に起動したzshの間でヒストリを共有
setopt share_history
## 補完
# 補完機能を有効にする
autoload -Uz compinit
compinit
# プロンプト表示
PROMPT="%{${fg[blue]}%}%n:%{${reset_color}%} %c/ %# "
# option
## cdしたら自動でpushdする
setopt auto_pushd
## 重複したディレクトリを追加しない
setopt pushd_ignore_dups
# beep を無効にする
setopt no_beep
# エイリアス
alias la='ls -a'
alias ll='ls -l'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias mkdir='mkdir -p'
# Plugins
## 存在するファイルやコマンドに色をつけるプラグイン
### https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/INSTALL.md
if [ -f ~/.zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]; then
source ~/.zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
### https://github.com/zsh-users/zsh-syntax-highlighting/tree/master/highlighters/main
#### 存在するファイルなら色を変える
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan'
fi
## 過去に入力したコマンド候補を入力、補完してくれるプラグイン
### https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md
if [ -f ~/.zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh ]; then
source ~/.zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
fi
## 入力途中のコマンドを補完表示してくれるプラグイン
### https://github.com/marlonrichert/zsh-autocomplete
if [ -f ~/.zsh/plugins/zsh-autocomplete/zsh-autocomplete.plugin.zsh ]; then
source ~/.zsh/plugins/zsh-autocomplete/zsh-autocomplete.plugin.zsh
fi
ファイル名日本語表示対応
これを入れておくと日本語ファイルが????にならずにちゃんと表示されます。
export LANG=ja_JP.UTF-8
プロンプト表示を短くする&色を使用出来るようにする
これでターミナルに表示される左側の表示をカスタマイズできます。例だと、青で自分のユーザー名。デフォルト色(icebergの場合は白)で今いるディレクトリ名を表示するようにしています。ユーザー名は正直いらないかもですが、ディレクトリ名は地味に重要で、例えばDownloadsというディレクトリにいるときに、デフォルトでは/Users/oco/Downloads/みたいに表示されます。この設定にしておくとDownloadsだけ表示されるので、表示領域を圧迫せずに作業することができます。
autoload -Uz colors
colors
## プロンプト表示
PROMPT="%{${fg[blue]}%}%n:%{${reset_color}%} %c/ %# "
beep音を無効にする
beep音というのは、コマンドが見つからないときなどに出るプップッみたいな機械的な音のことなのですが、ターミナルで作業していると、この音が結構気になるので無効にしておきます。
# beep音を無効にする
setopt no_beep
プラグインを導入する
説明すると長くなってしまうので、詳細は割愛しますが、zshもプラグインを追加することで機能が拡張されて、さらに便利になります。今の設定だと、プラグインファイルをベタにダウンロードして読み込んでいるのですが、このプラグインを管理するプラグイン(ややこしいですね)を利用することで、こんなに長ったらしく書かなくても簡単にプラグインを導入することができるようです。調べるとZplugというソフトがおすすめっぽですね。
衰えぬカスタマイズ欲。沼は深くなる一方です。。
最後に紹介したプラグイン管理用ソフトZPlugの導入や、ターミナルソフトについても、iTerm2という高機能なターミナルソフトもあるそうで色々と試したい欲望は尽きません。
・・とかやっていると肝心のプログラミングがほったらかしになりがち。というか既になっているので、プログラミングとプログラミング環境。両方を行き来しながら、少しずつ育てていく感じで、やっていくと良いですね。