【Linux備忘録】[WezTerm入門] 美しい!高機能!次世代ターミナル徹底ガイド(Windows対応)

はじめに

Linux Debianのインストール環境を整えていく中で、AIにおすすめアプリを聞くと、複数の候補の中で目に留まった「WezTerm」というターミナル用アプリ。

かなり細かくカスタムできることが分かり、早速導入していじってるのですが、設定項目が多いので備忘録を兼ねてメモを残したいと思います。

対応OSは、Linux以外に、WIndowsと、Macにも対応してますが、今回はWIndowsで試してます。

🛠 インストール方法(Windows編)

  • Scoop経由

    scoop install wezterm
    
  • インストール後の初回起動と「背景画像表示」などの確認

🚀 基本操作とショートカット

機能 操作
ウィンドウ横分割 Ctrl + Shift + Alt + %
ウィンドウ縦分割 Ctrl + Shift + Alt + "
ペインの移動 Ctrl + Shift + →(矢印キー)など
ペインの閉じる Ctrl + Shift + w
新しいタブを開く Ctrl + Shift + t
タブの切り替え Ctrl + Tab / Ctrl + Shift + Tab
コマンドパレット Ctrl + Shift + p(fzfっぽいUI!)

🧙‍♂️ .wezterm.lua カスタマイズ事例

各ユーザーのルートディレクトリ「c:\user(ユーザー名)\」に、.wezterm.luaを作成し、ファイル内に設定を記述。

Linuxなども共通です。

背景画像の設定

config.background = {
  {
    source = {
      File = 'D:\\image\\wallpaper.jpg'
    },
    hsb = { brightness = 0.05 },
    opacity = 0.3,
    attachment = { Parallax = 0.5 },
    horizontal_offset = 0,
    vertical_offset = -800,
  }
}

カラースキームと透明度

config.color_scheme = "zenwritten_dark"
config.window_background_opacity = 0.93

PowerShell をデフォルトで起動

config.default_prog = { "pwsh" }

wezterm + fzf + bat でコマンド履歴やログ検索が快適

🧰 各ツールの役割

ツール名 役割
wezterm 美しくカスタマイズ可能なターミナル
fzf インタラクティブな絞り込み検索ツール(fuzzy finder)
bat catの進化版。シンタックスハイライト付きファイル表示ツール

🧪 1. コマンド履歴検索

過去のコマンド履歴から、必要なものを一瞬で検索して実行できる。

✅ 実行コマンド:

history | fzf

または Zsh の場合:

fc -l 1 | fzf

選んだコマンドは、Enterキーでそのまま貼り付ける or 実行も可能(シェルの設定による)。


📜 2. 複数ログファイルを絞り込み閲覧(catより快適)

複数のログファイルの中から、目的のエラーやキーワードを高速検索&美しく閲覧。

✅ 例:ログファイルのリストから1つ選び、batで閲覧:

ls *.log | fzf --preview 'bat --style=numbers --color=always {}'

🪄 解説:

  • ls *.log:カレントディレクトリのログ一覧
  • fzf:絞り込み式検索
  • --preview:右側に bat の内容をプレビュー表示(上下で切り替え可能)

💡 補足:

  • --preview-window=up:70% などでプレビュー表示のレイアウトも調整可能
  • rg(ripgrep)と組み合わせると全文検索もできる

🧩 3. 組み合わせ応用例:grep結果から選択して開く

rg "エラー" . | fzf --preview 'bat --style=numbers --color=always {1}' | cut -d: -f1 | xargs -r bat
  • rg:全文検索
  • fzf:結果からインタラクティブに選択
  • bat:美しい表示で開く

💎 WezTerm でさらに快適に

WezTermの設定で fzf を毎回起動するカスタムキーバインドを作成することもできます(Luaスクリプトで実装可能)。あるいは、起動時に自動的にログ表示ペインを開くことも。


📝 まとめ

