-- lua/core/keymaps.lua local keymap = vim.keymap -- Set space as leader key vim.g.mapleader = " " vim.g.maplocalleader = " " -- General keymaps keymap.set("n", "e", ":Lex 30", { desc = "Open file explorer" }) keymap.set("n", "w", ":w", { desc = "Save file" }) keymap.set("n", "q", ":q", { desc = "Quit" }) keymap.set("n", "h", ":nohlsearch", { desc = "Clear search highlight" }) keymap.set('n', 'e', vim.diagnostic.open_float, { desc = "Show diagnostics at cursor" }) -- Diagnostic keymaps vim.o.updatetime = 300 vim.api.nvim_create_autocmd("CursorHold", { callback = function() vim.diagnostic.open_float(nil, { focus = false }) end, }) keymap.set('n', 'K', vim.lsp.buf.hover, { desc = "Show hover info" }) -- Telescope keymaps keymap.set("n", "tf", "Telescope find_files", { desc = "Find Files" }) keymap.set("n", "tg", "Telescope live_grep", { desc = "Live Grep" }) keymap.set("n", "tb", "Telescope buffers", { desc = "Find Buffers" }) keymap.set("n", "th", "Telescope help_tags", { desc = "Help Tags" }) -- Editor format keymap.set("n", "f", function() vim.lsp.buf.format({ async = true }) end, { desc = "Format Document" }) -- Window navigation keymap.set("n", "", "h", { desc = "Move Left" }) keymap.set("n", "", "j", { desc = "Move Down" }) keymap.set("n", "", "k", { desc = "Move Up" }) keymap.set("n", "", "l", { desc = "Move Right" }) -- Resize with arrows keymap.set("n", "", ":resize -2", { desc = "Resize Up" }) keymap.set("n", "", ":resize +2", { desc = "Resize Down" }) keymap.set("n", "", ":vertical resize -2", { desc = "Resize Left" }) keymap.set("n", "", ":vertical resize +2", { desc = "Resize Right" }) -- Copy to system clipboard keymap.set('n', 'y', '"+y') keymap.set('v', 'y', '"+y') -- Snippet expansion (using LuaSnip) -- Function to write a standard C template local function write_c_template() local lines = { "#include ", "#include ", "", "int main(int argc, char *argv[]) {", " printf(\"Hello World!\\n\");", " return 0;", "}", } vim.api.nvim_buf_set_lines(0, 0, -1, false, lines) end -- Function to write a standard C++ template local function write_cpp_template() local lines = { "#include ", "using namespace std;", "", "int main() {", " cout << \"Hello World!\" << endl;", " return 0;", "}", } vim.api.nvim_buf_set_lines(0, 0, -1, false, lines) end -- Create the commands vim.api.nvim_create_user_command("C", write_c_template, {}) vim.api.nvim_create_user_command("Cpp", write_cpp_template, {})