aboutsummaryrefslogtreecommitdiffstats
path: root/home/nvim/keymaps.lua
diff options
context:
space:
mode:
authorPetri Hienonen <petri.hienonen@gmail.com>2024-05-23 13:56:00 +0300
committerPetri Hienonen <petri.hienonen@gmail.com>2025-11-30 12:29:57 +0200
commit08297376a85a1719518507e54fca9de954d2376a (patch)
tree3b9c58304b40248533bbb2bb5b7bad2da9da1ff0 /home/nvim/keymaps.lua
parent75c2af4aedd2ac5c2cfc74b346625fa4b265541d (diff)
downloadnixos-08297376a85a1719518507e54fca9de954d2376a.tar.zst
Agenix configuration
Diffstat (limited to 'home/nvim/keymaps.lua')
-rw-r--r--home/nvim/keymaps.lua86
1 files changed, 86 insertions, 0 deletions
diff --git a/home/nvim/keymaps.lua b/home/nvim/keymaps.lua
new file mode 100644
index 0000000..d8907bf
--- /dev/null
+++ b/home/nvim/keymaps.lua
@@ -0,0 +1,86 @@
+vim.g.mapleader = " "
+vim.g.maplocalleader = " "
+vim.keymap.set("v", "<", "<gv", { desc = "Indent left" })
+vim.keymap.set("v", ">", ">gv", { desc = "Indent right" })
+
+vim.keymap.set("n", "<leader><space>", "<cmd>Pick buffers<cr>", { desc = "Search open files" })
+vim.keymap.set("n", "<leader>ff", "<cmd>Pick files<cr>", { desc = "Search all files" })
+vim.keymap.set("n", "<leader>fh", "<cmd>Pick help<cr>", { desc = "Search help tags" })
+
+-- Alternative navigation (more intuitive)
+vim.keymap.set("n", "<leader>tn", ":tabnew<CR>", { desc = "New tab" })
+vim.keymap.set("n", "<leader>tx", ":tabclose<CR>", { desc = "Close tab" })
+
+-- Tab moving
+vim.keymap.set("n", "<leader>tm", ":tabmove<CR>", { desc = "Move tab" })
+vim.keymap.set("n", "<leader>t>", ":tabmove +1<CR>", { desc = "Move tab right" })
+vim.keymap.set("n", "<leader>t<", ":tabmove -1<CR>", { desc = "Move tab left" })
+
+vim.keymap.set("n", "<leader>dq", vim.diagnostic.disable)
+vim.keymap.set("n", "<leader>ds", vim.diagnostic.enable)
+
+vim.keymap.set({ "n", "x" }, "gy", '"+y', { desc = "Copy to clipboard" })
+vim.keymap.set({ "n", "x" }, "gp", '"+p', { desc = "Paste clipboard text" })
+
+vim.keymap.set("n", "<Esc>", "<cmd>nohlsearch<CR>")
+vim.keymap.set(
+ "n",
+ "<leader>q",
+ vim.diagnostic.setloclist,
+ { desc = "Open diagnostic [Q]uickfix list" }
+)
+vim.keymap.set("n", "<leader>q", ":bp<bar>sp<bar>bn<bar>bd<CR>", { desc = "Close buffer" })
+vim.keymap.set("n", "<leader>Q", ":bd!<CR>", { desc = "Force close buffer" })
+vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })
+
+vim.keymap.set("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" })
+vim.keymap.set("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" })
+vim.keymap.set("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" })
+vim.keymap.set("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" })
+
+vim.keymap.set("n", "<leader>e", "<CMD>:lua MiniFiles.open()<CR>", { desc = "Open [E]xplorer" })
+
+vim.keymap.set("n", "<F5>", "<cmd>DapContinue<CR>", { desc = "DAP: Continue" })
+vim.keymap.set("n", "<leader>bp", "<cmd>DapToggleBreakpoint<CR>", { desc = "DAP: Toggle Breakpoint" })
+vim.keymap.set("n", "<F6>", "<cmd>DapStepOver<CR>", { desc = "DAP: Step Over" })
+vim.keymap.set("n", "<F7>", "<cmd>DapStepInto<CR>", { desc = "DAP: Step Into" })
+vim.keymap.set("n", "<F8>", "<cmd>DapStepOut<CR>", { desc = "DAP: Step Out" })
+vim.keymap.set("n", "<leader>dt", "<cmd>DapTerminate<CR>", { desc = "DAP: Terminate" })
+
+local function tab_complete()
+ if vim.fn.pumvisible() == 1 then
+ -- navigate to next item in completion menu
+ return "<Down>"
+ end
+
+ local c = vim.fn.col(".") - 1
+ local is_whitespace = c == 0 or vim.fn.getline("."):sub(c, c):match("%s")
+
+ if is_whitespace then
+ -- insert tab
+ return "<Tab>"
+ end
+
+ local lsp_completion = vim.bo.omnifunc == "v:lua.vim.lsp.omnifunc"
+
+ if lsp_completion then
+ -- trigger lsp code completion
+ return "<C-x><C-o>"
+ end
+
+ -- suggest words in current buffer
+ return "<C-x><C-n>"
+end
+
+local function tab_prev()
+ if vim.fn.pumvisible() == 1 then
+ -- navigate to previous item in completion menu
+ return "<Up>"
+ end
+
+ -- insert tab
+ return "<Tab>"
+end
+
+vim.keymap.set("i", "<Tab>", tab_complete, { expr = true })
+vim.keymap.set("i", "<S-Tab>", tab_prev, { expr = true })