|
1 |
| -local map = vim.api.nvim_set_keymap |
2 |
| -local default_opts = { noremap = true } |
3 |
| -local keymaps = { |
4 |
| - |
5 |
| - map_basic = function() |
6 |
| - -- Keymaps for better default experience |
7 |
| - -- See `:help vim.keymap.set()` |
8 |
| - -- |
9 |
| - -- LazyGit |
10 |
| - vim.keymap.set("n", "<leader>gg", ":LazyGit<CR>", { silent = true }) |
11 |
| - |
12 |
| - -- Remap forward in jumplist for compatibility |
13 |
| - vim.keymap.set('n', '<C-e>', '<C-i>', { noremap = true, desc = 'Jump forward in jumplist' }) |
14 |
| - |
15 |
| - -- |
16 |
| - vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true }) |
17 |
| - -- vim.keymap.set('n', '<leader>sa', '<cmd>:wa<CR>', { desc = '[S]ave [A]ll buffers' }) |
18 |
| - vim.keymap.set('n', '<Esc>', '<cmd> noh <CR>', { desc = 'Clear highlighting' }) |
19 |
| - |
20 |
| - -- Remap for dealing with word wrap |
21 |
| - vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) |
22 |
| - vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) |
23 |
| - |
24 |
| - -- Diagnostic keymaps |
25 |
| - vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) |
26 |
| - vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) |
27 |
| - vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) |
28 |
| - vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) |
29 |
| - |
30 |
| - -- Buffers and Tabs |
31 |
| - vim.keymap.set('n', '<leader>bd', '<cmd>bdelete<CR>', { desc = 'Close current buffer' }) |
32 |
| - vim.keymap.set('n', '<leader>bD', '<cmd>bdelete!<CR>', { desc = 'Force close current buffer' }) |
33 |
| - vim.keymap.set('n', '<leader><tab>', '<cmd>tabnew<CR>', { desc = 'Move to next tab' }) |
34 |
| - vim.keymap.set('n', '<tab>', '<cmd>tabn<CR>', { desc = 'Move to next tab' }) |
35 |
| - vim.keymap.set('n', '<S-tab>', '<cmd>tabp<CR>', { desc = 'Move to previous tab' }) |
36 |
| - |
37 |
| - -- Move between windows |
38 |
| - vim.keymap.set('n', '<C-h>', '<C-w>h', { desc = 'Window left' }) |
39 |
| - vim.keymap.set('n', '<C-l>', '<C-w>l', { desc = 'Window right' }) |
40 |
| - vim.keymap.set('n', '<C-j>', '<C-w>j', { desc = 'Window down' }) |
41 |
| - vim.keymap.set('n', '<C-k>', '<C-w>k', { desc = 'Window up' }) |
42 |
| - |
43 |
| - -- Terminal |
44 |
| - vim.keymap.set('t', '<Esc>', '<C-\\><C-n>', { desc = 'Exit terminal' }) |
45 |
| - vim.keymap.set('n', '<C-w>t', '<cmd>terminal <CR>', { desc = 'Open terminal' }) |
46 |
| - end, |
47 |
| - |
48 |
| - map_telescope = function() |
49 |
| - -- See `:help telescope.builtin` |
50 |
| - vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) |
51 |
| - vim.keymap.set('n', '<leader>sk', require('telescope.builtin').keymaps, { desc = '[S]earch [K]eymaps' }) |
52 |
| - vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) |
53 |
| - vim.keymap.set('n', '<leader>/', function() |
54 |
| - -- You can pass additional configuration to telescope to change theme, layout, etc. |
55 |
| - require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { |
56 |
| - winblend = 10, |
57 |
| - previewer = false, |
58 |
| - }) |
59 |
| - end, { desc = '[/] Fuzzily search in current buffer' }) |
60 |
| - |
61 |
| - local function telescope_live_grep_open_files() |
62 |
| - require('telescope.builtin').live_grep { |
63 |
| - find_command = 'rg', |
64 |
| - grep_open_files = true, |
65 |
| - prompt_title = 'Live Grep in Open Files', |
66 |
| - } |
67 |
| - end |
68 |
| - map('n', '<leader>s/', |
69 |
| - "<cmd> lua require('telescope.builtin').live_grep({ find_command = {'rg', '--files', '--hidden', '-g', '!.git' }})<cr>", |
70 |
| - { noremap = true, desc = '[S]earch by [G]rep' }) |
71 |
| - |
72 |
| - vim.keymap.set('n', '<leader>s/', telescope_live_grep_open_files, { desc = '[S]earch [/] in Open Files' }) |
73 |
| - vim.keymap.set('n', '<leader>ss', require('telescope.builtin').builtin, { desc = '[S]earch [S]elect Telescope' }) |
74 |
| - vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' }) |
75 |
| - |
76 |
| - map('n', '<leader>sf', |
77 |
| - "<cmd>lua require'telescope.builtin'.find_files({ find_command = {'rg', '--files', '--hidden', '-g', '!.git' }})<cr>", |
78 |
| - { noremap = true, desc = '[S]earch [F]iles' }) |
79 |
| - |
80 |
| - vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) |
81 |
| - vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) |
82 |
| - map('n', '<leader>sg', |
83 |
| - "<cmd> lua require('telescope.builtin').live_grep({ find_command = {'rg', '--files', '--hidden', '-g', '!.git' }})<cr>", |
84 |
| - { noremap = true, desc = '[S]earch by [G]rep' }) |
85 |
| - vim.keymap.set('n', '<leader>sG', ':LiveGrepGitRoot<cr>', { desc = '[S]earch by [G]rep on Git Root' }) |
86 |
| - vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) |
87 |
| - vim.keymap.set('n', '<leader>sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' }) |
88 |
| - end, |
89 |
| - |
90 |
| - map_debug = function() |
91 |
| - vim.keymap.set('n', '<F5>', require('dap').continue, { desc = 'Debug: Start/Continue' }) |
92 |
| - vim.keymap.set('n', '<F6>', require('dap').pause, { desc = 'Debug: Pause' }) |
93 |
| - vim.keymap.set('n', '<F10>', function() |
94 |
| - require('dapui').close() |
95 |
| - require('dap').terminate() |
96 |
| - end |
97 |
| - , { desc = 'Debug: Terminate' }) |
98 |
| - vim.keymap.set('n', '<F9>', require('dap').run_last, { desc = 'Debug: Run Last' }) |
99 |
| - vim.keymap.set('n', '<F1>', require('dap').step_into, { desc = 'Debug: Step Into' }) |
100 |
| - vim.keymap.set('n', '<F2>', require('dap').step_over, { desc = 'Debug: Step Over' }) |
101 |
| - vim.keymap.set('n', '<F3>', require('dap').step_out, { desc = 'Debug: Step Out' }) |
102 |
| - vim.keymap.set('n', '<F4>', require('dap').step_back, { desc = 'Debug: Step Back' }) |
103 |
| - vim.keymap.set('n', '<leader>b', require('dap').toggle_breakpoint, { desc = 'Debug: Toggle Breakpoint' }) |
104 |
| - vim.keymap.set('n', '<leader>B', function() |
105 |
| - require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') |
106 |
| - end, { desc = 'Debug: Set Breakpoint' }) |
107 |
| - -- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception. |
108 |
| - vim.keymap.set('n', '<F7>', require('dapui').toggle, { desc = 'Debug: See last session result.' }) |
109 |
| - end, |
110 |
| - |
111 |
| - map_neogen = function() |
112 |
| - vim.keymap.set('n', '<leader>dc', require('neogen').generate, |
113 |
| - { desc = '[D]ocument [C]ode' }) |
114 |
| - end, |
115 |
| - |
116 |
| - map_tabline = function() |
117 |
| - vim.keymap.set('n', '<Tab>', function() require('bufferline').cycle(1) end, |
118 |
| - { desc = 'Move to next buffer on bufferline' }) |
119 |
| - vim.keymap.set('n', '<S-Tab>', function() require('bufferline').cycle(-1) end, |
120 |
| - { desc = 'Move to previous buffer on bufferline' }) |
121 |
| - vim.keymap.set('n', '<leader>x', '<cmd>:bdelete<CR>', |
122 |
| - { desc = 'Close current buffer' }) |
123 |
| - end, |
124 |
| - |
125 |
| - map_naba = function() |
126 |
| - vim.keymap.set('n', '<leader>k', require('nabla').popup, |
127 |
| - { desc = 'Hover Latex' }) |
128 |
| - end, |
129 |
| - |
130 |
| - map_file_tree = function() |
131 |
| - vim.keymap.set('n', '<C-n>', '<Cmd>Neotree toggle<CR>') |
132 |
| - -- vim.keymap.set('n', '<C-n>', '<cmd>Neotree toggle<CR>', |
133 |
| - -- { desc = 'Toggle filetree' }) |
134 |
| - end, |
135 |
| - |
136 |
| - map_better_term = function() |
137 |
| - local betterTerm = require('betterTerm') |
138 |
| - vim.keymap.set({ "n", "t" }, "<C-;>", betterTerm.open, { desc = "Open terminal" }) |
139 |
| - -- Select term focus |
140 |
| - vim.keymap.set({ "n" }, "<leader>tt", betterTerm.select, { desc = "Select terminal" }) |
141 |
| - -- Create new term |
142 |
| - local current = 2 |
143 |
| - vim.keymap.set( |
144 |
| - { "n" }, "<leader>tn", |
145 |
| - function() |
146 |
| - betterTerm.open(current) |
147 |
| - current = current + 1 |
148 |
| - end, |
149 |
| - { desc = "New terminal" } |
150 |
| - ) |
| 1 | +-- [[ Basic Keymaps ]] |
| 2 | +-- See `:help vim.keymap.set()` |
| 3 | + |
| 4 | +-- Clear highlights on search when pressing <Esc> in normal mode |
| 5 | +-- See `:help hlsearch` |
| 6 | +vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>') |
| 7 | + |
| 8 | +-- Diagnostic keymaps |
| 9 | +vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) |
| 10 | + |
| 11 | +-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier |
| 12 | +-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which |
| 13 | +-- is not what someone will guess without a bit more experience. |
| 14 | +-- |
| 15 | +-- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping |
| 16 | +-- or just use <C-\><C-n> to exit terminal mode |
| 17 | +vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' }) |
| 18 | + |
| 19 | +-- TIP: Disable arrow keys in normal mode |
| 20 | +-- vim.keymap.set('n', '<left>', '<cmd>echo "Use h to move!!"<CR>') |
| 21 | +-- vim.keymap.set('n', '<right>', '<cmd>echo "Use l to move!!"<CR>') |
| 22 | +-- vim.keymap.set('n', '<up>', '<cmd>echo "Use k to move!!"<CR>') |
| 23 | +-- vim.keymap.set('n', '<down>', '<cmd>echo "Use j to move!!"<CR>') |
| 24 | + |
| 25 | +-- Buffers and Tabs |
| 26 | +vim.keymap.set('n', '<leader>bd', '<cmd>bdelete<CR>', { desc = 'Close current buffer' }) |
| 27 | +vim.keymap.set('n', '<leader>bD', '<cmd>bdelete!<CR>', { desc = 'Force close current buffer' }) |
| 28 | +vim.keymap.set('n', '<leader><tab>', '<cmd>tabnew<CR>', { desc = 'Move to next tab' }) |
| 29 | +vim.keymap.set('n', '<tab>', '<cmd>tabn<CR>', { desc = 'Move to next tab' }) |
| 30 | +vim.keymap.set('n', '<S-tab>', '<cmd>tabp<CR>', { desc = 'Move to previous tab' }) |
| 31 | + |
| 32 | +-- Terminal |
| 33 | +vim.keymap.set('t', '<Esc>', '<C-\\><C-n>', { desc = 'Exit terminal' }) |
| 34 | +vim.keymap.set('n', '<C-w>t', '<cmd>terminal <CR>', { desc = 'Open terminal' }) |
| 35 | + |
| 36 | +-- Keybinds to make split navigation easier. |
| 37 | +-- Use CTRL+<hjkl> to switch between windows |
| 38 | +-- |
| 39 | +-- See `:help wincmd` for a list of all window commands |
| 40 | +vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' }) |
| 41 | +vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' }) |
| 42 | +vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' }) |
| 43 | +vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' }) |
| 44 | + |
| 45 | +-- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes |
| 46 | +-- vim.keymap.set("n", "<C-S-h>", "<C-w>H", { desc = "Move window to the left" }) |
| 47 | +-- vim.keymap.set("n", "<C-S-l>", "<C-w>L", { desc = "Move window to the right" }) |
| 48 | +-- vim.keymap.set("n", "<C-S-j>", "<C-w>J", { desc = "Move window to the lower" }) |
| 49 | +-- vim.keymap.set("n", "<C-S-k>", "<C-w>K", { desc = "Move window to the upper" }) |
| 50 | + |
| 51 | +-- [[ Basic Autocommands ]] |
| 52 | +-- See `:help lua-guide-autocommands` |
| 53 | + |
| 54 | +-- Highlight when yanking (copying) text |
| 55 | +-- Try it with `yap` in normal mode |
| 56 | +-- See `:help vim.hl.on_yank()` |
| 57 | +vim.api.nvim_create_autocmd('TextYankPost', { |
| 58 | + desc = 'Highlight when yanking (copying) text', |
| 59 | + group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), |
| 60 | + callback = function() |
| 61 | + vim.hl.on_yank() |
151 | 62 | end,
|
152 |
| -} |
| 63 | +}) |
153 | 64 |
|
154 |
| -return keymaps |
| 65 | +-- vim: ts=2 sts=2 sw=2 et |
0 commit comments