macOS のターミナルエミュレーター環境放浪記
ぶっちゃけ vim の :terminal から色々起動したりしてるのでターミナルエミュレーターに求めるものはあんまりないのだけど、
- タブが使えること (いちおう)
- (2019/9/19 15:20 追記) Alacritty はタブ使えません
- 速いこと
ということでおそらく最速らしい Alacritty をインストールしてみた。
ちなみに日本語は現在使えません。
Full unicode support · Issue #306 · jwilm/alacritty · GitHub
できる人もいるみたいですが、自分の環境 (macOS デフォルトの日本語 IM) だと全く日本語を入力できませんでした。
Cannot input japanese characters · Issue #1101 · jwilm/alacritty · GitHub
あと変換中もキーを処理しちゃうので↑とか↓のキーを押すと bash に渡って直前の履歴を表示したりします。
こんな感じで日本語を使うにはなかなかつらそうですが、ちょっと試した限り描画には特に問題なさそうな感じだったので、しばらく vim + eskk と併用してしのぐことにしました。 (vim 以外で日本語を入力したかったら vim のバッファで入力してからコピペすることにする) もともとターミナルで日本語をそんな入力することもないのでおそらく大丈夫なはず。
インストール
$ brew cask install alacritty
セットアップ
Ctrl + [ が Esc として認識されない
設定しない限りは自動で認識はしないっぽい。 自由度は高いとはいえ通常のターミナルエミュレーターっぽい動きをするオプションとかないんでしょうか (あったら教えてください)。
という訳で
Keyboard mappings · jwilm/alacritty Wiki · GitHub
を参考に
/Applications/Alacritty.app/Contents/MacOS/alacritty --print-events | grep KeyboardInput
してキーコードのイベントを見て、 [
がどういう名前で呼ばれているか見る。
(grep しているのは大量にイベントが出力されるので)
見るべきは Some(...)
で囲まれている中身。
[2019-08-12 05:25] [INFO] glutin event: WindowEvent { window_id: WindowId(Id(140290951381856)), event: KeyboardInput { device_id: DeviceId(DeviceId), input: KeyboardInput { scancode: 59, state: Pressed, virtual_keycode: Some(LControl), modifiers: ModifiersState { shift: false, ctrl: true, alt: false, logo: false } } } } [2019-08-12 05:25] [INFO] glutin event: WindowEvent { window_id: WindowId(Id(140290951381856)), event: KeyboardInput { device_id: DeviceId(DeviceId), input: KeyboardInput { scancode: 30, state: Pressed, virtual_keycode: Some(LBracket), modifiers: ModifiersState { shift: false, ctrl: true, alt: false, logo: false } } } }
Ctrl + [
を押すと、Control キーが押されたというイベントに加えて LBracket
が押されたと書いてあるのでそれを Esc にマッピングする。
設定ファイル (自分は $HOME/.config/alacritty/alacritty.yml
に追加した) の key_bindings
に以下を追加。
- { key: LBracket, mods: Control, chars: "\e" }
ベンチマーク (雑)
雑すぎるベンチマークなので参考にしないでください。 ただ個人的に乗り換えるきっかけにはなりました。
bash で
$ time yes | head -1000000
# iTerm real 0m2.701s user 0m0.280s sys 0m0.433s # macOS 標準の「ターミナル」 real 0m1.009s user 0m0.254s sys 0m0.424s # Alacritty real 0m0.759s user 0m0.249s sys 0m0.494s
ベンチマークと言いつつ環境についての記載がないってどういうこと?って言われそうですが上記の通りです許して… (単なる比較として見てください。ちゃんとやるなら出力 (描画) のみじゃなくキー入力についてとかも必要そう) 自己満足かもしれないけど自分もデフォルト以外のナウいターミナルエミュレータ使いたかった () っていうのもある。 まぁ個人のブログなので… (それを言ったら終わり)