メインコンテンツへスキップ

現時点での私のシェル&プロンプト設定を晒す(というか自分の設定備忘録)

·5 分
Alactitty Tmux Zsh Starship

前提
#

  • macOS Montrey
  • Homebrew 導入済み

使うもの
#

Alacritty(ターミナルエミュレータ)
#

公式サイトはこちら
Rust 製の軽量・シンプルなターミナルエミュレータです。
日本語入力がおかしいという問題があったりするものの( 参考)、早くて使いやすいです。
多機能なやつも試してみましたが、結局はここに落ち着きました。
Homebrew 経由でインストール可能です:

1$ brew install --cask alacritty

設定ファイルは .config/alacritty/alacritty.yml に置きます。 こちらを参考に以下のように設定しています(次に紹介する tmux と関連した設定も入っています):

 1window:
 2  # デカめがいいので
 3  dimensions:
 4    columns: 220
 5    lines: 75
 6
 7  # macは角丸ウインドウなので余白をとったほうが良い
 8  padding:
 9    x: 8
10    y: 4
11
12  # 少し透過
13  opacity: 0.85
14
15scrolling:
16  # consoleのlogを10000行まで保持
17  history: 10000
18
19  # スクロール量は3行
20  multiplier: 3
21
22# フォント設定(白源フォントを利用)
23font:
24  normal:
25    family: 'HackGen Console NFJ'
26    style: Regular
27
28  bold:
29    family: 'HackGen Console NFJ'
30    style: Bold
31
32  size: 14.0
33
34  offset:
35    y: 1
36
37# 基本はデフォルトのzshだが、tmuxを起動するように設定する
38# また起動済みのtmuxがあればattachにする
39shell:
40  program: /usr/local/bin/zsh
41  args:
42    - -l
43    - -c
44    - "/usr/local/bin/tmux a -t 0 || /usr/local/bin/tmux -u"
45
46# キーバインド
47key_bindings:
48  # wikiのrecommnedをそのままコピーしただけ
49  - { key: Comma,     mods: Command,      command:
50      {program: "sh", args: ["-c","open ~/.config/alacritty/alacritty.yml"]}     }
51  - { key: N,         mods: Command,      action: SpawnNewInstance        }
52  - { key: Space,     mods: Alt,          chars: " "                      }
53  - { key: Back,      mods: Super,   chars: "\x15"                        } # delete word/line
54  - { key: Left,      mods: Alt,     chars: "\x1bb"                       } # one word left
55  - { key: Right,     mods: Alt,     chars: "\x1bf"                       } # one word right
56  - { key: Left,      mods: Command, chars: "\x1bOH",   mode: AppCursor   } # Home
57  - { key: Right,     mods: Command, chars: "\x1bOF",   mode: AppCursor   } # End
58  # tmuxのprefixをCtrl-Qにしているので、その設定
59  # これがないとtmuxのprefixが効かずに、Alacrittyのキーバインドに持っていかれるっぽい?
60  - { key: Q,         mods: Control, chars: "\x11"                        } # tmux prefix
61
62# Colors (Solarized Dark)
63colors:
64  # Default colors
65  primary:
66    background: '#002b36' # base03
67    foreground: '#839496' # base0
68
69  # Cursor colors
70  cursor:
71    text:   '#002b36' # base03
72    cursor: '#839496' # base0
73
74  # Normal colors
75  normal:
76    black:   '#073642' # base02
77    red:     '#dc322f' # red
78    green:   '#859900' # green
79    yellow:  '#b58900' # yellow
80    blue:    '#268bd2' # blue
81    magenta: '#d33682' # magenta
82    cyan:    '#2aa198' # cyan
83    white:   '#eee8d5' # base2
84
85  # Bright colors
86  bright:
87    black:   '#002b36' # base03
88    red:     '#cb4b16' # orange
89    green:   '#586e75' # base01
90    yellow:  '#657b83' # base00
91    blue:    '#839496' # base0
92    magenta: '#6c71c4' # violet
93    cyan:    '#93a1a1' # base1
94    white:   '#fdf6e3' # base3

tmux(端末多重化ソフトウェア)
#

Alacritty は iTerm2 のようにタブ機能がついてないので、1つのターミナルを画面分割などをすることで複数のターミナルとして操作できるようにするために導入します。
こちらも、Homebrew 経由でインストールできます:

1$ brew install tmux

設定ファイルは ~/.config/tmux.conf に置きます。

 1# tmux起動時のシェルをzshにする
 2set-option -g default-shell /bin/zsh
 3
 4# tmuxを256色表示できるようにする
 5set-option -g default-terminal screen-256color
 6set -g terminal-overrides 'xterm:colors=256'
 7
 8# prefixキーをC-qに変更
 9set -g prefix C-q
