はじめに
いろんな種類のシェルがあるが、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 に追記する。
# プラグインリスト
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