nvim

Neovim configuration
git clone git://git.laack.co/nvim.git
Log | Files | Refs | README

keymaps.lua (7991B)


      1 vim.opt.spelllang = { "en_us" }
      2 vim.opt.ttimeoutlen = 0
      3 
      4 
      5 -- General config
      6 vim.opt.conceallevel = 0
      7 vim.opt.number = true
      8 vim.opt.linebreak = true
      9 vim.opt.clipboard = "unnamedplus"
     10 vim.g.mapleader = " "
     11 vim.o.guicursor = 'n-v-c:block'
     12 
     13 -- vim.keymap.set('n', 'x', '<Plug>JupyterExecuteAll', { noremap = false, silent = true })
     14 
     15 -- tabbing
     16 vim.opt.expandtab = true
     17 vim.opt.tabstop = 4
     18 vim.opt.shiftwidth = 4
     19 vim.opt.softtabstop = 4
     20 
     21 
     22 -- C-u and C-d better navigation (less disorienting)
     23 vim.keymap.set("n", "<C-d>", "<C-d>zz", {desc = "Center cursor after moving down half-page"})
     24 vim.keymap.set("n", "<C-u>", "<C-u>zz", {desc = "Center cursor after moving down half-page"})
     25 
     26 -- Telescope (<leader>f) 
     27 local builtin = require("telescope.builtin")
     28 -- vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "Find File" })
     29 -- vim.keymap.set("n", "<leader>ft", builtin.live_grep, { desc = "Grep Files" })
     30 -- vim.keymap.set("n", "<leader>fb", builtin.buffers, { desc = "Buffers" })
     31 -- vim.keymap.set("n", "<leader>fm", builtin.marks, { desc = "Marks" })
     32 -- vim.keymap.set("n", "<leader>fk", builtin.keymaps, { desc = "Keymaps" })
     33 -- vim.keymap.set("n", "<leader>fc", require('telescope').extensions.zoxide.list, { desc = "Dir" })
     34 
     35 -- saucy bindings
     36 vim.keymap.set('n', '<C-f>', builtin.find_files, { desc = "Find File" })
     37 vim.keymap.set("n", "<C-k>", builtin.keymaps, { desc = "Keymaps" })
     38 vim.keymap.set("n", "<C-b>", builtin.buffers, { desc = "Buffers" })
     39 vim.keymap.set("n", "<C-l>", builtin.live_grep, { desc = "Live Grep" })
     40 
     41 -- vim.keymap.set("n", "<C-a>", ':lua require("harpoon.mark").add_file()<CR>', { silent = true, desc = "Add File To Harpoon" })
     42 -- vim.keymap.set("n", "<C-h>", ':lua require("harpoon.ui").toggle_quick_menu()<CR>', { silent = true, desc = "View files" })
     43 
     44 -- vim.keymap.set("n", "<C-p>", builtin.marks, { desc = "Points" })
     45 
     46 
     47 -- Open terminal
     48 
     49 vim.api.nvim_set_keymap(
     50 	"n",
     51 	"<leader>t",
     52 	":let $VIM_DIR=expand('%:p:h')<CR>:terminal<CR>cd $VIM_DIR<CR>",
     53 	{ silent = true }
     54 )
     55 vim.cmd("autocmd TermOpen * startinsert")
     56 
     57 -- Exit out of terminal mode
     58 vim.api.nvim_set_keymap("t", "<C-r>", "<C-\\><C-n>", { noremap = true, silent = true })
     59 
     60 -- Open netrw 
     61 vim.api.nvim_set_keymap("n", "<leader>n", ":Ex<CR>", { noremap = true, silent = true })
     62 
     63 -- Spell check
     64 vim.keymap.set('n', '<Leader>s', function()
     65   vim.o.spell = not vim.o.spell
     66 end, { desc = 'Toggle spell checking' })
     67 
     68 
     69 -- Splitting setttings
     70 vim.o.splitbelow = true
     71 vim.o.splitright = true
     72 vim.o.relativenumber = true
     73 vim.o.ignorecase = true
     74 vim.o.smartcase = true
     75 vim.o.statuscolumn = "%s %l %r"
     76 
     77 -- config
     78 vim.opt.swapfile = false
     79 
     80 -- Jupyter
     81 
     82 -- new cell
     83 -- vim.keymap.set("n", "<leader>jb", ":JupyterAddCellBelow<CR>", { noremap = true, silent = true })
     84 -- vim.keymap.set("n", "<leader>ja", ":JupyterAddCellAbove<CR>", { noremap = true, silent = true })
     85 -- vim.keymap.set("n", "<leader>jt", ":JupyterConvertCellType<CR>", { noremap = true, silent = true })
     86 -- vim.keymap.set("n", "<leader>jd", ":JupyterRemoveCell<CR>", { noremap = true, silent = true })
     87 
     88 
     89 
     90 
     91 -- buffer navigation
     92 
     93 vim.keymap.set("n", "<leader>b<Right>", ":bn<CR>", { noremap = true, silent = true }) -- b + Right Arrow for next buffer
     94 vim.keymap.set("n", "<leader>b<Left>", ":bp<CR>", { noremap = true, silent = true }) -- b + Left Arrow for previous buffer
     95 vim.keymap.set("n", "<leader>bx", ":bwipeout<CR>", { noremap = true, silent = true }) -- b + Left Arrow for previous buffer
     96 
     97 -- close all  buffers except current
     98 vim.keymap.set("n", "<leader>bc", ":%bd|e#<CR>", { noremap = true, silent = true })
     99 
    100 -- Ctrl+Backspace to delete the previous word (same as browser... sorry, not sorry)
    101 vim.keymap.set('i', '<C-h>', '<C-w>', { noremap = true, silent = true })
    102 
    103 
    104 -- Define how to use snippets
    105 vim.cmd[[
    106 smap <silent><expr> <C-n> luasnip#jumpable(1) ? '<Plug>luasnip-jump-next' : '<Tab>'
    107 
    108 imap <silent><expr> <C-p> luasnip#jumpable(-1) ? '<Plug>luasnip-jump-prev' : '<S-Tab>'
    109 smap <silent><expr> <C-p> luasnip#jumpable(-1) ? '<Plug>luasnip-jump-prev' : '<S-Tab>'
    110 ]]
    111 
    112 -- pounce config
    113 -- vim.keymap.set("n", "s", ":Pounce <CR>", { noremap = true, silent = true })
    114 -- vim.keymap.set("x", "s", function() require'pounce'.pounce { } end)
    115 -- vim.keymap.set("o", "s", function() require'pounce'.pounce { } end)
    116 
    117 
    118 
    119 -- Fix highlight colors
    120 
    121 -- Set custom highlight groups
    122 
    123 --  local highlights = {
    124 --  PounceGap = { bold = true, fg = "#ffffff", bg = "#2e2a3b" }, -- soft light gray text on a deep purple background
    125 --  PounceAcceptBest = { bold = true, fg = "#ffffff", bg = "#ff6f61" }, -- vibrant coral red for best match selection
    126 --  PounceAccept = { bold = true, fg = "#ffffff", bg = "#ffcc00" }, -- bright yellow-orange for standard selection
    127 --  PounceMatch = { bold = true, fg = "#ffffff", bg = "#4b6a8f" }, -- light gray text on a vibrant blue-gray background
    128 --  
    129 --  }
    130 -- 
    131 -- for group, opts in pairs(highlights) do
    132 --   vim.api.nvim_set_hl(0, group, opts)
    133 -- end
    134 
    135 -- Map C-Right to w
    136 vim.api.nvim_set_keymap('n', '<C-Right>', 'w', { noremap = true, silent = true })
    137 vim.api.nvim_set_keymap('v', '<C-Right>', 'w', { noremap = true, silent = true })
    138 vim.api.nvim_set_keymap('i', '<C-Right>', '<C-o>w', { noremap = true, silent = true })
    139 
    140 -- Map C-Left to b
    141 vim.api.nvim_set_keymap('n', '<C-Left>', 'b', { noremap = true, silent = true })
    142 vim.api.nvim_set_keymap('v', '<C-Left>', 'b', { noremap = true, silent = true })
    143 vim.api.nvim_set_keymap('i', '<C-Left>', '<C-o>b', { noremap = true, silent = true })
    144 
    145 local map = vim.api.nvim_set_keymap
    146 local opts = { noremap = true, silent = true }
    147 
    148 -- Use internal formatting for bindings like gq. 
    149  vim.api.nvim_create_autocmd('LspAttach', { 
    150    callback = function(args) 
    151      vim.bo[args.buf].formatexpr = nil 
    152    end, 
    153  })
    154 
    155 -- Set up a global shortcut to toggle textwidth
    156 vim.api.nvim_set_keymap(
    157     "n", 
    158     "<leader>wt", 
    159     ":lua vim.opt.textwidth = (vim.opt.textwidth:get() == 80) and 0 or 80<CR>", 
    160     { noremap = true, silent = true }
    161 )
    162 
    163 
    164 -- color scheme
    165 
    166 -- vim.cmd('colorscheme cyberdream')
    167 vim.cmd('colorscheme wildcharm')
    168 
    169 vim.api.nvim_set_hl(0, "Normal", { bg = "#000000" }) -- Ensure the editor background remains black
    170 vim.api.nvim_set_hl(0, "NormalFloat", { bg = "#000000" }) -- Floating windows background remains black
    171 vim.api.nvim_set_hl(0, "NormalNC", { bg = "#000000", fg = "#ffffff" }) -- Set background to black and text to white
    172 vim.api.nvim_set_hl(0, 'SignColumn', { bg = '#000000' })
    173 vim.opt.ruler = false
    174 vim.o.laststatus = 0
    175 vim.api.nvim_set_hl(0, "Normal", { bg = "#000000" })
    176 
    177 ---- remap new window direction
    178 vim.api.nvim_set_keymap('n', '<C-w>h', ':vsplit<CR>', { noremap = true, silent = true })
    179 vim.api.nvim_set_keymap('n', '<C-w>v', ':split<CR>', { noremap = true, silent = true })
    180 vim.api.nvim_set_keymap('n', '<C-w>x', ':close<CR>', { noremap = true, silent = true })
    181 
    182 
    183 vim.o.shortmess = vim.o.shortmess .. "I"
    184 
    185 vim.keymap.set({"n", "v"}, "<leader>d", "\"_d")
    186 vim.api.nvim_set_keymap('i', '<C-e>', '<Esc>', { noremap = true, silent = true })
    187 vim.api.nvim_set_keymap('x', '<C-e>', '<Esc>', { noremap = true, silent = true })
    188 vim.api.nvim_set_keymap('o', '<C-e>', '<Esc>', { noremap = true, silent = true })
    189 vim.api.nvim_set_keymap('c', '<C-e>', '<Esc>', { noremap = true, silent = true })
    190 vim.api.nvim_set_keymap('n', '<C-e>', '<Esc>', { noremap = true, silent = true })
    191 
    192 vim.api.nvim_set_keymap('n', 'b', ':bnext<CR>', { noremap = true, silent = true })
    193 vim.api.nvim_set_keymap('n', 'B', ':bprevious<CR>', { noremap = true, silent = true })
    194 
    195 -- vim.api.nvim_set_keymap("n", "B", ":lua require('bufjump').backward()<cr>", opts)
    196 -- vim.api.nvim_set_keymap("n", "b", ":lua require('bufjump').forward()<cr>", opts)
    197 --
    198 
    199 vim.api.nvim_set_hl(0, 'FloatBorder', { fg = '#888888', bg = 'NONE' })
    200 vim.api.nvim_set_keymap('n', '<leader>f', ':Flash<CR>', {})
    201 -- vim.api.nvim_set_keymap('n', '<leader>fn', ':NextCard<CR>', {})
    202 -- vim.api.nvim_set_keymap('n', '<leader>fp', ':PreviousCard<CR>', {})
    203 -- vim.api.nvim_set_keymap('n', '<leader>ff', ':Flip<CR>', {})