summaryrefslogtreecommitdiff
path: root/config/nvim/lua/keymaps.lua
blob: 4c5c4711dc2ad3fc49858672ffd556a4d2b5e181 (plain) (blame)
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
-- ========== БАЗОВАЯ НАВИГАЦИЯ ==========
vim.keymap.set("n", "<Space>", "<Nop>", { desc = "Disable Space in normal mode" })
vim.keymap.set("n", "<Home>", "^", { desc = "Go to first non-blank character" })
vim.keymap.set("n", "<End>", "$", { desc = "Go to end of line" })
vim.keymap.set("v", "<Home>", "^", { desc = "Go to first non-blank character (visual)" })
vim.keymap.set("v", "<End>", "$", { desc = "Go to end of line (visual)" })
vim.keymap.set("i", "<Home>", "<C-o>^", { desc = "Go to first non-blank character (insert)" })
vim.keymap.set("i", "<End>", "<C-o>$", { desc = "Go to end of line (insert)" })

-- ========== ВИЗУАЛЬНЫЙ РЕЖИМ ==========
vim.keymap.set("v", "i", "<S-i>", { desc = "Select inner object" })
vim.keymap.set("v", "a", "<S-a>", { desc = "Select around object" })
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv", { desc = "Move selection down" })
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "Move selection up" })
vim.keymap.set("v", "H", "<gv", { desc = "Indent left and keep selection" })
vim.keymap.set("v", "L", ">gv", { desc = "Indent right and keep selection" })

-- ========== УПРАВЛЕНИЕ БУФЕРАМИ ==========
vim.keymap.set("n", "<leader>bn", "<cmd>bnext<CR>", { desc = "Next buffer" })
vim.keymap.set("n", "<leader>bp", "<cmd>bprevious<CR>", { desc = "Previous buffer" })
vim.keymap.set("n", "<leader>bd", "<cmd>bdelete<CR>", { desc = "Delete buffer" })
vim.keymap.set("n", "<C-s>", "<cmd>wa<CR>", { desc = "Save all files" })
vim.keymap.set("n", "<C-q>", "<cmd>q<CR>", { desc = "Exit" })
vim.keymap.set("n", "<leader>vs", "<cmd>vsplit<CR>", { desc = "Vertical split" })

-- ========== УПРАВЛЕНИЕ ВКЛАДКАМИ ==========
vim.keymap.set("n", "<A-Right>", "<cmd>tabnext<CR>", { desc = "Next tab" })
vim.keymap.set("n", "<A-Left>", "<cmd>tabprevious<CR>", { desc = "Previous tab" })
vim.keymap.set("n", "<A-t>", "<cmd>tabnew<CR>", { desc = "New tab" })
vim.keymap.set("n", "<A-w>", "<cmd>tabclose<CR>", { desc = "Close tab" })

-- ========== Quick tab navigation (1-9) ==========
for i = 1, 9 do
	vim.keymap.set("n", "<A-" .. i .. ">", "<cmd>tabn " .. i .. "<CR>", { desc = "Go to tab " .. i })
end

-- ========== MISCELLANEOUS ==========
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, { desc = "Signature help" })
vim.keymap.set("n", "<A-q>", "gqip", { desc = "Reflow line" })

vim.keymap.set({ "n", "v", "s", "x", "o", "i", "l", "c", "t" }, "<C-S-v>", function()
	vim.api.nvim_paste(vim.fn.getreg("+"), true, -1)
end, { noremap = true, silent = true })