Macの開発環境をzshで良い感じにする


このエントリーでは、Macの開発環境をzshで良い感じにする記事です
今年からシステムエンジニアからWebエンジニアへキャリアチェンジし、今まで使ってきた開発環境がガッツリ変わりました。
今回は、同僚や記事を参考にして自分なりに設定した開発環境の設定をご紹介します

この記事はまだ荒削りな内容のため近いうちに内容を修正追加する予定です🙇

環境

macOS Sierra 10.12.6

コマンドラインツールのインストール(アップデート)

まずは、AppストアからXcodeをインストールをしてください
インストール後、下記のコマンドを実行しコマンドラインツールのインストールをしましょう

$ xcode-select --install

homebrewのインストール

公式ページを確認の上、以下を実行

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

gitのインストール

この記事ではgitのコマンドを多用するためgitをインストールします

$ brew install git

zshのインストール

zshをインストールする

$ brew install zsh

ログインシェルの変更する

$vi /etc/shellsでviを立ち上げて一番下の行に/usr/local/bin/zsh(Homebrewでインストールしたzshのパス)を追加する

/etc/shells
+ /usr/local/bin/zsh

$ chsh -s /usr/local/bin/zshでシェルを変更する

preztoをインストールする

zshを設定するフレームワークとしてoh-my-zshが有名ですが、今回は軽量であるpreztoをインストールします
公式の通り以下を実行

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

※すでに、zshの設定ファイルがある場合はねんのため退避させておきましょう
$mkdir ~/zsh_backup
$mv .zlogin .zlogout .zprofile .zshenv .zshrc ~/zsh_backup

zshの設定ファイルを作成します

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

デフォルトで立ち上げあがるエディタをvimに変更する

このままの設定だとgit mergeした時になどに立ち上がるエディタがnanoというエディタが立ち上がります。
そのため、vimが立ち上がるように修正します

~/.zprofile

#
# Editors
#

- export EDITOR='nano'
+ export EDITOR='vim'
- export VISUAL='nano'
+ export VISUAL='vim'
export PAGER='less'

テーマを適用する

今回は試しにこちらのテーマを適用します

~/.zpreztorc
+ zstyle ':prezto:module:prompt' theme 'agnoster'

zsh-completions

zshの補完を強化するためにzsh-completionsをインストールします
https://github.com/zsh-users/zsh-completions

公式の通り以下を実行する

インストール

$ brew install zsh-completions

.zshrcに設定を追加

~/.zshrc
+ fpath=(path/to/zsh-completions/src $fpath)

zcompdumpをリビルドする

$ rm -f ~/.zcompdump; compinit

peco

ターミナルで今まで実行したコマンドの履歴を呼び出せるようにするためにpecoをインストールします
https://github.com/peco/peco

インストール

$ brew install peco

設定

ctrl+rで呼び出せるようにするのと同じコマンドを重複して表示させないように設定します

~/.zshrc
+ #peco
+ function peco-history-selection() {
+     BUFFER=$(history 1 | sort -k1,1nr | perl -ne 'BEGIN { my @lines = (); } s/^\s*\d+\*?\s*//; $in=$_; if (!(grep {$in eq $_} @lines)) { push(@lines, $in); print $in; }' | peco --query "$LBUFFER")
+     CURSOR=${#BUFFER}
+     zle reset-prompt
+ }
+ zle -N peco-history-selection
+ bindkey '^R' peco-history-selection

ghq

ghqは予め設定したルートリポジトリにgit cloneをしたり、リポジトリの一覧を表示するなどの管理ができるツールです
https://github.com/motemen/ghq

インストール

$ brew install ghq

ルートリポジトリの設定

~/.gitconfig
+[ghq]
+  root = ~/設定したいディレクトリ

こうすることで、~/設定したいディレクトリへ移動しなくてもghq get リモートリポジトリURLで予め設定したルートリポジトリにリポジトリがクローンされます

tmux

端末多重化ソフトウェアと呼ばれるもので、これを入れると複数ウィンドウでのターミナル操作が便利になります

インストール

$ brew install tmux

.tmux.confの設定

tmuxのインストールが終わった後は自分のホームディレクトリ(~/)直下に.tmux.confという設定ファイルを作成し、設定を記入していきます
設定は以下の記事を参考にprefixキーをC-aに変更するC-q(Ctrl+q)に変更したものを利用しております
達人に学ぶ.tmux.confの基本設定 - Qiita

~/.tmux.conf
- # prefixキーをC-aに変更する
+ # prefixキーをC-qに変更する
- set -g prefix C-a
+ set -g prefix C-q

使い方

まずは普通にターミナルを立ち上げます。その後にtmuxコマンドを実行し、tmuxを立ち上げます。
すると以下のような画面になると思います。

ペイン(領域)分割

tmuxを立ち上げた状態ででprefixキー(今回の場合、Ctrl+q)を押した後に、|(パイプ)キーを押すと縦の方向で別の領域を立ち上げることができます。
(※prefixキーを押しながらではありません)
さらにprefixキーを押した後に"(ダブルコーテーション)キーを押すと横の方向で別の領域を立ち上げることができます。
結果として以下のように1つのウィンドウで3つの領域に分割することができました。
今まではターミナルのウィンドウやタブを複数立ち上げていましたが、キレイに分割されて大分見やすく、便利になりましたね。

ペイン移動

各ペインの移動はprefixキーを押した後に方向キーを押すか、各ペインに対してマウスクリックをすれば移動ができます。

他にも色々なコマンドがあるので調べてみてください。


以上となります。
今度はこれをスクリプト化したいですね。
そちらは別の機会に書こうと思います。

参考記事

https://dev.classmethod.jp/tool/zsh-prezto/
https://qiita.com/shepabashi/items/f2bc2be37a31df49bca5
https://qiita.com/succi0303/items/cb396704493476373edf