41 lines
1.6 KiB
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")
|
|
}
|
|
}
|