10
11# C-bのキーバインドを解除
12unbind C-b
13
14# ステータスバーをトップに配置する
15set-option -g status-position top
16
17# 左右のステータスバーの長さを決定する
18set-option -g status-left-length 90
19set-option -g status-right-length 90
20
21# #P => ペイン番号
22# 最左に表示
23set-option -g status-left '#H:[#P]'
24
25# Wi-Fi、バッテリー残量、現在時刻
26# 最右に表示
27set-option -g status-right '#(wifi) #(battery --tmux) [%Y-%m-%d(%a) %H:%M]'
28
29# ステータスバーを1秒毎に描画し直す
30set-option -g status-interval 1
31
32# センタライズ(主にウィンドウ番号など)
33set-option -g status-justify centre
34
35# ステータスバーの色を設定する
36set-option -g status-bg "colour238"
37
38# status line の文字色を指定する。
39set-option -g status-fg "colour255"
40
41# vimのキーバインドでペインを移動する
42bind h select-pane -L
43bind j select-pane -D
44bind k select-pane -U
45bind l select-pane -R
46
47# vimのキーバインドでペインをリサイズする
48bind -r H resize-pane -L 5
49bind -r J resize-pane -D 5
50bind -r K resize-pane -U 5
51bind -r L resize-pane -R 5
52
53# | でペインを縦分割する
54bind | split-window -h
55
56# - でペインを縦分割する
57bind - split-window -v
58
59# 番号基準値を変更
60set-option -g base-index 1
61
62# マウス操作を有効にする
63set-option -g mouse on
64bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
65
66# コピーモードを設定する
67# コピーモードでvimキーバインドを使う
68setw -g mode-keys vi
69
70# 'v' で選択を始める
71bind -T copy-mode-vi v send -X begin-selection
72
73# 'V' で行選択
74bind -T copy-mode-vi V send -X select-line
75
76# 'C-v' で矩形選択
77bind -T copy-mode-vi C-v send -X rectangle-toggle
78
79# 'y' でヤンク
80bind -T copy-mode-vi y send -X copy-selection
81
82# 'Y' で行ヤンク
83bind -T copy-mode-vi Y send -X copy-line
84
85# 'C-p'でペースト
86bind-key C-p paste-buffer

Zsh(シェル)
#

fish shell とか Nushell のような新しいシェルも試してみましたが、結局 zsh に戻ってきました。
mac に標準で最初から入っているものを使っています。
Nushell は Rust 製なので気にはなってます。もうちょっと使いやすくなったら乗り換えるかも。

Starship(プロンプト)
#

公式サイトはこちら
今まで Zsh の設定をゴリゴリ書いたり、 oh-my-zsh を利用したりして、プロンプトのカスタマイズをしてたりしましたが、これで一発で解決しました。Rust 製です。
これもまた、Homebrew 経由でインストールできます:

1$ brew install starship

設定ファイルは ~/.config/starship.toml で可能です。 こちらを参考に設定していきます:
 (もっと高度な設定は 公式ドキュメントを参考にすればできそうですが、追々で…)

 1add_newline = true
 2
 3[character]
 4success_symbol = "[>](bold green)"
 5error_symbol = "[✗](bold red)"
 6
 7[username]
 8style_user = "white bold"
 9style_root = "black bold"
10format = "user: [$user]($style) "
11disabled = false
12show_always = true
13
14[directory]
15truncation_length = 100
16truncate_to_repo = false
17
18[memory_usage]
19disabled = false
20threshold = -1
21style = "bold dimmed green"
22format = "via [${ram_pct} / ${swap_pct}]($style) "
23
24[package]
25disabled = true
26
27[time]
28disabled = false
29format = '[\[ $time \]]($style) '

白源フォント
#

公式サイトはこちら
Ricty が好きでずっと使ってきたんけど、最近はこちらのフォントがお気に入りです。
Starship には Nerd Font が必要になりますが、白源フォントにも Nerd Font を追加した版があります。ダウンロードは Homebrew 経由でもできますが、 GitHub リポジトリのリリースページから直接 ttf ファイルをダウンロードしてインストールできます。

zplug
#

zsh のプラグインマネージャーです。Homebrew経由で導入可能です:

1$ brew install zplug

以下の通り、~/.zshrc の設定を書き、有用なプラグインをいくつか入れておきます:

 1export ZPLUG_HOME=$(brew --prefix)/opt/zplug
 2source $ZPLUG_HOME/init.zsh
 3
 4# 構文のハイライト(https://github.com/zsh-users/zsh-syntax-highlighting)
 5zplug "zsh-users/zsh-syntax-highlighting", defer:2
 6# 過去に入力したコマンドの履歴が灰色のサジェストで出る
 7zplug "zsh-users/zsh-history-substring-search"
 8zplug "zsh-users/zsh-autosuggestions", defer:2
 9# 補完強化
10zplug "zsh-users/zsh-completions"
11# コマンド入力途中で上下キー押したときの過去履歴がいい感じに出るようになる
12zplug "zsh-users/zsh-history-substring-search"
13# 256色表示にする
14zplug "chrissicool/zsh-256color"
15
16# インストールしていないプラグインがあればインストールする
17if ! zplug check --verbose; then
18    printf "Install? [y/N]: "
19    if read -q; then
20        echo; zplug install
21    fi
22fi

exa(ls コマンドの拡張 )
#

公式サイトはこちら
Rust 製の ls コマンドの拡張コマンドです。
Homebrew で導入可能です:

1$ brew install exa

~/.zshrc に以下のようにエイリアスを定義しておき、 ls を打った時など、 exa を呼び出すようにします:

 1if [[ $(command -v exa) ]]; then
 2  alias e='exa --icons --git'
 3  alias l=e
 4  alias ls=e
 5  alias ea='exa -a --icons --git'
 6  alias la=ea
 7  alias ee='exa -aahl --icons --git'
 8  alias ll=ee
 9  alias et='exa -T -L 3 -a -I "node_modules|.git|.cache" --icons'
10  alias lt=et
11  alias eta='exa -T -a -I "node_modules|.git|.cache" --color=always --icons | less -r'
12  alias lta=eta
13  alias l='clear && ls'
14fi

設定まとめ
#

こちらに今回の設定+αをまとめています。

所感
#

やっぱ、Rust製のツールは応援したくなるよね。