和洋風KAI

ターミナルのコマンド履歴入力がスーパー楽になるzsh + oh-my-zsh + pecoの導入手順メモ。

名古屋のプログラマー、 @stilo さんから「ターミナル使うなら絶対zsh + oh-my-zsh + pecoを導入したほうがいいよ!」と教えてもらい、実際に使ってみたらすこぶる便利だったので導入メモを書いておきます。

zsh + oh my zsh + pecoの利点。

bushのみに比べて、zsh + oh my zsh + pecoを導入すると飛躍的にコマンドが打ちやすくなります。

どういうことかというとこういうこと。↓↓

つまりcontrol + Rによるコマンド履歴検索がものすごく便利になります。

1文字ずつコマンド履歴を検索し、それをリストアップしてくれます。一度打ったコマンドはすべてもうフルに入力する必要がなくなるくらい快適になります。

ただこの機能を使うだけなら、oh-my-zshはいらないのですが、git回りが便利になりますし、zshが自動アップデートされますし、なにしろ設定しておかないとpecoとoh-my-zshが両立できないので、oh-my-zshの導入方法も書いておきます。

STEP 1. zshを導入する。

zshを導入するのは簡単です。

CentOSの場合は、以下のコマンドを打てばインストールできます。Macは標準で搭載されているためなにもしなくてOKです。

yum -y install zsh

あとは、zshとコマンドすればシェルをbashからzshに変更できます。(※exitとコマンドすれば、通常のbashに戻す事ができます。)↓↓

zsh

ちなみにデフォルトのシェルをbashからzshに変更する場合は、「vi /etc/shells」でzshのpathを確認し、以下のコマンドを打てば変更できます。([]は要りません)

chsh -s [zshのパス]

STEP 2. oh my zshを導入する。

次に、zshを使いやすく設定してくれるoh my zshを導入します。

これも簡単で、以下のコマンドを実行すればインストールできてしまいます。(参考元:oh-my-zsh を使って zsh の便利な設定をまとめて取り入れる – mollifier delta blog)

【Mac版インストールコマンド】

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

【CentOS版インストールコマンド】

wget http://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O – | sh

ちなみにこのままだとRuby on Railsがなぜか走らなくなったので、「vim .zshrc」とコマンドし、以下の設定を.zshrcに追記しましょう。(参考元: MacOSX-Lionでrbenvを使ってRubyOnRailsの環境構築すると、以下のようなメッセージが出てドハマリしたけど、なんとか解決したことについてのメモ(推理なので正しいかどうかの確証持てない) – Qiita)

eval “$(rbenv init -)”

あとはターミナルを再起動すれば良い感じに動くはずです。

STEP 3. pecoの導入。

ここまで来たらあと少し。次にpecoを導入してみましょう。

Macのインストールはとても簡単で下のコマンドを2つ順番に叩くだけ。↓↓

【Mac版のpecoインストール】

brew tap peco/peco

brew install peco

CentOSの場合は以下の4つのコマンドを順番に叩きます。↓↓

【CentOS版のpecoインストール】

wget https://github.com/peco/peco/releases/download/v0.2.11/peco_linux_386.tar.gz

tar xvzf peco_linux_386.tar.gz

cd peco_linux_386

sudo ln -s peco /usr/local/bin/

ただ、oh my zshを導入しているとこのままでは動かないため、「vim .zshrc」とコマンドし、以下の設定を.zshrcに追記しましょう。(参考元: oh-my-zsh の環境で、peco-select-history が動かない – Qiita)

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

あとはターミナルを再起動し、「command + r」のショートカットを叩けば、以下のようなスクリーンショットのようにずらっとコマンドの履歴が表示され、コマンド入力が捗るようになるはずです。↓↓

あとがき


ターミナルを使うたびに、「このコマンド入力のめんどくささどうにかならんかね」と思っていましたが、zsh + oh my zsh + pecoを導入したことで、すべての問題がクリアになってくれました。

あまりに便利すぎてコマンドを忘れてしまいそうですが(笑)

黒い画面は最初はなかなかとっつきにくいですが、慣れると実は結構いいやつで、今回の設定でさらに使えるヤツになってくれました。

ターミナルとにらめっこしている時間が長い方はぜひ導入してみてはいかがでしょうか?

現役エンジニアのオンライン家庭教師CodeCamp