操作例 内容
`history fzf` コマンド履歴を検索して選択
`ls *.log fzf –preview` ログファイルをインタラクティブに選ぶ
rg + fzf + bat エラー検索→プレビュー→詳細表示

この3種の神器が揃うと、作業効率と快適度が一気に上がります。

タブごとに作業コンテキストを変えると超効率化

1つのターミナルに全部詰め込むのではなく、 「タブ1つ = 1つの作業目的」 に分離することで、頭の中もスッキリ整理されます。

💼 実用例:タブと作業内容の対応

タブ名 作業内容例
1: dev コーディング・ビルド作業(例:npm run dev
2: git Git操作やリモートへのPush/Pull管理
3: logs エラーログや出力結果のモニタリング
4: db DB操作・マイグレーション(例:psql
5: misc 一時的な検証・テスト・コマンド確認など

✨ WezTermの強み

WezTermは、タブごとに以下のような状態を 完全に独立して保持 できます:

  • カレントディレクトリ
  • シェルの履歴
  • 環境変数
  • 端末の背景・色テーマ(スクリプトで可変)

さらに、画面分割(pane) と組み合わせると…

🖼️ タブ + 分割ペイン:最強の開発環境に

例えば dev タブの中で:

+------------------------------+
| npm run dev (左ペイン)       |
|                              |
| tail -f logs/output.log (右) |
+------------------------------+

などとすれば、開発とログ監視を同時に視認 できます。


⌨️ WezTerm 操作まとめ(再掲)

操作 ショートカット
タブを新規作成 Ctrl + Shift + Alt + t(設定可)
タブ間の切替 Ctrl + Tab / Ctrl + Shift + Tab
ペインを縦に分割 Ctrl + Shift + Alt + "
ペインを横に分割 Ctrl + Shift + Alt + %
ペイン間の移動 Ctrl + Shift + ↑↓←→

wezterm.lua でカスタマイズ可能

Tips: wezterm.lua にタブ名を動的に表示する

config.tab_max_width = 25
config.use_fancy_tab_bar = true

さらに、wezterm.on("format-tab-title", function(tab) イベントを使えば、現在のディレクトリ名やSSH先のホスト名をタブに表示することも可能です。

まとめ:メリット

  • 複数作業を視覚的に明確に分離できる
  • 間違って別プロジェクトでコマンド実行する事故が減る
  • 作業の切替がタブジャンプだけで済むので高速

**「ターミナルの中でマルチタスクを整理する」**という発想は、コードと向き合う時間をより集中させてくれます。

🌐 WezTerm × WSL/SSH:快適なマルチ環境接続

WezTerm は Windows環境から WSL や リモートLinux に接続する作業 を、タブごとに独立して構成できます。

1. WSLの起動(Windows上)

WezTerm で以下のように .wezterm.lua を記述することで、 UbuntuなどのWSL環境を即起動するタブを定義可能です。

local wezterm = require 'wezterm'

return {
  default_prog = { 'wsl.exe', '~' }, -- デフォルトをWSLにする
  launch_menu = {
    {
      label = 'WSL Ubuntu',
      args = { 'wsl.exe' }
    },
    {
      label = 'WSL Debian',
      args = { 'wsl.exe', '-d', 'Debian' }
    },
  }
}

🔹 起動方法

WezTerm を起動し、右クリック → Launch Menu や ターミナル内で Ctrl + Shift + PLauncher から選択できます。


2. SSH接続先を登録しておく(例:自宅サーバ)

たとえば、よく接続する VPS や Raspberry Pi、Debianサーバなどがある場合:

launch_menu = {
  {
    label = 'Remote: MyServer',
    args = { 'ssh', 'lain@192.168.0.101' },
  },
  {
    label = 'Remote: VPS',
    args = { 'ssh', 'fixjp@your-vps-hostname.com' },
  },
}

💡 ssh-agentや公開鍵認証を使えば、パスワード不要ですぐ接続できます。


3. タブ分離で同時作業が可能

  • Tab1: ローカル PowerShell
  • Tab2: WSL Ubuntu
  • Tab3: SSH Debianサーバ
  • Tab4: SSH VPS

すべてが別々のシェル・環境として並列実行できるので、 「SSH切り替えで時間をロス」「何度も認証でイライラ」といった無駄が減ります。


4. .ssh/config があると更に楽!

# ~/.ssh/config
Host myserver
  HostName 192.168.0.101
  User lain
  IdentityFile ~/.ssh/id_rsa

これで .wezterm.lua からもシンプルに:

{
  label = 'My Server',
  args = { 'ssh', 'myserver' }
}

💡 さらに便利なTips:

  • wezterm は接続先ごとにタブ名・背景・色を変える設定も可能
  • 起動直後にカレントディレクトリを指定することもできます

まとめ

機能 メリット
WSL起動 Windows内でも高速にLinuxコマンドが実行可能
SSH登録 複数のサーバに瞬時にアクセス
タブ分離 + LaunchMenu マルチ開発環境を1画面で制御できる

WindowsからLinuxサーバの管理や、開発用WSLの切替も自在にできる。 これが WezTerm の最大の魅力の一つです。

wezterm-mux-server でマルチ端末共有も可能

🧩 wezterm-mux-server とは?

WezTerm は **内部に「tmuxのようなセッション管理機構(MUXサーバ)」**を持っています。

  • 複数の WezTerm インスタンス(GUI、CLI問わず)から 同じセッションを共有・再接続できる
  • 分割画面やコマンド実行状態を維持したまま、複数端末から操作可能
  • リモートでも 接続先にWezTermがあれば、GUIから再接続可能

できること(tmux類似)

機能 説明例
セッションの再接続 WezTermを閉じても、次回起動で元の画面を復元可能
複数WezTermからのセッション共有 同じマシン上の別GUIウィンドウや、SSH先のWezTermから再接続可能
コマンド実行状態の保持 実行中の topvimnpm run などをそのまま保てる

設定方法(シンプル)

WezTerm の .wezterm.lua に以下を追記:

return {
  enable_mux = true,  -- MUX機能をONに
  -- 他の設定と共存可能
}

これだけで、自動的に wezterm-mux-server が起動されます。


セッションの再接続方法

wezterm connect

または GUI 版から起動時に 以前のセッションを選択できます。

複数端末で同じサーバにSSH → wezterm connect を実行すれば、同じセッションを共有できる!


応用:サーバにWezTermを置いて共有

  1. 自宅サーバ(Linuxなど)に WezTerm をインストール
  2. GUIではなく wezterm connect だけで起動(CLIクライアント)
  3. 複数ユーザー/PCからアクセス → 1つのセッションを共有・同時操作可能

これは、離れた場所から「同じ端末」を一緒に見るような感覚です。 共同作業やトラブル対応にも役立ちます。


補足:現在のセッションを確認するには?

wezterm cli list

で、現在のセッションやペインの一覧が確認できます。


注意点

  • MUX機能はセッション永続化に優れる一方で、セキュリティ(アクセス権)に注意が必要です
  • 特に共有環境で使う場合は、ローカルユーザー間での制限設定や暗号化通信を検討してください

まとめ:wezterm-mux-server の魅力

機能 効果
セッションの再接続 開いたままにしたい画面を復元できる
多端末共有 GUIとCLI、複数PC間で同じターミナル画面を共有
作業効率アップ tmuxの代替として柔軟かつシームレスに操作可

WezTerm は単なる「見た目がカッコいいターミナル」ではなく、 本格的なセッションマネージャーでもあるということですね!

🎁 まとめと今後のカスタマイズ案

  • weztermは見た目だけでなく、実用性も最高峰
  • .wezterm.luaに慣れると「手になじむターミナル」になる
  • 今後は「スクリプト自動化」や「起動時にレイアウト復元」なども紹介予定