CLIをカスタマイズして、作業の効率・モチベーションを上げる

CLIをカスタマイズして、作業の効率・モチベーションを上げる

CLIとは、Command Line Interfaceの略で、いわゆる黒い画面のことです。この記事では、iTerm2とpreztoをインストールし、それぞれ設定することでCLIの見た目や機能をカスタマイズする方法を紹介します。

iTerm2は、macで使えるターミナルアプリです。mac純正のターミナルではできない細かな設定や、hotkeyの設定、画面分割などができます(tmuxが使える方であれば、画面分割はターミナルでも出来ます)。
preztoは、zsh(シェル)のフレームワークです。preztoを使うと、プロンプトのテーマの設定やコマンドの補完を簡単に設定できるようになります。
どちらのインストールにもHomebrew(Homebrew Cask)を使うので、公式サイトなどを参考にインストールしておいてください。

やること

  • iTerm2をインストールする
  • iTerm2の設定
  • ログインシェルをzshに変更する
  • preztoでzshのプロンプトを設定する

iTerm2をインストールする

brew caskを使ってiTerm2をインストールするため、まず、iTerm2がインストールできるかを確認します。

$ brew search iterm2
==> Casks
iterm2                          homebrew/cask-versions/iterm2-legacy

上記のように表示されれば、下記のコマンドを入力し、パスワードを入力してインストール完了です。

$ brew cask install iterm2
Updating Homebrew...
==> Downloading https://iterm2.com/downloads/stable/iTerm2-3_3_9.zip
〜省略〜
iterm2 was successfully installed!

iTerm2の設定

上記の方法でインストールが完了したら、アプリケーションフォルダやLaunchpadにiTerm2が入っているのが確認できると思います。iTerm2を起動し、設定を行っていきます。

色の設定

メニューバーのiTerm > Preferences > Profiles > Colors で、文字や背景、カーソルなどの色の設定ができます。
文字や背景色を自分好みに設定したり、同設定画面の右下にあるColor Presetsからプリセットを選ぶことが出来ます。

また、プリセットはネットから拾ってきてインポートすることも出来ます。ネットで公開されているプリセットは、デザインの専門家が「目に優しい色」「読みやすい色」など色々と工夫をこらして設計されているものが多いです。
私は、Icebergというプリセットを使っています。

Icebergを使う場合、下記のコマンドでカラーテーマをgithubからダウンロードし、

$ curl -O https://raw.githubusercontent.com/Arc0re/Iceberg-iTerm2/master/iceberg.itermcolors

Color PresetsにあるImportから、ダウンロードしたiceberg.itermcolorsを選択すればOKです。
プリセットをIcebergに設定した場合、このような色になります

フォントの設定

メニューバーのiTerm > Preferences > Profiles > Text から、フォントや文字の大きさを設定することが出来ます。
私は、ここは初期設定のままで使っています。

背景色の透過設定

メニューバーのiTerm > Preferences > Profiles > Window > Transparency から、背景の透過を設定できます。
背景がちょっと透けるとなんとなくかっこよくなってテンションが上ります。

iTerm2の便利な機能

iTerm2には、mac純正のターミナルにはない便利な機能があります.

画面分割

command + dで、画面を左右に分割できます。上下の分割はcommand + shift + dです。分割した画面は、command + [command + ]で移動できます。分割した画面を削除したいときはcommand + wです。

画像のように、アクティブになっている画面は濃く、それ以外の画面は薄く(白っぽく)表示されます。

hotkey

hotkeyとは、どの画面からでもショートカットキーでiTerm2をすぐ利用できる機能です。
メニューバーのiTerm > Preferences > Keys > Hotkey から、Show/hide all windows with a system-wide hotkey にチェックを入れてください。初期設定ではoption + spaceがhotkeyに設定されています。
使ってみていただくとよくわかると思うのですが、設定したhotkeyを入力すると、iTerm2の表示/非表示が瞬時に切り替わって、かなり便利です。dockからiTerm2のアイコンを探したり、command + Tabを連打して画面を切り替えたりする手間が省けます。

ログインシェルをzshに変更する

preztoはzshのフレームワークなので、まずはログインシェルをzshに設定します。(MacOS Catalina からはデフォルトでログインシェルがzshになっているため、Catalinaの方はここの対応は特に必要ありません。)

chsh -s /bin/zsh

上記のコマンドを入力し、パスワードを入力したら設定完了です。

