はじめに・背景
普段は業務でWindows 11を使って開発しているんですが、最近GitHub Copilot CLIがプレビューから一般提供されたこともあって、改めてターミナル環境を見直したくなった。
これまではずっとWindows Terminalを使っていたものの、「もっとマルチプラットフォームで動いて、軽量なターミナルエミュレーターってないか?」と思うように。シンプルで自分好みにカスタマイズできるターミナルを探していたところ、YouTubeでたまたま紹介されていたWezTermを見かけてこれを使ってみるかと決めた。
モテるターミナル環境的なやつだったと思う。
この記事ではWindows 11環境に特化した内容にはなるが、自分への備忘録も兼ねてWezTermの導入と初期設定の方法をまとめておこうと思います。
現状の課題・分析:なぜWezTermを選んだのか?
選定理由
- 動作がサクサクで軽量: 毎日起動してずっと立ち上げっぱなしにするツールなので、もたつきがない軽快さであること。
- Luaでとことんカスタマイズできる: 設定を自分の状況に合わせて変更できること。
- ある程度人気で情報が見つかりやすい: マニアックすぎるツールだと、いざ設定で困った時に解決策が見つからなくて詰むので、参考になる記事や設定例(Dotfilesなど)がたくさん転がっていること。
Win11への導入とおすすめ設定
具体的にWindows 11環境へ導入し、設定していく手順をご紹介する。
1. インストール手順
Windows 11の場合、wingetを使うのが一番簡単。管理者権限のPowerShellやコマンドプロンプトで以下のコマンドを実行します。
winget install wez.wezterm
インストールが完了したら、スタートメニューから「WezTerm」を起動できる。最初はビックリするぐらい何もない。
2. 設定ファイル (wezterm.lua) の作成
設定ファイルを作成する。
Windowsの場合、設定ファイルはユーザーディレクトリの直下(C:\Users\あなたのユーザー名)に .wezterm.lua という名前で作成します。
- .config/wezterm/wezterm.lua
現状下記設定を記載、細かい周辺ツールやPowerShellの設定等は割愛します。
local wezterm = require("wezterm")
local config = {}
if wezterm.config_builder then
config = wezterm.config_builder()
end
-------------------------------------------------------------------------
-- 【1. 外観・デザインの設定】
-------------------------------------------------------------------------
config.window_background_opacity = 0.95
config.color_scheme = 'Kanagawa (Gogh)'
config.font = wezterm.font("HackGen35Nerd Console")
config.font_size = 10.0
config.window_decorations = "RESIZE"
config.hide_tab_bar_if_only_one_tab = false
config.enable_scroll_bar = true
config.default_cursor_style = 'BlinkingUnderline'
config.use_ime = true
-- ★ ウィンドウ周りに余白を作り、視認性を高める
config.window_padding = { left = 12, right = 12, top = 10, bottom = 10 }
-- ★ QuickSelectの文字をホームポジション優先にする
config.quick_select_alphabet = 'asdfghjklweruiop'
-------------------------------------------------------------------------
-- 【2. 右上ステータスバー:Leader状態可視化版】
-------------------------------------------------------------------------
wezterm.on('update-right-status', function(window, pane)
local days = { "日", "月", "火", "水", "木", "金", "土" }
local day_idx = tonumber(os.date("%w")) + 1
local day_of_week = days[day_idx]
local date = wezterm.strftime('%Y/%m/%d')
local time = wezterm.strftime('%H:%M')
-- ★ Leaderキーがアクティブなら【LDR】と表示
local leader = ""
if window:leader_is_active() then
leader = '【LDR】 '
end
window:set_right_status(wezterm.format({
{Foreground = {Color = '#E6C384'}}, -- Leader状態は目立つ色に
{Text = leader},
{Foreground = {AnsiColor = 'Aqua'}},
{Text = wezterm.nerdfonts.md_clock .. " "},
{Foreground = {AnsiColor = 'White'}},
{Text = date .. "(" .. day_of_week .. ") " .. time .. " "},
}))
end)
-------------------------------------------------------------------------
-- 【3. 基本システム設定】
-------------------------------------------------------------------------
config.default_prog = { 'pwsh.exe', '-NoLogo' }
config.scrollback_lines = 10000
config.audible_bell = "Disabled"
config.hyperlink_rules = wezterm.default_hyperlink_rules()
-------------------------------------------------------------------------
-- 【4. キーバインド:Corne v4 & Vim操作を極める】
-------------------------------------------------------------------------
config.leader = { key = 'x', mods = 'CTRL', timeout_milliseconds = 1000 }
config.keys = {
{ key = 'P', mods = 'CTRL|SHIFT', action = wezterm.action.ActivateCommandPalette },
{ key = 'f', mods = 'CTRL|SHIFT', action = wezterm.action.Search { CaseInSensitiveString = "" } },
-- AI対策
{ key = 'Enter', mods = 'SHIFT', action = wezterm.action.SendString('\x1b[13;2u') },
{ key = 'Enter', mods = 'CTRL|SHIFT', action = wezterm.action.SendString('\x1b[13;2u') },
-- [ペイン移動] Vimキーバインド (h, j, k, l)
{ key = 'h', mods = 'LEADER', action = wezterm.action.ActivatePaneDirection 'Left' },
{ key = 'j', mods = 'LEADER', action = wezterm.action.ActivatePaneDirection 'Down' },
{ key = 'k', mods = 'LEADER', action = wezterm.action.ActivatePaneDirection 'Up' },
{ key = 'l', mods = 'LEADER', action = wezterm.action.ActivatePaneDirection 'Right' },
-- ★ [ペインリサイズ] Leader + 大文字 H, J, K, L
{ key = 'H', mods = 'LEADER', action = wezterm.action.AdjustPaneSize { 'Left', 5 } },
{ key = 'J', mods = 'LEADER', action = wezterm.action.AdjustPaneSize { 'Down', 5 } },
{ key = 'K', mods = 'LEADER', action = wezterm.action.AdjustPaneSize { 'Up', 5 } },
{ key = 'L', mods = 'LEADER', action = wezterm.action.AdjustPaneSize { 'Right', 5 } },
-- ★ [ページ送り] Alt + j/k で高速スクロール(AI出力を追うのに便利)
{ key = 'j', mods = 'ALT', action = wezterm.action.ScrollByPage(0.5) },
{ key = 'k', mods = 'ALT', action = wezterm.action.ScrollByPage(-0.5) },
-- [ペイン管理]
{ key = '2', mods = 'LEADER', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } },
{ key = '3', mods = 'LEADER', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },
{ key = '0', mods = 'LEADER', action = wezterm.action.CloseCurrentPane { confirm = true } },
{ key = '1', mods = 'LEADER', action = wezterm.action.TogglePaneZoomState },
-- [タブ操作]
{ key = 'c', mods = 'LEADER', action = wezterm.action.SpawnTab 'CurrentPaneDomain' },
{ key = 'n', mods = 'LEADER', action = wezterm.action.ActivateTabRelative(1) },
{ key = 'p', mods = 'LEADER', action = wezterm.action.ActivateTabRelative(-1) },
{
key = 'r',
mods = 'LEADER',
action = wezterm.action.PromptInputLine {
description = 'Rename Tab',
action = wezterm.action_callback(function(window, pane, line)
if line then window:active_tab():set_title(line) end
end),
},
},
-- [特殊操作]
{ key = 'f', mods = 'LEADER', action = wezterm.action.ToggleFullScreen },
{ key = 'Space', mods = 'LEADER', action = wezterm.action.QuickSelect },
{ key = '[', mods = 'LEADER', action = wezterm.action.ActivateCopyMode },
}
-------------------------------------------------------------------------
-- 【5. 起動時フルスクリーン化】
-------------------------------------------------------------------------
wezterm.on('gui-startup', function(spawn_info)
local _, _, window = wezterm.mux.spawn_window(spawn_info or {})
window:gui_window():toggle_fullscreen()
end)
return config
見た目の拡張 (Starshipの導入)
ターミナルのプロンプト(入力行の左側の表示)をより見やすくリッチにするために、Starshipも合わせて導入します。
まずは以下のコマンドでStarship本体をインストールします。
winget install Starship.Starship
インストール後、PowerShellの起動時にStarshipを読み込ませるための設定を行います。
ターミナル上で以下のコマンドを実行し、PowerShellのプロファイル(設定ファイル)をメモ帳で開きます。
notepad $PROFILE
開いたメモ帳の一番最後に、以下の1行を追記して保存する。
Invoke-Expression (&starship init powershell)
これでWezTerm(PowerShell)を開き直せば、綺麗に装飾されたプロンプトが表示される。
今後のアクション
いかに開発業務を楽しく・効率的にできるか?AIエージェントを活用しながら出来るか?を確認しながらターミナルを使っていく。
想定では複数プロジェクトをタブで管理し、その中で複数ペインによる複数の並列作業を行いたい。

コメント