dots/.config/wezterm/keys.lua

41 lines
1.6 KiB
Lua

local wezterm = require "wezterm"
local act = wezterm.action
local act_callback = wezterm.action_callback
local function kb(mods, key, action)
return { mods = mods, key = key, action = action }
end
return {
disable_default_key_bindings = true,
keys = {
-- tabs
kb("SHIFT|CTRL", "t", act.SpawnTab "CurrentPaneDomain"),
kb("SHIFT|CTRL", "q", act.CloseCurrentTab { confirm = false }),
kb("SHIFT|CTRL", "LeftArrow", act.ActivateTabRelative(-1)),
kb("SHIFT|CTRL", "RightArrow", act.ActivateTabRelative(1)),
-- panes
kb("SHIFT|ALT", "w", act.SplitVertical { domain = "CurrentPaneDomain" }),
kb("SHIFT|ALT", "d", act.SplitHorizontal { domain = "CurrentPaneDomain" }),
kb("SHIFT|ALT", "q", act.CloseCurrentPane { confirm = false }),
kb("SHIFT|ALT", "UpArrow", act.ActivatePaneDirection "Up"),
kb("SHIFT|ALT", "DownArrow", act.ActivatePaneDirection "Down"),
kb("SHIFT|ALT", "LeftArrow", act.ActivatePaneDirection "Left"),
kb("SHIFT|ALT", "RightArrow", act.ActivatePaneDirection "Right"),
-- general
kb("CTRL", "c", act_callback(function(w, p)
local has_selection = w:get_selection_text_for_pane(p) ~= ""
if has_selection then
w:perform_action(act.CopyTo "Clipboard", p)
else
w:perform_action(act.SendKey { mods = "CTRL", key = "c" }, p)
end
end)),
kb("CTRL", "v", act.PasteFrom "Clipboard"),
kb("CTRL", "f", act.Search "CurrentSelectionOrEmptyString")
}
}