diff options
| author | pablu <me@pablu.de> | 2026-03-22 18:04:35 +0100 |
|---|---|---|
| committer | pablu <me@pablu.de> | 2026-03-22 18:04:35 +0100 |
| commit | 1d5ca0aa2971d2485575ed7c5efad17144cb3fb1 (patch) | |
| tree | 325017afee1cc8cde6808fa390e26394528bdfc1 /dot_config/nvim/init.lua | |
Initial commit
Diffstat (limited to 'dot_config/nvim/init.lua')
| -rw-r--r-- | dot_config/nvim/init.lua | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua new file mode 100644 index 0000000..e39d340 --- /dev/null +++ b/dot_config/nvim/init.lua @@ -0,0 +1,110 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +require("vim-options") +require("lazy").setup("plugins") + +vim.o.number = true +vim.o.relativenumber = true + +vim.filetype.add({ + extension = { + gotmpl = 'gotmpl', + }, + pattern = { + [".*%.gohtml"] = "gotmpl", + [".*%.gotmpl"] = "gotmpl" + } +}) + +-- Panes +vim.cmd.set("splitright") +vim.keymap.set("n", "<leader>/", function() + vim.cmd.vnew() +end, { desc = "Pane split right" }) + +vim.cmd.set("splitbelow") +vim.keymap.set("n", "<leader>-", function() + vim.cmd.new() +end, { desc = "Pane split down" }) + +-- vim.api.nvim_set_keymap('n', '<c-k>', ':wincmd k<CR>', { noremap = true, silent = true, desc = "Move to up windows" }); +-- vim.api.nvim_set_keymap('n', '<c-h>', ':wincmd h<CR>', { noremap = true, silent = true, desc = "Move to left windows" }); +-- vim.api.nvim_set_keymap('n', '<c-j>', ':wincmd j<CR>', { noremap = true, silent = true, desc = "Move to down windows" }); +-- vim.api.nvim_set_keymap('n', '<c-l>', ':wincmd l<CR>', { noremap = true, silent = true, desc = "Move to right windows" }); + +vim.api.nvim_set_keymap('n', 'gb', ':bnext<CR>', { noremap = true, silent = true, desc = "Go back last buffer" }); + +vim.api.nvim_set_keymap('t', '<c-[><c-[>', '<C-\\><C-n>', { noremap = true, silent = true, desc = "Escape Terminal" }); +vim.api.nvim_create_autocmd('TermOpen', { + group = vim.api.nvim_create_augroup('custom-term-open', { clear = true }), + callback = function() + vim.opt.number = false + vim.opt.relativenumber = false + end, +}); + + +-- Telescope +local builtin = require("telescope.builtin") +vim.keymap.set('n', '<leader>fg', function() builtin.live_grep({ glob_pattern = "!*_templ.go" }) end, + { desc = "Telescope live grep" }) +vim.keymap.set('n', 'gl', builtin.lsp_references, { desc = "Telescope show references" }) +vim.keymap.set('n', '<leader>fx', builtin.diagnostics, { desc = "Telescope open diagnostics" }) +vim.keymap.set('n', '<leader>ff', builtin.find_files, { desc = "Telescope find files" }) +vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = "Telescope open buffers" }) + +-- Formating +vim.keymap.set("n", "<leader>gf", function() + require("conform").format({ lsp_format = "fallback" }) +end, { desc = "Format buffer" }) + +-- Filesystem +vim.keymap.set("n", "<leader>e", ":Oil<CR>", { desc = "Open file explorer: OIL" }) + +-- Neotest +local neotest = require("neotest") +vim.keymap.set("n", "<leader>ts", function() + neotest.summary.toggle() +end, { desc = "Neotest open summary" }) +vim.keymap.set("n", "<leader>to", neotest.output.open, { desc = "Neotest open output" }) +vim.keymap.set("n", "<leader>td", function() neotest.run.run({ suite = false, strategy = "dap" }) end, + { desc = "Neotest debug closest test" }) +vim.keymap.set("n", "<leader>tr", function() neotest.run.run({ suite = false }) end, + { desc = "Neotest run closest test" }) + +-- Debugging +local dap = require("dap") +vim.keymap.set("n", "<leader>db", dap.toggle_breakpoint, + { nowait = true, remap = false, desc = "Debug toggle breakpoint" }) +vim.keymap.set("n", "<leader>dc", dap.continue, { nowait = true, remap = false, desc = "Debug continue" }) +vim.keymap.set("n", "<leader>di", dap.step_into, { nowait = true, remap = false, desc = "Debug step into" }) +vim.keymap.set("n", "<leader>do", dap.step_over, { nowait = true, remap = false, desc = "Debug step over" }) +vim.keymap.set("n", "<leader>dr", dap.repl.open, { nowait = true, remap = false, desc = "Debug open repl" }) +vim.keymap.set("n", "<leader>dq", function() + dap.terminate() + require("dapui").close() + require("nvim-dap-virtual-text").toggle() +end, { nowait = true, remap = false, desc = "Debug close" }) +vim.keymap.set("n", "<leader>dl", dap.list_breakpoints, { nowait = true, remap = false, desc = "Debug list breakpoints" }) + + +-- Lsp Config +vim.keymap.set("n", "K", vim.lsp.buf.hover, { desc = "Show hover information" }) +vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Goto definition" }) +vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, { desc = "LSP code action" }) +vim.keymap.set("n", "<leader>cr", vim.lsp.buf.rename, { desc = "LSP rename" }) + +-- Motions +vim.keymap.set("n", "<C-d>", "<C-d>zz", {}) +vim.keymap.set("n", "<C-u>", "<C-u>zz", {}) |
