vim.g.mapleader = ' ' -- Quick write vim.keymap.set('n', 'w', ':w!', { remap = false }) -- Treat long lines as line containing breaks vim.keymap.set('n', 'j', 'gj', { remap = false }) vim.keymap.set('n', 'k', 'gk', { remap = false }) vim.keymap.set('n', 'tn', ':tabnew', { remap = false }) vim.keymap.set('n', 'tc', ':tabclose', { remap = false }) vim.keymap.set('n', 'to', ':tabonly', { remap = false }) vim.keymap.set('n', 'tm', ':tabmove', { remap = false }) -- Quickly access spelling menu vim.keymap.set('i', '', 'us', { remap = false }) vim.keymap.set('n', '', 'ius', { remap = false }) -- Clear search highlights vim.keymap.set('n', '', ':nohlsearch', { remap = false }) -- Disable 'Q' from opening Ex mode vim.keymap.set('n', 'Q', '', { remap = false }) -- Yank and put mappings -- TODO: This doesn't handle all use cases, only the basics. For example, -- this doesn't handle a local tmux session with a remote nvim in a pane. -- if tmux#isOption('set-clipboard', 'on') || $SSH_CONNECTION !=# '' -- " When connected to a remote session the + selection register is not -- " available and the unnamed register is used instead. Add mappings using the -- " z register instead. -- noremap y "zy -- noremap Y "zY -- " Enable OSC 52 copy on yank. -- call osc52#autocmd() -- else -- System clipboard yank/put vim.keymap.set('', 'y', '"+y', { remap = false }) vim.keymap.set('', 'Y', '"+Y', { remap = false }) vim.keymap.set('', 'p', '"+p', { remap = false }) vim.keymap.set('', 'P', '"+P', { remap = false }) -- end -- Undo neovim's default mapping of Y to y$ vim.cmd('unmap Y') -- Make nvim :terminal more like vim :terminal vim.keymap.set('t', 'N', '', { remap = true }) -- Mappings to make navigating :Termdebug local opts = { remap = false, silent = true } vim.keymap.set('n', '', ':Gdb:startinsert', opts) vim.keymap.set('n', '', ':Program', opts) vim.keymap.set('n', '', ':Source', opts) vim.keymap.set('t', '', ':Gdb:startinsert', opts) vim.keymap.set('t', '', ':Program', opts) vim.keymap.set('t', '', ':Source', opts)