← AI開発 資料アーカイブ
環境構築セットアップ

WezTermキーバインド設定 keybinds.lua(リーダーキー+ペイン/タブ操作)

元ファイル: れん君パート/keybinds.lua

要約

WezTermのキーバインド定義Luaファイル。タブ操作(生成/閉じる/切替)、Ctrl+qをリーダーキーにしたペインの分割・方向移動・クローズ、Leader+dでカレントディレクトリを引き継いだ新ウィンドウ生成、Leader+rでのタブ名リネーム、コピー/ペースト、フォントサイズ、ALT+矢印スクロールなどを設定。tmux風のキー体系をWezTerm上に再現している。

要点

WezTermkeybindsluaキーバインドtmux風ターミナル環境構築

local wezterm = require("wezterm")
local act = wezterm.action

local M = {}

M.keys = {
  -- タブ操作
  { key = "t", mods = "CTRL|SHIFT", action = act.SpawnTab("CurrentPaneDomain") },
  { key = "w", mods = "CTRL|SHIFT", action = act.CloseCurrentTab({ confirm = true }) },
  { key = "{", mods = "CTRL|SHIFT", action = act.ActivateTabRelative(-1) },
  { key = "z", mods = "ALT",        action = act.ActivateTabRelative(-1) },
  { key = "}", mods = "CTRL|SHIFT", action = act.ActivateTabRelative(1) },
  { key = "c", mods = "ALT",        action = act.ActivateTabRelative(1) },
  { key = "v", mods = "ALT",        action = act.SendKey({ key = "u", mods = "CTRL" }) },

  -- タブ複製 (Leader + d): カレントディレクトリを引き継いで新ウィンドウを開く
  {
    key = "d",
    mods = "LEADER",
    action = wezterm.action_callback(function(window, pane)
      local cwd = pane:get_current_working_dir()
      wezterm.mux.spawn_window({ cwd = cwd and cwd.file_path or nil })
    end),
  },

  -- ペイン操作 (リーダーキー: Ctrl+q)
  { key = "-",  mods = "LEADER",       action = act.SplitVertical({ domain = "CurrentPaneDomain" }) },
  { key = "|",  mods = "LEADER|SHIFT", action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }) },
  { key = "h",  mods = "LEADER",       action = act.ActivatePaneDirection("Left") },
  { key = "j",  mods = "LEADER",       action = act.ActivatePaneDirection("Down") },
  { key = "k",  mods = "LEADER",       action = act.ActivatePaneDirection("Up") },
  { key = "l",  mods = "LEADER",       action = act.ActivatePaneDirection("Right") },
  { key = "x",  mods = "LEADER",       action = act.CloseCurrentPane({ confirm = true }) },
  { key = "[",  mods = "LEADER",       action = act.ActivateCopyMode },

  -- タブ名リネーム (Leader + r)
  {
    key = "r",
    mods = "LEADER",
    action = act.PromptInputLine({
      description = "Tab name:",
      action = wezterm.action_callback(function(window, pane, line)
        if line and #line > 0 then
          window:active_tab():set_title(line)
        end
      end),
    }),
  },

  -- コピー/ペースト
  { key = "c", mods = "CTRL|SHIFT", action = act.CopyTo("Clipboard") },
  { key = "v", mods = "CTRL|SHIFT", action = act.PasteFrom("Clipboard") },

  -- フォントサイズ
  { key = "=", mods = "CTRL|SHIFT", action = act.IncreaseFontSize },
  { key = "-", mods = "CTRL",       action = act.DecreaseFontSize },
  { key = "0", mods = "CTRL",       action = act.ResetFontSize },

  -- スクロール操作 (ALT+矢印: CTRL+SHIFT+矢印はペインリサイズと競合するため)
  { key = "UpArrow",   mods = "ALT", action = act.ScrollByLine(-3) },
  { key = "DownArrow", mods = "ALT", action = act.ScrollByLine(3) },

  -- ウィンドウ操作
  { key = "n", mods = "CTRL|SHIFT", action = act.SpawnWindow },

  -- その他
  { key = "Enter", mods = "ALT",        action = act.ToggleFullScreen },
  { key = "r",     mods = "CTRL|SHIFT", action = act.ReloadConfiguration },

  -- ファイラー (Cursorライク)
  -- Ctrl+Shift+E: 左ペインにyaziを開く
  {
    key = "e",
    mods = "CTRL|SHIFT",
    action = act.SplitPane({
      direction = "Left",
      size = { Percent = 30 },
      command = { args = { "yazi" } },
    }),
  },
  -- Ctrl+Shift+B: 現在のペインを閉じる(トグル代わり)
  { key = "b", mods = "CTRL|SHIFT", action = act.CloseCurrentPane({ confirm = false }) },

  -- Claude Code送信用: Ctrl+X / Option+X → Enter変換
  { key = "x", mods = "CTRL", action = act.SendKey({ key = "Enter" }) },
  { key = "x", mods = "ALT",  action = act.SendKey({ key = "Enter" }) },

  -- ペインリサイズ (Ctrl+Shift+矢印)
  { key = "LeftArrow",  mods = "CTRL|SHIFT", action = act.AdjustPaneSize({ "Left", 5 }) },
  { key = "RightArrow", mods = "CTRL|SHIFT", action = act.AdjustPaneSize({ "Right", 5 }) },
  { key = "UpArrow",    mods = "CTRL|SHIFT", action = act.AdjustPaneSize({ "Up", 3 }) },
  { key = "DownArrow",  mods = "CTRL|SHIFT", action = act.AdjustPaneSize({ "Down", 3 }) },
}

M.key_tables = {}

return M

↑ トップへ戻る