ターミナル、デフォルトのまま使用してませんか。ターミナルはもっとかっこよく、そして生産性を高く上げることができます。そのためのツールが数多く存在しますが、今回はその中でも基本となるツール群をご紹介します。
変更前の状態です。(テーマだけ「Pro」に変更しています)
変更後は以下のようになります。私は、iTerm2を使用していますが、Mac標準のターミナルでも実現できます。
ついでに、ターミナルに新しい検索(ファジー検索)も導入します。
ターミナルでの生産性を上げてくれるツール群
macOSの場合、標準のログインシェルは/bin/bashですが/bin/zshを使用するように変更します。その際に、/bin/zshの拡張機能(フレームワーク)であるoh-my-zshを使用します。oh-my-zshは、テーマやプラグインが豊富で、カスタマイズが自由にできることが特徴です。
~/.zshrcのバックアップ
すでに/bin/zshを使用している場合、~/.zshrcをバックアップしておきましょう。oh-my-zshインストール時に上書きされてしまいます。
oh-my-zsh
定番のoh-my-zshを導入します。以下のコマンドを実行すると、カレントユーザーのログインシェルが/bin/zshに変更されます。インストール後は、ターミナルを再起動してプロンプトが変更されていることを確認します。
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Hack Nerd Fontの導入
Hack Nerd Fontは、デベロッパーのために開発されたフォントです。Gitなどの状態を、ターミナル上にビジュアル的にアイコンとして表示してくれるフォントです。必須ではありませんが、導入しておくと、色々と役に立ちます。今回は、このフォントが導入されていることを前提とします。macOSの場合、Homebrewで簡単にインストールできます。
brew cask install font-hack-nerd-font
インストール後は、環境設定でフォントを「Hack Regular Nerd Font Complete」に変更しておきましょう。(下図は、iTerm2の環境設定画面です)
oh-my-zshのテーマ変更
oh-my-zshには多数のテーマが用意されています。テーマを導入することで、簡単にターミナルの見た目を変更したり、機能を拡張できます。今回はpowerlevel9kを導入します。
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
続いて、/bin/zshのrcスクリプトである~/.zshrcを編集します。
テーマを「powerlevel9k」に、「powerlevel9k」のモードを変更します。モードについては、Install Instructions · bhilburn/powerlevel9k Wikiに記載方法があります。デフォルトでは「Powerlevel9k」と呼ばれるモードですが、先ほどインストールした「Nerd Font」を使用するモードに変更します。
ZSH_THEME="powerlevel9k/powerlevel9k"
POWERLEVEL9K_MODE="nerdfont-complete"
~/.zshrcを編集したら、同ファイルを再度読み込みます。ターミナルを開き直すか、以下のコマンドを実行してリロードしてください。なお、これ以降で紹介する内容についても、反映するためには以下のコマンドを実行するか、ターミナルを開き直す必要があります。
exec $SHELL -l
ここまでで見た目が以下のように変更されます。表示されているアイコンについては、こちらを参照してください。デフォルトでは、プロンプトにvcs、今回の場合はGitに関する情報が表示されるようになっています。現在のブランチやスタッシュの数、またプッシュ、プルされていないコードの数が表示されるようになっています。
表示されるプロンプトの内容は~/.zshrcで変更できます。POWERLEVEL9K_LEFT_PROMPT_ELEMENTSとPOWERLEVEL9K_RIGHT_PROMPT_ELEMENTSを追加します。設定できる内容は、こちらに記載があります。なお、POWERLEVEL9K_LEFT_PROMPT_ELEMENTSを設定すると、POWERLEVEL9K_RIGHT_PROMPT_ELEMENTSにはデフォルト値が自動的に設定されます。
今回は、POWERLEVEL9K_RIGHT_PROMPT_ELEMENTSにos_icon、dir、vcsを設定しています。os_iconは、macOSの場合、Appleのロゴが表示されます。dirはカレントディレクトリのパスです。vcsは、Gitの情報が表示されます。(VCSは、Version Control Systemの略称です。文字通りGit以外のバージョン管理システムの情報を表示することもできます)
その他、PHPやNode.jsの実行環境のバージョン、DockerやAWSの情報を表示できます。また、プロンプトが長すぎる場合は、newlineと記載することでプロンプトを改行して表示できます。私の場合、なるべく簡潔に表示したいため、改行は使用していませんが、ウインドウサイズが小さい場合などには併用すると良いでしょう。
プラグインの導入
では、続いてプラグインを導入していきましょう。デフォルトではgitプラグインが有効になっています。同プラグインが有効になっている場合、Gitに関するコマンドの自動補完が有効になる他、便利な各種エイリアスが設定されています。
gitと入力し、⇥ (TAB) キーを押下するとコマンドが補完されます。また、aliasコマンドでGitに関するエイリアスを確認できます。gから始まるコマンドがGitのエイリアスです。たとえば、ggpushでは現在のブランチの内容をリモートリポジトリにプッシュします。
zsh-syntax-highlighting
便利なプラグイン(GitHubで人気のプラグイン)を2つご紹介します。1つ目は、zsh-syntax-highlightingです。ZshでFish shellのようなシンタックスハイライトを実現するためのツールです。実行しようとしているコマンドが存在するか、エディタで開こうとしているファイルが存在するかを、実行する前にチェックしてプロンプト上でわかりやすく表示してくれます。
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
上記のコマンドでインストールしたら、~/.zshrcをエディタで開き、pluginsの行を修正します。ロードするプラグインの区切り文字は半角スペースです。zsh-syntax-highlightingを追加します。
存在するコマンドは、下記のように「緑色」で表示されます。これはエイリアスとして設定されているコマンドも同様です。たとえば、gitプラグインが有効になっている場合、gはgitのエイリアスですが、gと打つと緑色になります。
存在しないコマンドは、赤色になります。
また、存在するディレクトリやファイルには下線が付きます。ファイルやディレクトリを誤って上書き、削除する可能性を低減できます。
zsh-autosuggestions
2つ目のプラグインです。zsh-autosuggestionsは、文字通りコマンドの自動補完です。oh-my-zshには、デフォルトでgitのようにプラグインがあり、自動補完を有効化できます。このプラグインを導入すると、個別にプラグインを導入しなくても、よく使用されるコマンド、たとえばdockerやnpmなどのコマンドが自動補完されるようになります。ただし、gitプラグインのようにエイリアスまで設定されるわけではありませんので、必要に応じて他のプラグインを追加しましょう。
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
インストールしたら、いつも通り~/.zshrcにzsh-autosuggestionsを追記します。
たとえば、dockerと入力して⇥ (TAB)キーを押すとコマンドが補完され、一覧として表示されるようになります。コマンドのみならず、そのコマンドのオプションや、サブコマンドについても補完されるようになります。もちろん、エイリアスも補完してくれます。
fzf (command-line fuzzy finder)
ここまでは、oh-my-zshに関する補足でした。最後に、ターミナルをさらに便利にするツールを1つご紹介します。fzfは、コマンドの実行履歴(~/.zsh_history)や、カレントディレクトリ配下のディレクトリやファイル一覧を表示してくれます。また、そのインクリメンタルサーチも可能です。以前実行したコマンドをもう1回実行したい、ファイル名がうろ覚えといった場合に役に立ちます。
brew install fzf
$(brew --prefix)/opt/fzf/install
インストールは、Homebrewからおこないます。インストール時の設定は、すべて「y」で問題ないでしょう。たとえば、コマンドの実行履歴は、⌃ (Control) + Rで表示できます。
カレントディレクトリ配下の、ディレクトリやファイル一覧は、⌃ (Control) + Tで表示できます。
関連リンク
今回使用したツールに関するリンク集です。ツールについてもっと深く知りたい方は、以下のリンク集をご参照ください。
- robbyrussell/oh-my-zshx
- bhilburn/powerlevel9k: The most awesome Powerline theme for ZSH around!
- Nerd Fonts - Iconic font aggregator, collection, and patcher
- zsh-users/zsh-syntax-highlighting: Fish shell like syntax highlighting for Zsh.
- zsh-users/zsh-autosuggestions: Fish-like autosuggestions for zsh
- junegunn/fzf: A command-line fuzzy finder
- iTerm2 - macOS Terminal Replacement