vim.g.mapleader = " " vim.keymap.set("n", "e", "Oil --float") vim.keymap.set("n", "n", "set nu!") vim.keymap.set("n", "rn", "set rnu!") vim.keymap.set("n", "", "nohl") vim.keymap.set("n", "x", "bw") vim.keymap.set("n", "n", "bn") vim.keymap.set("n", "p", "bp") vim.keymap.set("n", "fb", "=ap") vim.keymap.set("n", "m", "make") vim.keymap.set("n", "", "!chmod 755 %", { silent = true }) vim.keymap.set("n", "", ":m .+1==") vim.keymap.set("n", "", ":m .-2==") vim.keymap.set("v", "J", ":m '>+1gv=gv") vim.keymap.set("v", "K", ":m '<-2gv=gv") vim.keymap.set("n", "", "") vim.keymap.set("n", "", "") vim.keymap.set("v", ">", ">gv") vim.keymap.set("v", "<", "sl", "exec \"normal i\".nr2char(getchar()).\"\\e\"") vim.keymap.set("n", "sc", "exec \"normal a\".nr2char(getchar()).\"\\e\"") -- u/soer9459 vim.keymap.set("n", ",", function() local cursor = vim.api.nvim_win_get_cursor(0) vim.cmd("norm A;") vim.api.nvim_win_set_cursor(0, cursor) end, { noremap = true, silent = true }) -- Switch between windows vim.keymap.set("n", "", "h") vim.keymap.set("n", "", "l") vim.keymap.set("n", "", "j") vim.keymap.set("n", "", "k") vim.keymap.set("n", "v", ":vsp") vim.keymap.set("n", "-", ":sp") -- Switch between panes vim.keymap.set("n", "", "TmuxNavigateLeft") vim.keymap.set("n", "", "TmuxNavigateRight") vim.keymap.set("n", "", "TmuxNavigateDown") vim.keymap.set("n", "", "TmuxNavigateUp") -- Color picker vim.keymap.set("n", "cc", "CccPick") -- VimTex vim.keymap.set("n", "ll", "VimtexCompile") vim.keymap.set("n", "vl", "VimtexView") -- Screenkey vim.keymap.set("n", "sk", "Screenkey") -- Undotree vim.cmd("packadd nvim.undotree") vim.keymap.set("n", "u", require("undotree").open) -- Telescope local lazy_telescope = function() if vim.g.telescope_loaded then return end vim.g.telescope_loaded = true vim.pack.add({ "https://github.com/nvim-lua/plenary.nvim", { src = "https://github.com/nvim-telescope/telescope.nvim", version = "v0.2.2" }, }) require("telescope").setup({ pickers = { find_files = { hidden = true, find_command = { "rg", "--files", "--hidden", "--glob", "!**/.git/**" }, }, }, }) end vim.keymap.set("n", "ff", function() lazy_telescope() vim.cmd("Telescope find_files") end, {}) vim.keymap.set("n", "fw", function() lazy_telescope() vim.cmd("Telescope live_grep") end, {}) vim.keymap.set("n", "fo", function() lazy_telescope() vim.cmd("Telescope buffers") end, {}) vim.keymap.set("n", "fh", function() lazy_telescope() vim.cmd("Telescope help_tags") end, {}) vim.keymap.set("n", "fz", function() lazy_telescope() vim.cmd("Telescope current_buffer_fuzzy_find") end, {}) vim.keymap.set("n", "fg", function() lazy_telescope() vim.cmd("Telescope git_files") end, {}) vim.keymap.set("n", "fd", function() lazy_telescope() vim.cmd("Telescope diagnostics") end, {}) vim.keymap.set("n", "ft", function() lazy_telescope() local telescope = require("telescope.builtin") local handle = io.popen("rg 'TODO'") if handle == nil then return end local result = handle:read("*a") handle:close() if result:match("[^\r\n]+") == nil then local todo_files = {} local files_handle = io.popen("rg --files -g 'TODO.{md,txt}'") if files_handle == nil then return end local files_result = files_handle:read("*a") files_handle:close() for file in files_result:gmatch("[^\r\n]+") do table.insert(todo_files, file) end if #todo_files > 0 then telescope.find_files({ prompt_title = "Choose TODO file", cwd = vim.fn.getcwd(), search_dirs = todo_files }) else vim.api.nvim_echo({ { "Failed to find any to-dos", "WarningMsg" } }, true, {}) end else telescope.grep_string({ search = "TODO" }) end end, { noremap = true, silent = true }) -- Diagnostics, LSP vim.keymap.set("n", "gl", "lua vim.diagnostic.open_float()") vim.keymap.set("n", "gp", "lua vim.diagnostic.jump({ count = -1 })") vim.keymap.set("n", "gn", "lua vim.diagnostic.jump({ count = 1 })") vim.api.nvim_create_autocmd("LspAttach", { desc = "LSP actions", callback = function(event) local opts = { buffer = event.buf } vim.keymap.set("n", "gd", "lua vim.lsp.buf.definition()", opts) vim.keymap.set("n", "gD", "lua vim.lsp.buf.declaration()", opts) vim.keymap.set("n", "go", "lua vim.lsp.buf.type_definition()", opts) vim.keymap.set("n", "gs", "lua vim.lsp.buf.signature_help()", opts) vim.keymap.set({ "n", "x" }, "", "lua vim.lsp.buf.format({async = true})", opts) -- u/Blan_11 vim.keymap.set("n", "lh", function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) end, { silent = true, buffer = event.buf }) end })