.config/nvim/lua/config/maps.lua

changeset 1036
4da4e68e1796
parent 1034
d412eecafebf
child 1064
fcfa295076a8
equal deleted inserted replaced
1035:e46ff6e45c96 1036:4da4e68e1796
1 1
2 local map = vim.keymap 2 local function map(mode, lhs, rhs, opts)
3 local opts = {noremap = true, silent = true} 3 opts = opts or {}
4 opts.silent = opts.silent ~= false
5 vim.keymap.set(mode, lhs, rhs, opts)
6 end
4 7
5 map.set("n", "<F2>", ":20Lexplore<CR>", opts) 8 map("n", "<F2>", ":20Lexplore<CR>")
6 map.set("n", "<F3>", "n", opts) 9 map("n", "<F3>", "n")
7 map.set("n", "<S-F3>", "N", opts) 10 map("n", "<S-F3>", "N")
8 map.set("", "<F4>", ":let v:hlsearch = !v:hlsearch<CR>", opts) 11 map("", "<F4>", ":let v:hlsearch = !v:hlsearch<CR>")
9 map.set("n", "<F5>", ":UndotreeToggle<CR>", opts) 12 map("n", "<F5>", ":UndotreeToggle<CR>")
10 map.set("n", "<F8>", ":TagbarToggle<CR>", opts) 13 map("n", "<F8>", ":TagbarToggle<CR>")
11 14
12 -- Allow :noh even in insert mode 15 -- Allow :noh even in insert mode
13 map.set("i", "<F4>", "<C-O><F4>") 16 map("i", "<F4>", "<C-O><F4>")
14 17
15 -- cover for search habit 18 -- cover for search habit
16 map.set("c", "<F3>", "<CR>", opts) 19 map("c", "<F3>", "<CR>")
17 20
18 -- change to file's directory 21 -- change to file's directory
19 map.set("n", "<leader>cd", ":cd %:p:h<CR>:pwd<CR>", opts) 22 map("n", "<leader>cd", ":cd %:p:h<CR>:pwd<CR>")
20 23
21 -- window switching 24 -- window switching
22 map.set("n", "<C-h>", "<C-w>h", opts) 25 map("n", "<C-h>", "<C-w>h")
23 map.set("n", "<C-j>", "<C-w>j", opts) 26 map("n", "<C-j>", "<C-w>j")
24 map.set("n", "<C-k>", "<C-w>k", opts) 27 map("n", "<C-k>", "<C-w>k")
25 map.set("n", "<C-l>", "<C-w>l", opts) 28 map("n", "<C-l>", "<C-w>l")
26 map.set("n", "<C-\\>", "<C-w>p", opts) 29 map("n", "<C-\\>", "<C-w>p")
30
31 -- Resize window using <ctrl> arrow keys
32 map("n", "<C-Up>", "<cmd>resize +2<cr>")
33 map("n", "<C-Down>", "<cmd>resize -2<cr>")
34 map("n", "<C-Left>", "<cmd>vertical resize -2<cr>")
35 map("n", "<C-Right>", "<cmd>vertical resize +2<cr>")
27 36
28 -- buffer switching 37 -- buffer switching
29 map.set("n", "gb", "<C-^>", opts) 38 map("n", "gb", "<C-^>")
30 map.set("n", "gB", ":ls<CR>:b ", {noremap = true}) 39 map("n", "gB", ":ls<CR>:b ", {silent = false})
31 40
32 -- Select last paste, in the same mode it was pasted in 41 -- Select last paste, in the same mode it was pasted in
33 map.set("n", "gV", "'`[' . strpart(getregtype(), 0, 1) . '`]'", {noremap=true, expr=true}) 42 map("n", "gV", "'`[' . strpart(getregtype(), 0, 1) . '`]'", {expr=true})
43
44 -- Add undo break-points
45 map("i", ",", ",<c-g>u")
46 map("i", ".", ".<c-g>u")
47 map("i", ";", ";<c-g>u")
48
49 -- better indenting
50 map("v", "<", "<gv")
51 map("v", ">", ">gv")
52
53 map("n", "j", "v:count == 0 ? 'gj' : 'j'", {expr = true})
54 map("n", "k", "v:count == 0 ? 'gk' : 'k'", {expr = true})
34 55
35 -- Use ltag over tselect 56 -- Use ltag over tselect
36 map.set("n", "g<C-]>", ":exe 'ltag ' . expand('<cword>') | lopen<CR>", opts) 57 map("n", "g<C-]>", ":exe 'ltag ' . expand('<cword>') | lopen<CR>")
37 58
38 -- clear all interestingwords with \\k since \K is ri.vim 59 -- clear all interestingwords with \\k since \K is ri.vim
39 map.set("n", "<leader><leader>k", ":call UncolorAllWords()<CR>", opts) 60 map("n", "<leader><leader>k", ":call UncolorAllWords()<CR>")
40 61
41 -- use Grep for a recursive * 62 -- use Grep for a recursive *
42 map.set("n", "g*", ":Grep<CR>", opts) 63 map("n", "g*", ":Grep<CR>")
43 64
44 -- K: doc, gKK: doc current filename 65 -- K: doc, gKK: doc current filename
45 map.set("n", "gKK", ":call ViewDoc('doc', expand('%:p'))<CR>", opts) 66 map("n", "gKK", ":call ViewDoc('doc', expand('%:p'))<CR>")
46 67
47 -- Tabular shortcuts 68 -- Tabular shortcuts
48 map.set("n", "<leader>ta", ":Tabularize first_arrow<CR>", opts) 69 map("n", "<leader>ta", ":Tabularize first_arrow<CR>")
49 map.set("n", "<leader>te", ":Tabularize first_eq<CR>", opts) 70 map("n", "<leader>te", ":Tabularize first_eq<CR>")
50 map.set("n", "<leader>tc", ":Tabularize first_colon<CR>", opts) 71 map("n", "<leader>tc", ":Tabularize first_colon<CR>")
51 map.set("n", "<leader>tm", ":Tabularize methods<CR>", opts) 72 map("n", "<leader>tm", ":Tabularize methods<CR>")
52 73
53 map.set("n", "<leader>a", ":call vimrc#AutoFmtToggle()<CR>", opts) 74 map("n", "<leader>a", ":call vimrc#AutoFmtToggle()<CR>")
54 75
55 -- LSP features 76 -- LSP features
56 map.set('n', '<leader>d', vim.diagnostic.open_float, opts) 77 map('n', '<leader>d', vim.diagnostic.open_float)
57 map.set('n', '[d', vim.diagnostic.goto_prev, opts) 78 map('n', '[d', vim.diagnostic.goto_prev)
58 map.set('n', ']d', vim.diagnostic.goto_next, opts) 79 map('n', ']d', vim.diagnostic.goto_next)
59 map.set('n', '<leader>ld', vim.diagnostic.setloclist, opts) 80 map('n', '<leader>ld', vim.diagnostic.setloclist)
60 81
61 vim.api.nvim_create_augroup("lsp_attach", {}) 82 vim.api.nvim_create_augroup("lsp_attach", {})
62 83
63 vim.api.nvim_create_autocmd("LspAttach", { 84 vim.api.nvim_create_autocmd("LspAttach", {
64 group = "lsp_attach", 85 group = "lsp_attach",
65 callback = function(args) 86 callback = function(args)
66 local bufnr = args.buf 87 local bufnr = args.buf
67 local bufopts = { noremap=true, silent=true, buffer=bufnr } 88 local bufopts = { buffer=bufnr }
68 89
69 map.set('n', 'gD', vim.lsp.buf.declaration, bufopts) 90 map('n', 'gD', vim.lsp.buf.declaration, bufopts)
70 map.set('n', 'gd', vim.lsp.buf.definition, bufopts) 91 map('n', 'gd', vim.lsp.buf.definition, bufopts)
71 map.set('n', 'K', vim.lsp.buf.hover, bufopts) 92 map('n', 'K', vim.lsp.buf.hover, bufopts)
72 map.set('n', 'gi', vim.lsp.buf.implementation, bufopts) 93 map('n', 'gi', vim.lsp.buf.implementation, bufopts)
73 map.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts) 94 map('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
74 map.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, bufopts) 95 map('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, bufopts)
75 map.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, bufopts) 96 map('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
76 map.set('n', '<leader>wl', function() 97 map('n', '<leader>wl', function()
77 print(vim.inspect(vim.lsp.buf.list_workspace_folders())) 98 print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
78 end, bufopts) 99 end, bufopts)
79 map.set('n', '<leader>D', vim.lsp.buf.type_definition, bufopts) 100 map('n', '<leader>D', vim.lsp.buf.type_definition, bufopts)
80 map.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts) 101 map('n', '<leader>rn', vim.lsp.buf.rename, bufopts)
81 map.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts) 102 map('n', '<leader>ca', vim.lsp.buf.code_action, bufopts)
82 map.set('n', 'gr', vim.lsp.buf.references, bufopts) 103 map('n', 'gr', vim.lsp.buf.references, bufopts)
83 map.set('n', '<leader>f', function() vim.lsp.buf.format { async = true } end, bufopts) 104 map('n', '<leader>f', function() vim.lsp.buf.format { async = true } end, bufopts)
84 end, 105 end,
85 }) 106 })
86 107

mercurial