summaryrefslogtreecommitdiff
path: root/config/nvim/lua/keymaps.lua
diff options
context:
space:
mode:
author2026-02-12 18:21:04 +0300
committer2026-02-12 18:21:04 +0300
commit529898343aed91872813833b1fa6bdf688cc4b2e (patch)
treeddde638184214df1873329539a2f8cc794e2ae12 /config/nvim/lua/keymaps.lua
parentnvim lazy upd (diff)
downloaddotfiles-529898343aed91872813833b1fa6bdf688cc4b2e.tar.gz
dotfiles-529898343aed91872813833b1fa6bdf688cc4b2e.tar.bz2
dotfiles-529898343aed91872813833b1fa6bdf688cc4b2e.tar.xz
dotfiles-529898343aed91872813833b1fa6bdf688cc4b2e.zip
12.02.2026
Diffstat (limited to '')
-rw-r--r--config/nvim/lua/keymaps.lua457
1 files changed, 36 insertions, 421 deletions
diff --git a/config/nvim/lua/keymaps.lua b/config/nvim/lua/keymaps.lua
index 0597937..d4ca130 100644
--- a/config/nvim/lua/keymaps.lua
+++ b/config/nvim/lua/keymaps.lua
@@ -1,424 +1,39 @@
-local kmap = vim.keymap.set
-
-local keys = {
- -- ========== БАЗОВАЯ НАВИГАЦИЯ ==========
- {
- "<Space>",
- "<Nop>",
- { desc = "Disable Space in normal mode" },
- },
- {
- "<Home>",
- "^",
- { desc = "Go to first non-blank character" },
- },
- {
- "<End>",
- "$",
- { desc = "Go to end of line" },
- },
- {
- "<Home>",
- "^",
- { mode = "v", desc = "Go to first non-blank character (visual)" },
- },
- {
- "<End>",
- "$",
- { mode = "v", desc = "Go to end of line (visual)" },
- },
- {
- "<Home>",
- "<C-o>^",
- { mode = "i", desc = "Go to first non-blank character (insert)" },
- },
- {
- "<End>",
- "<C-o>$",
- { mode = "i", desc = "Go to end of line (insert)" },
- },
-
- -- ========== ВИЗУАЛЬНЫЙ РЕЖИМ ==========
- {
- "i",
- "<S-i>",
- { mode = "v", desc = "Select inner object" },
- },
- {
- "a",
- "<S-a>",
- { mode = "v", desc = "Select around object" },
- },
- {
- "J",
- ":m '>+1<CR>gv=gv",
- { mode = "v", desc = "Move selection down" },
- },
- {
- "K",
- ":m '<-2<CR>gv=gv",
- { mode = "v", desc = "Move selection up" },
- },
- {
- "<",
- "<gv",
- { mode = "v", desc = "Indent left and keep selection" },
- },
- {
- ">",
- ">gv",
- { mode = "v", desc = "Indent right and keep selection" },
- },
-
- -- ========== УПРАВЛЕНИЕ БУФЕРАМИ ==========
- {
- "<leader>bn",
- "<cmd>bnext<CR>",
- { desc = "Next buffer" },
- },
- {
- "<leader>bp",
- "<cmd>bprevious<CR>",
- { desc = "Previous buffer" },
- },
- {
- "<leader>bd",
- "<cmd>bdelete<CR>",
- { desc = "Delete buffer" },
- },
- {
- "<C-s>",
- "<cmd>wa<CR>",
- { desc = "Save all files" },
- },
- {
- "<leader>q",
- "<cmd>q<CR>",
- { desc = "Exit" },
- },
- {
- "<leader>vs",
- "<cmd>vsplit<CR>",
- { desc = "Vertical split" },
- },
-
- -- ========== УПРАВЛЕНИЕ ВКЛАДКАМИ ==========
- {
- "<A-Right>",
- "<cmd>tabnext<CR>",
- { desc = "Next tab" },
- },
- {
- "<A-Left>",
- "<cmd>tabprevious<CR>",
- { desc = "Previous tab" },
- },
- {
- "<A-t>",
- "<cmd>tabnew<CR>",
- { desc = "New tab" },
- },
- {
- "<A-w>",
- "<cmd>tabclose<CR>",
- { desc = "Close tab" },
- },
-
- -- ========== NVIM-TREE (ФАЙЛОВЫЙ ЭКСПЛОРЕР) ==========
- {
- "<C-c>",
- function()
- local api = require("nvim-tree.api")
- local global_cwd = vim.fn.getcwd(-1, -1)
- api.tree.change_root(global_cwd)
- end,
- { desc = "Change tree root to CWD" },
- },
- {
- "<F3>",
- "<cmd>NvimTreeToggle<CR>",
- { desc = "Toggle file tree" },
- },
-
- -- ========== TELESCOPE (ПОИСК) ==========
- {
- "<leader>ff",
- "<cmd>Telescope find_files<CR>",
- { desc = "Find files" },
- },
- {
- "<leader>fg",
- "<cmd>Telescope live_grep<CR>",
- { desc = "Live grep" },
- },
- {
- "<leader>fb",
- "<cmd>Telescope current_buffer_fuzzy_find<CR>",
- { desc = "Find in current buffer" },
- },
- {
- "<F4>",
- "<cmd>Telescope buffers<CR>",
- { desc = "Find buffers" },
- },
- {
- "<leader>gc",
- "<cmd>Telescope git_commits<CR>",
- { desc = "Git commits" },
- },
- {
- "<leader>gs",
- "<cmd>Telescope git_status<CR>",
- { desc = "Git status" },
- },
- {
- "<leader>ch",
- "<cmd>Telescope commands_history<CR>",
- { desc = "Commands history" },
- },
- {
- "<leader>e",
- "<cmd>Telescope diagnostics<CR>",
- { desc = "Diagnostics" },
- },
- {
- "gi",
- "<cmd>Telescope lsp_implementations<CR>",
- { desc = "LSP implementations" },
- },
- {
- "gr",
- "<cmd>Telescope lsp_references<CR>",
- { desc = "LSP references" },
- },
-
- -- ========== LSP (ЯЗЫКОВОЙ СЕРВЕР) ==========
- {
- "d[",
- vim.diagnostic.goto_prev,
- { desc = "Previous diagnostic" },
- },
- {
- "d]",
- vim.diagnostic.goto_next,
- { desc = "Next diagnostic" },
- },
- {
- "gD",
- vim.lsp.buf.declaration,
- { desc = "Go to declaration" },
- },
- {
- "gd",
- vim.lsp.buf.definition,
- { desc = "Go to definition" },
- },
- {
- "K",
- vim.lsp.buf.hover,
- { desc = "Show documentation" },
- },
- {
- "<C-k>",
- vim.lsp.buf.signature_help,
- { desc = "Signature help" },
- },
- {
- "<leader>sad",
- "<cmd>ApidocsOpen<cr>",
- { desc = "Search Api Doc" },
- },
- {
- "<leader>wa",
- vim.lsp.buf.add_workspace_folder,
- { desc = "Add workspace folder" },
- },
- {
- "<leader>wr",
- vim.lsp.buf.remove_workspace_folder,
- { desc = "Remove workspace folder" },
- },
- {
- "<leader>im",
- function()
- require("telescope").extensions.goimpl.goimpl({})
- end,
- { desc = "Generate stub for interface on a type for golang" },
- },
- {
- "<leader>wl",
- function()
- print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
- end,
- { desc = "List workspace folders" },
- },
- {
- "<A-CR>",
- "<cmd>Lspsaga code_action<cr>",
- { desc = "Code actions" },
- },
- {
- "<F2>",
- vim.lsp.buf.rename,
- { desc = "Rename symbol" },
- },
- {
- "<A-q>",
- "gqip",
- { desc = "Reflow line" },
- },
-
- -- ========== ИЗМЕНЕНИЕ РАЗМЕРА ОКОН ==========
- {
- "<C-A-Left>",
- function()
- require("myplugins.resize").ResizeLeft()
- end,
- { desc = "Resize window left" },
- },
- {
- "<C-A-Right>",
- function()
- require("myplugins.resize").ResizeRight()
- end,
- { desc = "Resize window right" },
- },
- {
- "<C-A-Up>",
- function()
- require("myplugins.resize").ResizeUp()
- end,
- { desc = "Resize window up" },
- },
- {
- "<C-A-Down>",
- function()
- require("myplugins.resize").ResizeDown()
- end,
- { desc = "Resize window down" },
- },
-
- -- ========== DAP (ОТЛАДКА) ==========
- {
- "<F6>",
- function()
- require("dapui").toggle()
- end,
- { desc = "Toggle debug UI" },
- },
- {
- "<Leader>dh",
- function()
- require("dap.ui.widgets").hover()
- end,
- { desc = "Debug hover" },
- },
- {
- "<Leader>dp",
- function()
- require("dap.ui.widgets").preview()
- end,
- { desc = "Debug preview" },
- },
- {
- "<leader>dt",
- function()
- require("dap-go").debug_test()
- end,
- { desc = "Debug test" },
- },
- {
- "<F9>",
- function()
- local widgets = require("dap.ui.widgets")
- widgets.centered_float(widgets.scopes)
- end,
- { desc = "Debug scopes" },
- },
- {
- "<F5>",
- function()
- require("dap").continue()
- end,
- { desc = "Debug continue" },
- },
- {
- "<F17>",
- function() -- S-F5
- require("dap").restart()
- end,
- { desc = "Debug restart" },
- },
- {
- "<F29>",
- function() -- C-F5
- require("dap").terminate()
- end,
- { desc = "Debug terminate" },
- },
- {
- "<F8>",
- function()
- require("dap").step_over()
- end,
- { desc = "Debug step over" },
- },
- {
- "<F7>",
- function()
- require("dap").step_into()
- end,
- { desc = "Debug step into" },
- },
- {
- "<F19>",
- function() -- S-F7
- require("dap").step_out()
- end,
- { desc = "Debug step out" },
- },
- {
- "<A-b>",
- function()
- require("dap").toggle_breakpoint()
- end,
- { desc = "Toggle breakpoint" },
- },
-
- -- ========== ФОРМАТИРОВАНИЕ ==========
- {
- "<leader>mp",
- function()
- require("conform").format({ lsp_fallback = true, async = false, timeout_ms = 500 })
- end,
- { desc = "Format file or range (in visual mode)" },
- },
-}
-
--- Добавляем быстрый переход по вкладкам (1-9)
+-- ========== БАЗОВАЯ НАВИГАЦИЯ ==========
+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", "<", "<gv", { desc = "Indent left and keep selection" })
+vim.keymap.set("v", ">", ">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
- table.insert(keys, {
- "<A-" .. i .. ">",
- "<cmd>tabn " .. i .. "<CR>",
- { desc = "Go to tab " .. i },
- })
+ vim.keymap.set("n", "<A-" .. i .. ">", "<cmd>tabn " .. i .. "<CR>", { desc = "Go to tab " .. i })
end
--- Применяем все кеймапинги
-for _, mapping in ipairs(keys) do
- local key = mapping[1]
- local action = mapping[2]
- local opts = mapping[3] or {}
-
- -- Извлекаем режим или используем "n" по умолчанию
- local mode = opts.mode or "n"
- -- Удаляем mode из opts, так как он передается отдельно
- opts.mode = nil
-
- -- Устанавливаем silent = true по умолчанию
- if opts.silent == nil then
- opts.silent = true
- end
-
- kmap(mode, key, action, opts)
-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" })