iTerm2を卒業してAlacritty+tmuxに挑んでみた

最近iTermが重かったので[この記事](https://qiita.com/KeisukeToyota/items/5ad9bf66fb687804b3eb)を読んでAlacrittyにチャレンジしてみる
いい機会だから今までちゃんと触ったことがなかったtmuxにもチャンレジしてみる

# Alacritty
## インストール
公式の方法で何故かちゃんとインストール出来なかったのでHomebrewでインストールした

```bash
brew tap mscharley/homebrew
brew install --HEAD alacritty
```

## フォントのインストール
iTermでも使ってたFiraCodeを使うことにした
かなり昔にインストールしたから覚えて無いけど多分これでインストール出来る・・・はず

```bash
brew tap caskroom/fonts
brew cask install font-fira-code
```

## 設定
XDG_CONFIG_HOMEにAlacrittyのコンフィグファイルが出来ているのでそれを修正する
といってもフォントとサイズぐらいしか触ってない

```diff:$XDG_CONFIG_HOME/alacritty/alacritty.yml
  # Font configuration (changes require restart)
  font:
    # The normal (roman) font face to use.
    normal:
-     family: Menlo
+     family: Fira Code
      # Style can be specified to pick a specific face.
      # style: Regular

    # The bold font face
    bold:
-     family: Menlo
+     family: Fira Code
      # Style can be specified to pick a specific face.
      # style: Bold

    # The italic font face
    italic:
-     family: Menlo
+     family: Fira Code
      # Style can be specified to pick a specific face.
      # style: Italic
```

# tmux
Alacrittyにはウィンドウやスクリーンの分割機能がないのでtmuxを利用する

## インストール
```bash
brew install tmux
brew install reattach-to-user-namespace # クリップボード共有のために追加
```

## 設定
XDG_CONFIG_HOMEに設定ファイル置きたかったので、zshのaliasで対応

```zsh:$XDG_CONFIG_HOME/zsh/.zalias
# tmux
alias tmux="tmux -f $XDG_CONFIG_HOME/tmux/tmux.conf"
```

tmuxの設定は大体[このサイト](https://qiita.com/succi0303/items/cb396704493476373edf)のをパクリスペクトしたのでこんな感じ

```conf:$XDG_CONFIG_HOME/tmux/tmux.conf
# ウィンドウのインデックスを1から始める
set -g base-index 1

# ペインのインデックスを1から始める
setw -g pane-base-index 1

# マウス操作を有効にする
setw -g mouse on

# 256色端末を使用する
set -g default-terminal "screen-256color"

# ステータスバーの色を設定する
set -g status-fg white
set -g status-bg black

# ウィンドウリストの色を設定する
setw -g window-status-fg cyan
setw -g window-status-bg default
setw -g window-status-attr dim
# アクティブなウィンドウを目立たせる
setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright

# ペインボーダーの色を設定する
set -g pane-border-fg green
set -g pane-border-bg black
# アクティブなペインを目立たせる
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow

# コマンドラインの色を設定する
set -g message-fg white
set -g message-bg black
set -g message-attr bright

# ステータスバーを設定する
## 左パネルを設定する
set -g status-left-length 40
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
## 右パネルを設定する
set -g status-right "#[fg=cyan][%Y-%m-%d(%a) %H:%M]"
## リフレッシュの間隔を設定する(デフォルト 15秒)
set -g status-interval 60
## ウィンドウリストの位置を中心寄せにする
set -g status-justify centre
## ヴィジュアルノーティフィケーションを有効にする
setw -g monitor-activity on
set -g visual-activity on
## ステータスバーを上部に表示する
set -g status-position top

# コピーモードを設定する
## viのキーバインドを使用する
setw -g mode-keys vi
## クリップボード共有を有効にする
set-option -g default-command "reattach-to-user-namespace -l zsh"
```

しばらくはtmux自体に慣れるためにデフォルトキーバインドで使いたいと思う

## ※ 2018/10/16 追記
しばらくtmuxのデフォルトキーバインドで使っていたがどうしても使いづらい部分とかを修正したので追記しておく。

まずはプリフィックスの変更。Vimmerなので、Ctrl+bはVimで使っているため

```conf:tmux.conf
# Vimmerなので Ctrl + b は使用しているため、プリフィックスを Ctrl + g に変更する
set -g prefix C-g
unbind-key C-b
bind-key C-g send-prefix
```

同僚に教えてもらったおすすめ設定を追加。カレントディレクトリの引き継ぎは非常に助かってる。

```conf:tmux.conf
# Escをプロセスに渡す時間を 0 ms にする
set -g escape-time 0

# ウィンドウのインデックスのリナンバーを有効にする
set -g renumber-windows on

# ペイン分割
## 垂直分割 + カレントディレクトリを引き継ぐ
bind % split-window -h -c "#{pane_current_path}"
## 水平分割 + カレントディレクトリを引き継ぐ
bind '"' split-window -v -c "#{pane_current_path}"
 # ウィンドウ作成時にカレントディレクトリを引き継ぐ
bind-key -T prefix c new-window -c "#{pane_current_path}"
```

あとはやっぱりVimのキーバインドでペイン移動が出来たほうがありがたいので追加

```conf:tmux.conf
# Vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
```

tmuxのcopy-modeの使い勝手が悪かったので、マウス操作周りで以下の設定を追加

```conf:tmux.conf
# マウスで範囲選択終了時にcopy-modeを終了しない
unbind -T copy-mode-vi MouseDragEnd1Pane
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe "reattach-to-user-namespace pbcopy"
bind-key -T copy-mode-vi y send-keys -X copy-pipe "reattach-to-user-namespace pbcopy"
```

以上、今のところはこれでほぼ問題なく使えてる。

他におすすめの設定があれば教えてください