Files
lazyfox/lua/config/keymaps.lua
2025-08-15 14:00:44 +03:00

68 lines
3.6 KiB
Lua

-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Add any additional keymaps here
local k = vim.keymap
-- k.set("n", ";", ":", { desc = "" })
k.set("i", "jj", "<esc>", { desc = "" })
k.set("i", "jk", "<esc><cmd>w<cr>", { desc = "Save" })
k.set("n", "<leader>a", ":keepjumps normal! ggVG<cr>")
k.set({ "n", "v" }, "<M-t>", ":lua Snacks.terminal.get()<cr>", { desc = "Terminal" })
k.set({ "t", "n", "v" }, "<C-h>", "<C-\\><C-n><C-w>h", { desc = "Go to left window" })
k.set({ "t", "n", "v" }, "<C-j>", "<C-\\><C-n><C-w>j", { desc = "Go to bottom window" })
k.set({ "t", "n", "v" }, "<C-k>", "<C-\\><C-n><C-w>k", { desc = "Go to top window" })
k.set({ "t", "n", "v" }, "<C-l>", "<C-\\><C-n><C-w>l", { desc = "Go to right window" })
k.set("n", "<leader>li", "<cmd>LspInfo<cr>", { desc = "LSP Info" })
k.set("n", "<leader>o", ":lua Snacks.dashboard()<cr>", { desc = "Dashboard" })
-- Основные горячие клавиши для Obsidian
k.set("n", "<leader>of", ":ObsidianQuickSwitch<CR>", { desc = "Quick switch" })
k.set("n", "<leader>on", ":ObsidianNew<CR>", { desc = "New note" })
k.set("n", "<leader>os", ":ObsidianSearch<CR>", { desc = "Search notes" })
k.set("n", "<leader>ot", ":ObsidianTags<CR>", { desc = "Tags" })
k.set("n", "<leader>ob", ":ObsidianBacklinks<CR>", { desc = "Backlinks" })
k.set("n", "<leader>ol", ":ObsidianLinks<CR>", { desc = "Links" })
k.set("n", "<leader>oo", ":ObsidianOpen<CR>", { desc = "Open in Obsidian" })
k.set("n", "<leader>or", ":ObsidianRename<CR>", { desc = "Rename note" })
k.set("n", "<leader>op", ":ObsidianPasteImg<CR>", { desc = "Paste image" })
k.set("n", "<leader>ow", ":ObsidianWorkspace<CR>", { desc = "Switch workspace" })
-- Горячие клавиши для Markdown
k.set("n", "<leader>mp", ":MarkdownPreviewToggle<CR>", { desc = "Toggle preview" })
k.set("n", "<leader>mg", ":Glow<CR>", { desc = "Glow preview" })
k.set("n", "<leader>mt", ":TableModeToggle<CR>", { desc = "Table mode" })
k.set("n", "<leader>mc", ":lua require('markdown-togglecheck').toggle()<CR>", { desc = "Toggle checkbox" })
-- Splitting & Resizing
k.set("n", "<leader>sv", ":vsplit<CR>", { desc = "Split window vertically" })
k.set("n", "<leader>sh", ":split<CR>", { desc = "Split window horizontally" })
k.set("n", "<C-Up>", ":resize +2<CR>", { desc = "Increase window height" })
k.set("n", "<C-Down>", ":resize -2<CR>", { desc = "Decrease window height" })
k.set("n", "<C-Left>", ":vertical resize -2<CR>", { desc = "Decrease window width" })
k.set("n", "<C-Right>", ":vertical resize +2<CR>", { desc = "Increase window width" })
-- Move lines up/down
k.set("n", "<A-j>", ":m .+1<CR>==", { desc = "Move line down" })
k.set("n", "<A-k>", ":m .-2<CR>==", { desc = "Move line up" })
k.set("v", "<A-j>", ":m '>+1<CR>gv=gv", { desc = "Move selection down" })
k.set("v", "<A-k>", ":m '<-2<CR>gv=gv", { desc = "Move selection up" })
-- Better indenting in visual mode
k.set("v", "<", "<gv", { desc = "Indent left and reselect" })
k.set("v", ">", ">gv", { desc = "Indent right and reselect" })
-- Keys for Neorg
k.set("n", "\\jt", ":Neorg journal today<CR>", { desc = "Create Neorg Journal note today" })
k.set("n", "\\jc", ":Neorg journal custom<CR>", { desc = "Create Neorg Journal note custom" })
k.set("n", "\\<Space>", "<Plug>(neorg.qol.todo-items.todo.task-cycle)", { desc = "Cycle done-undone task in Neorg" })
vim.api.nvim_create_autocmd("Filetype", {
pattern = "norg",
callback = function()
vim.keymap.set("n", "<CR>", "<Plug>(neorg.esupports.hop.hop-link)", { buffer = true })
end,
})