108 lines
3.8 KiB
Lua
108 lines
3.8 KiB
Lua
local function map(mode, bind, cmd, opts)
|
|
opts = opts or {noremap = true, silent = true}
|
|
if type(bind) == 'table' then
|
|
for i in pairs(bind) do
|
|
vim.keymap.set(mode, bind[i], cmd, opts)
|
|
end
|
|
elseif type(bind) == 'string' then
|
|
vim.keymap.set(mode, bind, cmd, opts)
|
|
else
|
|
vim.notify('-- Invalid bind for keymap:\nvim.keymap.set(\''
|
|
.. mode .. '\', ' .. bind .. ', \'' .. cmd .. '\')',
|
|
vim.log.levels.WARN, {
|
|
title = 'Neovim Config',
|
|
on_open = function(win)
|
|
local buf = vim.api.nvim_win_get_buf(win)
|
|
vim.api.nvim_buf_set_option(buf, "filetype", "lua")
|
|
end
|
|
}
|
|
)
|
|
end
|
|
end
|
|
|
|
-- vim binds ------------------------------------------------------------------
|
|
g.mapleader = ' ' -- set leader key
|
|
|
|
map('x', '<leader>p', [["_dP]]) -- greatest remap ever
|
|
map('n', '<ESC>', ':nohlsearch<Bar>:echo<CR>') -- clear search
|
|
map('t', '<ESC>', '<C-\\><C-n>') -- make <ESC> work in terminals
|
|
-- move selected text up/down
|
|
map('v', '<S-k>', ":m '<-2<CR>gv=gv")
|
|
map('v', '<S-j>', ":m '>+1<CR>gv=gv")
|
|
|
|
-- the cursor STAYS IN THE MIDDLE
|
|
map('n', '<S-j>', 'mzJ`z<cmd>delm z<CR>') -- when combining lines
|
|
map('n', 'n', 'nzzzv') -- when searching
|
|
map('n', 'N', 'Nzzzv')
|
|
map('n', '<C-d>', '<C-d>zz') -- half page jumping
|
|
map('n', '<C-u>', '<C-u>zz')
|
|
|
|
map('n', '<leader>x', '<cmd>!chmod +x %<CR>') -- execute order 111
|
|
|
|
-- add some keybinds to the file view (netrw)
|
|
a.nvim_create_autocmd('FileType', {
|
|
pattern = 'netrw',
|
|
callback = function()
|
|
local bind = function(lhs, rhs)
|
|
vim.keymap.set('n', lhs, rhs, { remap = true, buffer = true })
|
|
end
|
|
bind('h', '-^') -- Go up a directory
|
|
bind('l', '<CR>') -- Go down a directory / open a file
|
|
bind('.', 'gh') -- Toggle dotfiles
|
|
bind('P', '<C-w>z') -- Close preview window
|
|
bind('<ESC>', '<cmd>q<CR>') -- Close netrw
|
|
end
|
|
})
|
|
|
|
-- plugin binds ---------------------------------------------------------------
|
|
|
|
-- pretty lsp view
|
|
map('n', 'gd', '<CMD>Glance definitions<CR>')
|
|
map('n', 'gr', '<CMD>Glance references<CR>')
|
|
map('n', 'gy', '<CMD>Glance type_definitions<CR>')
|
|
map('n', 'gi', '<CMD>Glance implementations<CR>')
|
|
|
|
local treesj = require('treesj') -- treesj
|
|
map('n', '<leader>j', treesj.toggle)
|
|
|
|
local telebuilt = require('telescope.builtin') -- telescope
|
|
map('n', '<leader>sf', telebuilt.find_files)
|
|
map('n', '<leader>sg', telebuilt.git_files)
|
|
map('n', '<leader>sp', function()
|
|
telebuilt.grep_string({ search = vim.fn.input('Find string in project > ') })
|
|
end)
|
|
map('n', '<leader>so', telebuilt.oldfiles)
|
|
|
|
local intellitab = require('intellitab') -- intellitab
|
|
map('n', '<Tab>', intellitab.indent)
|
|
|
|
map('n', '<leader>u', '<cmd>UndotreeToggle<CR>') -- undo tree
|
|
map('n', '<leader>f', '<cmd>SFMToggle<CR>') -- sfm
|
|
map('n', '<leader>b', '<cmd>JABSOpen<CR>') -- switch between previous buffers
|
|
map('n', '<leader>tt', '<cmd>TroubleToggle<CR>') -- trouble (lsp error view)
|
|
map('n', '<leader>tc', '<cmd>TodoTrouble<CR>') -- todo trouble
|
|
map('n', '<C-e>', '<cmd>IconPickerYank<CR>') -- icon picker
|
|
|
|
local dapui = require('dapui') -- dap ui
|
|
map('n', '<leader>d', dapui.toggle)
|
|
|
|
local smartsplits = require('smart-splits') -- resizing buffers (toggleable)
|
|
map('n', '<leader>r', smartsplits.start_resize_mode)
|
|
|
|
-- toggle term (don't use leader key in these binds)
|
|
map({'n', 't'}, '<C-\\>', '<cmd>ToggleTerm direction=float<CR>')
|
|
map({'n', 't'}, '<C-g>', '<cmd>lua _glow()<CR>')
|
|
|
|
-- true zen
|
|
map('n', '<leader>zf', '<cmd>lua require("true-zen.focus").toggle()<CR>')
|
|
map('n', '<leader>zm', '<cmd>lua require("true-zen.minimalist").toggle()<CR>')
|
|
map('n', '<leader>za', '<cmd>lua require("true-zen.ataraxis").toggle()<CR>')
|
|
|
|
-- Git
|
|
map('n', '<leader>gph', '<cmd>Gitsigns preview_hunk_inline<CR>')
|
|
map('n', '<leader>gsh', '<cmd>Gitsigns stage_hunk<CR>')
|
|
map('n', '<leader>gb', '<cmd>Gitsigns blame_line<CR>')
|
|
|
|
-- neogen
|
|
map('n', '<leader>df', '<cmd>lua require("neogen").generate()<CR>')
|