local function t(str) return vim.api.nvim_replace_termcodes(str, true, true, true) end function _G.smart_tab() return vim.fn.pumvisible() == 1 and t'' or t'' end function _G.reverse_smart_tab() return vim.fn.pumvisible() == 1 and t'' or t'' end -- Disable arrow key navigation vim.api.nvim_set_keymap("n", "", "", { noremap = true }) vim.api.nvim_set_keymap("n", "", "", { noremap = true }) vim.api.nvim_set_keymap("n", "", "", { noremap = true }) vim.api.nvim_set_keymap("n", "", "", { noremap = true }) vim.api.nvim_set_keymap("i", "", "", { noremap = true }) vim.api.nvim_set_keymap("i", "", "", { noremap = true }) vim.api.nvim_set_keymap("i", "", "", { noremap = true }) vim.api.nvim_set_keymap("i", "", "", { noremap = true }) vim.api.nvim_set_keymap("v", "", "", { noremap = true }) vim.api.nvim_set_keymap("v", "", "", { noremap = true }) vim.api.nvim_set_keymap("v", "", "", { noremap = true }) vim.api.nvim_set_keymap("v", "", "", { noremap = true }) -- Copy and paste to/from the OS clipboard vim.api.nvim_set_keymap("n", "y", "\"+y", { noremap = true}) vim.api.nvim_set_keymap("n", "yy", "\"+yy", { noremap = true}) vim.api.nvim_set_keymap("v", "y", "\"+y", { noremap = true}) vim.api.nvim_set_keymap("n", "p", "\"+p", { noremap = true}) vim.api.nvim_set_keymap("n", "P", "\"+P", { noremap = true}) vim.api.nvim_set_keymap("v", "p", "\"+p", { noremap = true}) vim.api.nvim_set_keymap("v", "P", "\"+P\"`\"`", { noremap = true}) -- copy the whole file to the OS clipboard vim.api.nvim_set_keymap("n", "c", ":%y+", { noremap = true}) -- Control buffer splits vim.api.nvim_set_keymap("n", "", ":vert resize +5", { noremap = true }) vim.api.nvim_set_keymap("n", "", ":vert resize -5", { noremap = true }) vim.api.nvim_set_keymap("n", "", ":resize -5", { noremap = true }) vim.api.nvim_set_keymap("n", "", ":resize +5", { noremap = true }) -- Add matching curly brace vim.api.nvim_set_keymap("i", "\\{", "{}O", { noremap = true }) vim.api.nvim_set_keymap("i", ">{", "{}a", { noremap = true }) vim.api.nvim_set_keymap("i", "<{", "{}i", { noremap = true }) -- Add matching parenthesis vim.api.nvim_set_keymap("i", "\\(", "()O", { noremap = true }) vim.api.nvim_set_keymap("i", ">(", "()a", { noremap = true }) vim.api.nvim_set_keymap("i", "<(", "()i", { noremap = true }) -- Add matching square brace vim.api.nvim_set_keymap("i", "\\[", "[]O", { noremap = true }) vim.api.nvim_set_keymap("i", ">[", "[]a", { noremap = true }) vim.api.nvim_set_keymap("i", "<[", "[]i", { noremap = true }) -- Use the TAB key to cycle through the autocompletion popup menu vim.api.nvim_set_keymap("i", "", "v:lua.smart_tab()", { expr = true, noremap = true }) vim.api.nvim_set_keymap("i", "", "v:lua.reverse_smart_tab()", { expr = true, noremap = true }) -- Use CTRL+Space to open the autocompletion popup menu vim.api.nvim_set_keymap("i", "", "", { noremap = true })