こんにちは。あやかです。

Macでターミナル作業をしていると、「あのコマンド何だっけ?」とか「このファイル、どこにあったっけ?」みたいなこと、ありませんか?私はしょっちゅうあります。

macOSのデフォルトシェルがbashからzshに変わって、確かに以前より便利になりました。でも、ちょっとツールを追加するだけで、もっと快適になるんです。

今回は、zsh初心者の私が「これは便利!」と思った2つのツールを紹介します。

zshって何が便利なの?

まず、zshの基本的な便利ポイントをおさらいしておきます。

macOSは、Catalina(10.15)からデフォルトシェルがzshになりました。bashと比べて、何が便利になったかというと:

補完機能が賢い
コマンドのオプションや、gitのブランチ名なんかも補完してくれます。Tabキーを押すと候補がリスト表示されて、矢印キーで選べるのも地味に便利です。

履歴機能が強力
複数のターミナルを開いていても、履歴を共有できます。Ctrl+Rで履歴を検索できるのは、bashでもできましたが、zshの方が使いやすいです。

カスタマイズしやすい
プロンプト(コマンドを入力する行)の見た目を自由に変えられます。gitのブランチ名を表示したり、色を変えたり。

こんな感じで、zshは標準でも十分便利なんですが、今回紹介する2つのツールを入れると、もっと快適になります。

fzf:検索が劇的に便利になる

最初に紹介するのは「fzf」です。

fzfって何?

fzfは、あいまい検索(fuzzy finder)ツールです。コマンド履歴、ファイル、ディレクトリを、直感的に検索できます。

文字を打つと、リアルタイムで候補が絞り込まれるので、目的のものをすぐに見つけられます。

インストール方法

Homebrewでインストールできます。

brew install fzf

# キーバインドとシェル補完を有効にする
$(brew --prefix)/opt/fzf/install

最後のコマンドを実行すると、対話形式で質問されます。すべて「Yes」で答えておけば大丈夫です。これで、.zshrcに設定が自動追加されます。

設定を反映させます。

source ~/.zshrc

3つの便利機能

fzfには、3つの便利なキーバインドがあります。

1. Ctrl+R:履歴検索

コマンド履歴を検索できます。

fzfで履歴検索している画面
fzfで履歴検索している画面

Ctrl+Rを押すと、過去のコマンド履歴が一覧表示されます。文字を打つと、リアルタイムで絞り込まれます。矢印キーで選んで、Enterで確定すると、そのコマンドが入力されます。

私の場合、hugo server -Fとかgit pushみたいに、繰り返し使うコマンドが多いんです。fzfなら、hugoって打つだけで、hugo関連のコマンドだけに絞り込まれます。長いコマンドも一瞬で呼び出せるので、本当に便利です。

2. Ctrl+T:ファイル検索

カレントディレクトリ以下のファイルを検索して、パスを挿入できます。

例えば、vimって打った後にCtrl+Tを押すと、ファイル一覧が表示されます。ファイル名の一部を打つと絞り込まれて、選択すると自動でパスが入力されます。

深い階層にあるファイルを開くときに、いちいちパスを打たなくていいので楽です。設定ファイルを編集したいときなんかに、特に便利ですね。

3. Option+C:ディレクトリ移動

ディレクトリを検索して、すぐに移動できます。

fzfでディレクトリ検索している画面
fzfでディレクトリ検索している画面

Option+C(Macの場合)を押すと、ディレクトリ一覧が表示されます。ディレクトリ名の一部を打つと絞り込まれて、選択すると自動でcdされます。

※Macの場合、Optionキーがメタキーとして認識されない場合があります。その場合は、ターミナルの設定で「Optionキーをメタキーとして使用」を有効にしてください。私はTabbyを使っているので、Settingsから「Option/Alt key sends meta」のような設定を探して有効にしました。

使ってみた感想

fzfを入れてから、ターミナル作業がすごく楽になりました。

特に、履歴検索とディレクトリ移動が便利です。以前は、履歴をCtrl+Rで遡って探したり、cdでパスを打ったり、みたいなことをしていたんですが、その手間がなくなりました。

ファイル検索も、深い階層にあるファイルを開くときに重宝します。「あのファイル、どこだっけ?」って思ったとき、Ctrl+Tで一発です。

視覚的に候補が見えるのも分かりやすいです。「あのコマンド何だっけ?」って思ったとき、一覧で確認できるので、すぐに見つけられます。

zsh-autosuggestions:入力が楽になる

2つ目は「zsh-autosuggestions」です。

zsh-autosuggestionsって何?

打ってる途中で、過去のコマンドを薄く表示してくれるツールです。

履歴から自動で候補を出してくれるので、タイプ量が減ります。右矢印キーで確定できるので、操作も簡単です。

インストール方法

Homebrewでインストールできます。

brew install zsh-autosuggestions

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

# zsh-autosuggestions
source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh

設定を反映させます。

source ~/.zshrc

使い方

使い方は簡単です。

zsh-autosuggestionsの候補表示画面
zsh-autosuggestionsの候補表示画面
  1. コマンドを打ち始める(例:git
  2. 薄いグレーで候補が表示される
  3. 右矢印キー(→)を押すと確定
  4. 違う候補がいい場合は、そのまま続けて打つ

過去によく打つコマンドほど、候補として出やすくなります。

使ってみた感想

地味だけど、めちゃくちゃ便利です。

特に、長いコマンドとか、オプションが複雑なコマンドを打つときに重宝します。数文字打っただけで、候補が出てくるので、タイプミスも減りました。

fzfのCtrl+Rと使い分けています。「最近使ったコマンドをもう一回」みたいなときは、autosuggestionsで十分です。数文字打てば候補が出るので、わざわざ検索画面を開く必要がありません。

逆に、「ちょっと前に使ったコマンド」とか「似たようなコマンドを探したい」ときは、fzfで検索します。一覧で確認できるので、目的のコマンドを見つけやすいです。

まとめ

今回は、zsh初心者の私が最初に入れた2つのツールを紹介しました。

fzf:履歴、ファイル、ディレクトリを検索できるツール。Ctrl+RCtrl+TOption+Cで快適に操作できます。

zsh-autosuggestions:打ってる途中で、過去のコマンドを薄く表示してくれるツール。右矢印で確定できるので、タイプ量が減ります。

どちらも導入が簡単で、すぐに効果を実感できます。zshを使い始めたばかりの方は、ぜひ試してみてください。

次のステップとしては、プロンプトのカスタマイズ(Starshipとか)や、プラグインマネージャー(oh-my-zshとか)を入れて、もっと便利にしていくのもありですね。

それでは、また。