シェルをbashからzshに変更するのが不安な方もいらっしゃると思います。どうしてもbashに戻したくなったら、

chsh -s /bin/bash

でbashに戻せますのでご安心ください。
ちなみに私はzshのことを何も知らずにシェルをbashからzshに変更しましたが、困ったことは一度もないです。

preztoでzshのプロンプトを設定する

macのbashのデフォルトのプロンプトは下記のようになっていると思います。

(コンピューター名):(カレントディレクトリ) (ユーザー名)$

常時表示されるプロンプトにコンピューター名やユーザー名は必要でしょうか…。私は必要ありません。逆に、gitの現在のブランチなんかが表示されるとうれしいです。あと、前回の出力とプロンプトとの間に空白があると見やすいな〜とか思ったりもします。
そういったカスタマイズは、シェルの設定ファイルにいろいろ書き込むことでできると思いますが、誰かが作ってくれた使いやすい設定をそのまま使うことができれば、それが一番楽ですよね。
preztoを使えば、誰かが作ってくれたプロンプト設定を簡単に使うことが出来ます。

preztoの導入

prezto公式の手順に従ってpreztoを導入していきます。
ホームディレクトリ(~)で作業してください。cdコマンドでホームディレクトリ(~)に移動できます。
既存のzsh構成ファイルが残っている場合、下記のコマンドを入力するなどして、それらの構成ファイルを別のディレクトリに移動させてください。

$ mkdir zsh_original && mv .zlogin .zlogout .zprofile .zshenv .zshrc zsh_original

zshrcなどの既存のzsh構成ファイルが残ったまま以降の設定をしてしまうと、ln -sが失敗してエラーになってしまったりします。

上記対応が完了したら、まず、zshを起動します(ログインシェルをzshに設定したあとであれば、ターミナルを再起動すればzshは起動します)。

$ zsh

プロンプトが下記のように変化していれば、OKです。

(ユーザー名)%

下記コマンドを実行して、preztoのリポジトリをcloneします。

$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

下記コマンドを実行し(まるごとコピペしてしまって大丈夫です)、cloneしたリポジトリからzsh構成ファイルをコピーして、新しいzsh構成を作成します。

setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

上記が完了したら、ターミナルを再起動してください。プロンプトがなにやらカラフルな感じに変わっていたら成功です。

これは、preztoで最初に設定されているsorinというテーマのプロンプトです。

preztoの設定

まず、テーマを自分の好きなものに変更します。下記コマンドで、使用できるテーマの一覧をプレビューできます。

$ prompt -p

私は、pureというテーマを使っています。
pureを設定する場合、設定ファイル~/.zpreztorc

zstyle ':prezto:module:prompt' theme 'sorin'

の部分を、下記の通り修正します。

zstyle ':prezto:module:prompt' theme 'pure'

上記の修正後ターミナルを再起動すると、下記のようなプロンプトになります。

(カレントディレクトリ) (gitの現在のブランチ)
> 

という表示になっていますね。
さらに、前回の出力とプロンプトの間に空白が一行分あります。
とっても見やすくなりました。

さらに、補完とシンタックスハイライトのモジュールを有効にします。
同じく~/.zpreztorcの、zstyle ':prezto:load' pmodule \以下を下記のように修正します。('syntax-highlighting' \'autosuggestions' \を追加)

zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'syntax-highlighting' \
  'autosuggestions' \
  'prompt' \

上記修正後、ターミナルを再起動すれば設定が反映されます。

上記の画像のように、cdと入力するだけであとに続くコマンドを履歴からサジェストしてくれたり、Tabキーを入力すると候補のディレクトリ・gitのブランチ・ssh接続先等を表示してくれたり、コマンドの文字の色を変えてくれたり(存在しないコマンドの場合赤文字になる)してくれるようになり、とっても便利になりました。

CLIが整いました

以上の作業で、あなたのCLIは見た目も機能もかなり整い、あなた好みのものになったのではないでしょうか。
CLIに愛着を持ち、日々エンジニアリングを楽しんでいきましょう!

採用情報

メンバーズエッジで最高のチームで最高のプロダクトを作りませんか?

最高のプロダクトをつくる 最高のチームで働く

在宅でも、地方でも、首都圏でも。多様な働き方で最高のチームをつくり、お客様のプロダクトパートナーを目指します。アジャイル開発を通じ、開発現場の第一線で活躍し続けたいエンジニアを募集しています。