LoginSignup
12
10

More than 5 years have passed since last update.

zsh & tmux で mac のターミナルをより使いやすくカスタマイズ

Last updated at Posted at 2018-10-02

はじめに

いろんな種類のシェルがあるが、macOS ではデフォルトで bash が設定されている。
今回は、シェルのカスタマイズということで、bash よりも高機能な zsh を導入する。

zsh の良い点

  • コマンドの補完機能が充実している
  • コマンドのスペルミスを修正してくれる
  • 複数の zsh 内でコマンド履歴を共有できる
  • カスタムテーマを使える
  • 細かくカスタマイズできる

zsh のインストール

Homebrew の準備

Homebrew がなければ下記のコマンドで Homebrew をインストールする。
このコマンドはHomebrew の公式サイトに記載されている。

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

インストールできたら brew に問題がないかを下記のコマンで確認する。

$ brew doctor
Your system is ready to brew.

バージョンの確認方法と最新版のインストール方法は以下の通りである。

$ brew -v
$ brew update

zsh のインストールとログインシェルの変更

まずは zsh がインストールされているかをバージョンで確認。

$ zsh --version

macOS にはもともと zsh が入っているが、バージョンが古いので下記のコマンドで最新のものをインストールする。
PATH 関連の問題で --disable-etcdir--without-etcdirをオプションに付けてインストールする方法もある。

$ brew install zsh

ただし、このままだと、もともと入っていた zsh が起動してしまう。
/etc/shells(/private/etc/shells でもいけるみたい)で使用できるシェルを確認すると、Homebrew でインストールした /usr/local/bin/zsh が含まれていないことがわかる。
インストールした zsh を使えるようにするために、/usr/local/bin/zsh を末尾に追記する。

$ cat /etc/shells
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

ログインシェルを bash から zsh に変更するには下記のコマンドを実行する。

$ chsh -s /usr/local/bin/zsh

zsh の設定

zgen というプラグインマネージャで zsh の設定を行う。
zsh の設定は基本的には .zshrc に書く。

zgen のインストールと設定

$ git clone https://github.com/tarjoilija/zgen.git "${HOME}/.zgen"

.zshrc に以下を記入する。

# load zgen
source "${HOME}/.zgen/zgen.zsh"

# if the init scipt doesn't exist
if ! zgen saved; then

  # specify plugins here
  # ここに追加したいプラグインを記入していく。
  zgen oh-my-zsh

  # generate the init script from plugins above
  zgen save
fi

記入できたら、下記のコマンドで初期化スクリプトをリセットする必要がある。

$ zgen reset

これはプラグインの追加や削除のたびにしなければならないが、下記のコマンドで自動化もできる。

ZGEN_RESET_ON_CHANGE=(${HOME}/.zshrc ${HOME}/.zshrc.local)

.zshrc ファイルを更新したら source ~/.zshrcで設定を反映させる。

TMUX

tmux は端末多重化ソフトウェアである。
1 つのターミナルで操作しているシェルから実行した tmux 上で複数の仮想端末を操作できる。
難しいことはよく分からないが、とりあえず画面を分割できて、サーバのログを見ながらシェルを操作できるのが良い。(iTerm2 でいいやんってのはある)
セッション・ウィンドウ・ペインから成り、セッションは tmux に管理される仮想端末全体、ウィンドウはセッション内に開かれている 1 つの仮想端末の画面全体、ペインは分割されたウィンドウを指す。

インストールと設定

$ brew install tmux

tmux の設定は ~/.tmux.conf に記載する。

# マウス操作を有効にする
set-option -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

使い方

起動中(アタッチしている)の tmux を操作するには、tmux の操作であることを示すためのプレフィックスキー(デフォルトでは ctrl-b)を入力してから、コマンドを入力する。
どのキーがどの操作に対応しているかは ctrl-b+? で表示できる。

tmux の基本操作

コマンド 意味
tmux tmux を起動してセッションを開始
tmux ls 起動中のセッションを確認
ctrl-b+$ セッションの名前変更
tmux lsc 起動中のセッションに接続されているクライアントを確認
ctrl-b+d セッションをデタッチ(処理を継続したままセッションを終了
tmux attach -t [target-session] デタッチしたセッションにアタッチ(オプションでセッションを指定)
tmux kill-session -t [target-session] 起動中のセッションを削除(オプションでセッションを指定)
tmux kill-server 全てのセッションを削除する (tmuxを終了する)

ウィンドウの操作

コマンド 意味
ctrl-b+c 新規ウィンドウを作成
ctrl-b+[ウィンドウ番号] ウィンドウの切り替え
ctrl-b+n 上の番号のウィンドウへ切り替え
ctrl-b+p 下の番号のウィンドウへ切り替え
ctrl-b+w ウィンドウの一覧を表示
ctrl-b+& ウィンドウを削除
ctrl-b+, ウィンドウの名前変更

ペインの操作(画面分割の操作)

コマンド 意味
ctrl-b+" ウィンドウを水平分割
ctrl-b+% ウィンドウを垂直分割
ctrl-b+カーソル ペインのサイズ変更
ctrl-b+o(カーソル) ペイン間の移動
ctrl-b+q ペインの番号を表示
ctrl-b+q [ペイン番号] 指定したペインへ移動
ctrl-b+:display-panes-time [time] ペイン番号が表示される時間(ミリ秒)を変更
ctrl-b+x ペイン分割を解除

コピーモード

コマンド 意味
ctrl-b+[ コピーモードの開始
スペース コピー開始位置決定
エンター コピー終了位置決定
ctrl-b+] ペースト
Cmd+R マウスでのコピーを可能にする
Cmd+R(再)  マウスでのコピーを不可能にする
option+ドラッグ マウスでのコピー

TPM(Tmux Plugin Manager)

tmux をより便利にするためのプラグイン管理マネージャー。
使用するためにはまず、以下のコマンドで tpm をインストールする。

$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

プラグインはtmux-pluginsに一覧があるため、各プラグインの導入方法と利用方法を確認して ~/.tmux.conf に追記する。

tmux.conf
# プラグインリスト
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

そして、設定ファイルを読み込み、ctrl-b+I でプラグインをインストールできる。(アンインストールする時は ctrl-b+alt+u)

$ tmux source ~/.tmux.conf

参考資料

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10