|
1 |
| -local map = vim.keymap.set |
| 1 | +-- More consistent behavior when &wrap is set |
| 2 | +-- stylua: ignore start |
| 3 | +vim.keymap.set({ 'n', 'x' }, 'j', 'v:count ? "j" : "gj"', { expr = true }) |
| 4 | +vim.keymap.set({ 'n', 'x' }, 'k', 'v:count ? "k" : "gk"', { expr = true }) |
| 5 | +vim.keymap.set({ 'n', 'x' }, '<Down>', 'v:count ? "<Down>" : "g<Down>"', { expr = true, replace_keycodes = false }) |
| 6 | +vim.keymap.set({ 'n', 'x' }, '<Up>', 'v:count ? "<Up>" : "g<Up>"', { expr = true, replace_keycodes = false }) |
| 7 | +vim.keymap.set({ 'i' }, '<Down>', '<Cmd>norm! g<Down><CR>') |
| 8 | +vim.keymap.set({ 'i' }, '<Up>', '<Cmd>norm! g<Up><CR>') |
| 9 | +-- stylua: ignore end |
2 | 10 |
|
| 11 | +-- Multi-window operations |
3 | 12 | -- stylua: ignore start
|
4 |
| -map({ 'n', 'x' }, 'j', 'v:count ? "j" : "gj"', { expr = true }) |
5 |
| -map({ 'n', 'x' }, 'k', 'v:count ? "k" : "gk"', { expr = true }) |
6 |
| -map({ 'n', 'x' }, '<Down>', 'v:count ? "<Down>" : "g<Down>"', { expr = true, replace_keycodes = false }) |
7 |
| -map({ 'n', 'x' }, '<Up>', 'v:count ? "<Up>" : "g<Up>"', { expr = true, replace_keycodes = false }) |
8 |
| -map({ 'i' }, '<Down>', '<Cmd>norm! g<Down><CR>') |
9 |
| -map({ 'i' }, '<Up>', '<Cmd>norm! g<Up><CR>') |
| 13 | +vim.keymap.set({ 'n', 'x' }, '<M-h>', '<C-w>h') |
| 14 | +vim.keymap.set({ 'n', 'x' }, '<M-j>', '<C-w>j') |
| 15 | +vim.keymap.set({ 'n', 'x' }, '<M-k>', '<C-w>k') |
| 16 | +vim.keymap.set({ 'n', 'x' }, '<M-l>', '<C-w>l') |
| 17 | +vim.keymap.set({ 'n', 'x' }, '<M-n>', '<C-w>n') |
| 18 | +vim.keymap.set({ 'n', 'x' }, '<M-q>', '<C-w>q') |
| 19 | +vim.keymap.set({ 'n', 'x' }, '<M-s>', '<C-w>s') |
| 20 | +vim.keymap.set({ 'n', 'x' }, '<M-v>', '<C-w>v') |
| 21 | +vim.keymap.set({ 'n', 'x' }, '<M-x>', '<C-w>x') |
| 22 | + |
| 23 | +vim.keymap.set('t', '<C-^>', '<Cmd>b#<CR>', { replace_keycodes = false }) |
| 24 | +vim.keymap.set('t', '<C-6>', '<Cmd>b#<CR>', { replace_keycodes = false }) |
| 25 | +vim.keymap.set('t', '<Esc>', '<Cmd>stopi<CR>', { replace_keycodes = false }) |
| 26 | +vim.keymap.set('t', '<M-h>', '<Cmd>wincmd h<CR>', { replace_keycodes = false }) |
| 27 | +vim.keymap.set('t', '<M-j>', '<Cmd>wincmd j<CR>', { replace_keycodes = false }) |
| 28 | +vim.keymap.set('t', '<M-k>', '<Cmd>wincmd k<CR>', { replace_keycodes = false }) |
| 29 | +vim.keymap.set('t', '<M-l>', '<Cmd>wincmd l<CR>', { replace_keycodes = false }) |
10 | 30 | -- stylua: ignore end
|
11 | 31 |
|
12 |
| -map({ 'i', 'c' }, '<M-Backspace>', '<C-w>') |
| 32 | +-- Buffer navigation |
| 33 | +vim.keymap.set('n', ']b', '<Cmd>exec v:count1 . "bn"<CR>') |
| 34 | +vim.keymap.set('n', '[b', '<Cmd>exec v:count1 . "bp"<CR>') |
| 35 | + |
| 36 | +-- Tabpages |
| 37 | +---@param tab_action function |
| 38 | +---@param default_count number? |
| 39 | +---@return function |
| 40 | +local function tabswitch(tab_action, default_count) |
| 41 | + return function() |
| 42 | + local count = default_count or vim.v.count |
| 43 | + local num_tabs = vim.fn.tabpagenr('$') |
| 44 | + if num_tabs >= count then |
| 45 | + tab_action(count ~= 0 and count or nil) |
| 46 | + return |
| 47 | + end |
| 48 | + vim.cmd.tablast() |
| 49 | + for _ = 1, count - num_tabs do |
| 50 | + vim.cmd.tabnew() |
| 51 | + end |
| 52 | + end |
| 53 | +end |
| 54 | +vim.keymap.set({ 'n', 'x' }, 'gt', tabswitch(vim.cmd.tabnext)) |
| 55 | +vim.keymap.set({ 'n', 'x' }, 'gT', tabswitch(vim.cmd.tabprev)) |
| 56 | +vim.keymap.set({ 'n', 'x' }, 'gy', tabswitch(vim.cmd.tabprev)) -- gT is too hard to press |
| 57 | + |
| 58 | +vim.keymap.set({ 'n', 'x' }, '<Leader>0', '<Cmd>0tabnew<CR>') |
| 59 | +vim.keymap.set({ 'n', 'x' }, '<Leader>1', tabswitch(vim.cmd.tabnext, 1)) |
| 60 | +vim.keymap.set({ 'n', 'x' }, '<Leader>2', tabswitch(vim.cmd.tabnext, 2)) |
| 61 | +vim.keymap.set({ 'n', 'x' }, '<Leader>3', tabswitch(vim.cmd.tabnext, 3)) |
| 62 | +vim.keymap.set({ 'n', 'x' }, '<Leader>4', tabswitch(vim.cmd.tabnext, 4)) |
| 63 | +vim.keymap.set({ 'n', 'x' }, '<Leader>5', tabswitch(vim.cmd.tabnext, 5)) |
| 64 | +vim.keymap.set({ 'n', 'x' }, '<Leader>6', tabswitch(vim.cmd.tabnext, 6)) |
| 65 | +vim.keymap.set({ 'n', 'x' }, '<Leader>7', tabswitch(vim.cmd.tabnext, 7)) |
| 66 | +vim.keymap.set({ 'n', 'x' }, '<Leader>8', tabswitch(vim.cmd.tabnext, 8)) |
| 67 | +vim.keymap.set({ 'n', 'x' }, '<Leader>9', tabswitch(vim.cmd.tabnext, 9)) |
| 68 | + |
| 69 | +-- Correct misspelled word / mark as correct |
| 70 | +vim.keymap.set('i', '<C-g>+', '<Esc>[szg`]a') |
| 71 | +vim.keymap.set('i', '<C-g>=', '<C-g>u<Esc>[s1z=`]a<C-G>u') |
| 72 | + |
| 73 | +-- Close all floating windows |
| 74 | +vim.keymap.set('n', 'q', '<Cmd>fclose<CR>') |
13 | 75 |
|
14 |
| -map('n', '<Esc>', '<Cmd>noh<CR>') |
15 |
| -map('n', 'q', '<Cmd>fclose<CR>') |
| 76 | +-- Edit current file's directory |
| 77 | +vim.keymap.set({ 'n', 'x' }, '-', '<Cmd>e%:p:h<CR>') |
16 | 78 |
|
| 79 | +-- Use 'g{' and 'g}' to move to the first/last line of a paragraph |
17 | 80 | -- stylua: ignore start
|
18 |
| -map({ 'n', 'x' }, '<M-h>', '<C-w>h') |
19 |
| -map({ 'n', 'x' }, '<M-j>', '<C-w>j') |
20 |
| -map({ 'n', 'x' }, '<M-k>', '<C-w>k') |
21 |
| -map({ 'n', 'x' }, '<M-l>', '<C-w>l') |
22 |
| -map({ 'n', 'x' }, '<M-n>', '<C-w>n') |
23 |
| -map({ 'n', 'x' }, '<M-q>', '<C-w>q') |
24 |
| -map({ 'n', 'x' }, '<M-s>', '<C-w>s') |
25 |
| -map({ 'n', 'x' }, '<M-v>', '<C-w>v') |
26 |
| -map({ 'n', 'x' }, '<M-x>', '<C-w>x') |
27 |
| - |
28 |
| -map('t', '<C-^>', '<Cmd>b#<CR>', { replace_keycodes = false }) |
29 |
| -map('t', '<C-6>', '<Cmd>b#<CR>', { replace_keycodes = false }) |
30 |
| -map('t', '<Esc>', '<Cmd>stopi<CR>', { replace_keycodes = false }) |
31 |
| -map('t', '<M-h>', '<Cmd>wincmd h<CR>', { replace_keycodes = false }) |
32 |
| -map('t', '<M-j>', '<Cmd>wincmd j<CR>', { replace_keycodes = false }) |
33 |
| -map('t', '<M-k>', '<Cmd>wincmd k<CR>', { replace_keycodes = false }) |
34 |
| -map('t', '<M-l>', '<Cmd>wincmd l<CR>', { replace_keycodes = false }) |
| 81 | +vim.keymap.set({ 'o' }, 'g{', '<Cmd>silent! normal Vg{<CR>', { noremap = false }) |
| 82 | +vim.keymap.set({ 'o' }, 'g}', '<Cmd>silent! normal Vg}<CR>', { noremap = false }) |
| 83 | +vim.keymap.set({ 'n', 'x' }, 'g{', function() require('utils.misc').goto_paragraph_firstline() end, { noremap = false }) |
| 84 | +vim.keymap.set({ 'n', 'x' }, 'g}', function() require('utils.misc').goto_paragraph_lastline() end, { noremap = false }) |
35 | 85 | -- stylua: ignore end
|
0 commit comments