概要 tmuxとはターミナルマルチプレクサの略で、主にターミナルで複数のセッション管理ができるツールである。
セッション管理以外にも画面分割をしたり、Vimのキーバインドでターミナル内の文字列をコピー&ペーストができる。
10年以上前に教えてもらって長らくターミナルと組み合わせて使っていたのだけど、最近ではSSHをすることも少なくなり、セッション管理としての用途はほぼ使わなくなってきたものの、画面の分割やコピペはまだまだ重要な機能として使っている。
特に、証跡としてterraform plan結果をガッとコピーしてSlackのテキストスニペットに貼り付けるなどで多用しているし、ターミナルを遡るスクロールにもVimキーバインドが便利なので活用していた。
課題 先述の通り、セッション管理としてはほぼ使っておらず、無くても困らなくなってきた。
なので画面分割とコピペができれば十分なのである。
また、tmuxはどうしても重くなりがちで、zshのcompletion系も相まって、起動が遅かったりする。
他にもVSCodeのターミナルとtmuxの相性が悪かったりするので、VSCodeのターミナルモードをやめることにもなった。
長らくiTerm2+tmuxを使っていたが、数年前にやめてVSCode+tmuxにしつつ、バグったりするのが嫌でこの間までAlactritty+tmuxを使っていた。
AlacrittyもRustで書かれていて動作は軽快だったが、複数ウィンドウを作成できないことからtmuxを抜け出せずにいた。
そこで、Weztermにたどり着いた。
要件 複数ウィンドウを管理できる Vimキーバインドでコピー&ペースト、移動ができる Vimキーバインドで画面の分割ができる 使ってみて まず、WeztermはAlactittyと異なり、アプリケーション側で複数のウィンドウをタブで管理ができる。
つぎに設定ファイルをLuaで記述することができ、かなり柔軟に対応することができる。
結果、下記の設定で、tmuxの画面分割、およびVimキーバインドでコピー&ペーストができるようになった。
$HOME 直下にある ~/.wezterm.lua が設定ファイルなので修正すればOK.
-- Pull in the wezterm API local wezterm = require 'wezterm' -- This will hold the configuration. local config = wezterm.config_builder() local config = { -- Font font = wezterm.font { family = 'Hack Nerd Font Mono', weight = 'Bold', }, font_size = 16.