こんにちは、okutani(@okutani_t)です。zsh環境にpecoを使うことで、入力したコマンド履歴を超便利にたどることができるようになります。pecoを利用すれば、とても快適なターミナル環境を作ることができるのです。
私はMacBookAirを使い始めてからターミナルをよく立ち上げるようになりましたが、それはこのpecoがあるおかげといっても過言ではないです。
それぐらい便利ですし、導入もかんたんにできるのでターミナルを活用している人にはすごくオススメのツールですね。
まだzshを導入していない方は、下記の記事を参考にしておくとより理解が深まるかと思います。zshと同時に「oh-my-zsh」も入れておくと更に便利です。本記事では話をシンプルにするため、これらの導入方法は簡潔に説明する程度に留めています。
また、今回はMac上で作業を行っていますのでご了承ください。では、さっそく導入方法を見ていきましょう。
スポンサーリンク
Macのパッケージ管理ツール「Homebrew」を導入
今回、「zsh」「peco」はそれぞれHomebrewで導入していきます。Homebrewがよく分からない方は下記記事を参考にしてください。ここではかんたんに「Homebrewはパッケージを管理するツールだ」と頭に入れておけばOKです。
Macに次のコマンドでHomebrewを導入しましょう。
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
次のコマンドで導入時にエラーがあったか確認しておきます。
$ brew doctor
何も問題がなければ、このHomebrewを使ってzshを導入することができます。
zshを導入する
zshの導入は次のコマンドで行えます。
$ brew install --without-etcdir zsh
Macのzshは起動時にPATHをリセットしてしまうので、「–without-etcdir」をつけて導入しています。
zsh-completions等もここで導入しておくと便利ですが、今回は長くなりそうなので説明を省略します。気になる方は冒頭の「zsh+oh-my-zshの導入記事」を参考にしてください。
デフォルトのシェルをzshに変更
「/etc/shells」に、viで次のようにHomebrewで導入したzshのパス「/usr/local/bin/zsh」を追記します。
$ vi /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh /usr/local/bin/zsh # ここに追記
次のコマンドを入力することで、Homebrewで導入したzshに変更することができます。
$ chsh -s /usr/local/bin/zsh
パスワードを求められるので適宜入力しましょう。ターミナルを再起動すると、Homebrewで導入したzshに切り替わります。
では、次にoh-my-zshを導入しましょう。
oh-my-zshを導入する
次のコマンドでoh-my-zshを導入します。
$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
次のサイトを参考にすれば、zshのテーマを変更することができます。気になる方は参考にしてください。
LINKThemes · robbyrussell/oh-my-zsh Wiki
これでMacにzsh環境がすべて整いました。最後に本記事のメインである「peco」を導入しましょう。
peco導入
pecoはHomebrewから導入することができます。Homebrewを使うと本当に導入が楽チンで便利ですね。次のコマンド一発で導入できます。
$ brew install peco
次のように導入されました。
これだけでpecoの導入は完了です。
ただ、oh-my-zshを導入していると、今の状態ではpecoは動作しません。なので「~/.zshrc」に以下の記述を行い、pecoが動作するように設定しておく必要があります。
$ vi ~/.zshrc function peco-select-history() { local tac if which tac > /dev/null; then tac="tac" else tac="tail -r" fi BUFFER=$(\history -n 1 | \ eval $tac | \ peco --query "$LBUFFER") CURSOR=$#BUFFER zle clear-screen } zle -N peco-select-history bindkey '^r' peco-select-history
また、このとき一緒に次のコードを~/.zshrcに記述しておけば、zshのコマンド履歴の数を任意に設定することができます。
# ヒストリ(履歴)を保存、数を増やす HISTFILE=~/.zsh_history HISTSIZE=100000 SAVEHIST=100000
esc → ZZで保存し、.zshrcファイルを次のコマンドで再読み込みしましょう。
$ source .zshrc
これでctrl + rでコマンド履歴の一覧が表示されます。超便利!
使いやすくキーバインドを設定
さらに使いやすくするため、次の手順でキーバインドを変更しておくと便利です。
「~/.peco/config.json」に下記を記述、ページ送りやキャンセルコマンド等のキーバインドを設定することができます。
~/.peco/config.jsonが無い場合は各自作成しておきましょう。
$ mkdir ~/.peco $ touch ~/.peco/config.json $ vi ~/.peco/config.json
次のコードをコピペしてあげれば、ページ送りとキャンセルを設定したキーバインドで行えます。
{ "Keymap": { "M-v": "peco.SelectPreviousPage", "C-v": "peco.SelectNextPage", "C-g": "peco.Cancel" } }
その他の使い方
コマンドの後にパイプで「peco」と繋いであげると、入力したコマンドをpecoで選択することができます。
$ ls | peco
私はこれの活用方法がよく分かりませんが、何か便利な使い方があればどなたか教えて下さい!
まとめ
Macにzshとpecoを使うことでめちゃくちゃ快適なターミナル環境を構築することができました。Macでターミナルを使っている方はpeco、必須レベルです。ぜひ試してみてください。
また、私はMacのターミナルソフトに「iTerm2」を使っています。画面分割やタブ表示もできて良い感じです。
Macユーザー様の参考になれば幸いです。