-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdot_wezterm.lua
80 lines (64 loc) · 3.49 KB
/
dot_wezterm.lua
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
local workspace_dir = wezterm.home_dir .. "/workspace"
-- On first window, use workspace dir
config.default_cwd = workspace_dir
-- Avoid using OPT as meta key for special bindings, to avoid random behaviors
-- when typing special characters.
config.send_composed_key_when_left_alt_is_pressed = true
config.send_composed_key_when_right_alt_is_pressed = true
config.keys = {
-- Make OPT-LEFT/RIGHT navigate between words
{key="LeftArrow", mods="OPT", action=wezterm.action{SendString="\x1bb"}},
{key="RightArrow", mods="OPT", action=wezterm.action{SendString="\x1bf"}},
-- Use workspace dir for all new windows
{key='n', mods='CMD', action = wezterm.action.SpawnCommandInNewWindow {
cwd=workspace_dir
}},
-- Close current pane or if it's the last pane, close the tab
{key="w", mods="CMD", action=wezterm.action{CloseCurrentPane={confirm=false}}},
-- Switch to the next pane
{key="j", mods="CMD", action=wezterm.action{ActivatePaneDirection="Next"}},
-- Split panes vertically and horizontally
{key="l", mods="CMD", action=wezterm.action{SplitVertical={domain="CurrentPaneDomain"}}},
{key="k", mods="CMD", action=wezterm.action{SplitHorizontal={domain="CurrentPaneDomain"}}},
-- Open a new tab with the Default profile
{key="t", mods="CMD", action=wezterm.action{SpawnTab="DefaultDomain"}},
-- previous/next tab (CMD+OPT+LEFT/RIGHT and CMD-UP/DOWN)
{key="LeftArrow", mods="OPT|CMD", action=wezterm.action{ActivateTabRelative=-1}},
{key="RightArrow", mods="OPT|CMD", action=wezterm.action{ActivateTabRelative=1}},
{key="UpArrow", mods="CMD", action=wezterm.action{ActivateTabRelative=-1}},
{key="DownArrow", mods="CMD", action=wezterm.action{ActivateTabRelative=1}},
-- Scroll one line/page up or down
{key="UpArrow", mods="CMD", action=wezterm.action{ScrollByLine=-1}},
{key="DownArrow", mods="CMD", action=wezterm.action{ScrollByLine=1}},
{key="UpArrow", mods="CMD|SHIFT", action=wezterm.action{ScrollByPage=-1}},
{key="DownArrow", mods="CMD|SHIFT", action=wezterm.action{ScrollByPage=1}},
-- CTRL-P to activate copy mode, then move around with CTRL-UP/DOWN, then
-- start selection by pressing "CTRL-O", then "Y" to yank
{key='p', mods='CTRL', action=wezterm.action.ActivateCopyMode},
{key='o', mods='CTRL', action=wezterm.action.CopyMode{SetSelectionMode='SemanticZone'}},
{key='UpArrow', mods='CTRL', action = wezterm.action.CopyMode{MoveBackwardZoneOfType='Prompt'}},
{key='DownArrow', mods='CTRL', action = wezterm.action.CopyMode{MoveForwardZoneOfType='Prompt'}},
-- decrease/increase font size using CMD-SHIFT-1/2
{ key = "1", mods = "CMD|SHIFT", action = wezterm.action.IncreaseFontSize },
{ key = "2", mods = "CMD|SHIFT", action = wezterm.action.DecreaseFontSize },
-- Reload current pane if it got stuck, that is:
-- split horizontally, switching back to the previous pane, then close it
{
key = "r", mods = "CMD", action = wezterm.action_callback(function(window, pane)
window:perform_action(wezterm.action.SplitHorizontal {domain = "CurrentPaneDomain"}, pane)
window:perform_action(wezterm.action.ActivatePaneDirection("Prev"), pane)
window:perform_action(wezterm.action.CloseCurrentPane {confirm = false}, pane)
end),
},
}
config.mouse_bindings = {
-- Select the semantic zone on triple-click
{
event = { Down = { streak = 3, button = 'Left' } },
action = wezterm.action.SelectTextAtMouseCursor 'SemanticZone',
mods = 'NONE',
},
}
return config