aboutsummaryrefslogtreecommitdiff
path: root/.config/wezterm/keys.lua
blob: 0bba6036a48d8d4f9260680ebe54dae14902ffe4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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")
    }
}