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 local keybind = vim.api.nvim_set_keymap -- Disable arrow key navigation keybind("n", "", "", { noremap = true }) keybind("n", "", "", { noremap = true }) keybind("n", "", "", { noremap = true }) keybind("n", "", "", { noremap = true }) keybind("i", "", "", { noremap = true }) keybind("i", "", "", { noremap = true }) keybind("i", "", "", { noremap = true }) keybind("i", "", "", { noremap = true }) keybind("v", "", "", { noremap = true }) keybind("v", "", "", { noremap = true }) keybind("v", "", "", { noremap = true }) keybind("v", "", "", { noremap = true }) -- Copy and paste to/from the OS clipboard keybind("n", "y", "\"+y", { noremap = true}) keybind("n", "yy", "\"+yy", { noremap = true}) keybind("v", "y", "\"+y", { noremap = true}) keybind("n", "p", "\"+p", { noremap = true}) keybind("n", "P", "\"+P", { noremap = true}) keybind("v", "p", "\"+p", { noremap = true}) keybind("v", "P", "\"+P\"`\"`", { noremap = true}) -- copy the whole file to the OS clipboard keybind("n", "c", ":%y+", { noremap = true}) -- Control buffer splits keybind("n", "", ":vert resize +5", { noremap = true }) keybind("n", "", ":vert resize -5", { noremap = true }) keybind("n", "", ":resize -5", { noremap = true }) keybind("n", "", ":resize +5", { noremap = true }) -- Add matching curly brace keybind("i", "\\{", "{}O", { noremap = true }) keybind("i", ">{", "{}a", { noremap = true }) keybind("i", "<{", "{}i", { noremap = true }) -- Add matching parenthesis keybind("i", "\\(", "()O", { noremap = true }) keybind("i", ">(", "()a", { noremap = true }) keybind("i", "<(", "()i", { noremap = true }) -- Add matching square brace keybind("i", "\\[", "[]O", { noremap = true }) keybind("i", ">[", "[]a", { noremap = true }) keybind("i", "<[", "[]i", { noremap = true }) -- Use the TAB key to cycle through the autocompletion popup menu keybind("i", "", "v:lua.smart_tab()", { expr = true, noremap = true }) keybind("i", "", "v:lua.reverse_smart_tab()", { expr = true, noremap = true }) -- Use CTRL+Space to open the autocompletion popup menu keybind("i", "", "", { noremap = true }) -- Bufferline keybind("n", "bn", ":BufferLineCycleNext", { noremap = true}) keybind("n", "bp", ":BufferLineCyclePrev", { noremap = true})