Parent directory

mappings.lua

4197 bytes
  1local opts = { noremap = true, silent = true }
  2
  3-- Colemak bindings
  4vim.keymap.set("", "n", "j", opts)
  5vim.keymap.set("", "e", "k", opts)
  6vim.keymap.set("", "i", "l", opts)
  7vim.keymap.set("", "I", "$", opts)
  8vim.keymap.set("", "H", "^", opts)
  9vim.keymap.set("", "l", "i", opts)
 10vim.keymap.set("", "L", "I", opts)
 11vim.keymap.set("n", "N", "mzJ`z", opts)
 12vim.keymap.set("", "k", "n", opts)
 13vim.keymap.set("", "K", "N", opts)
 14vim.keymap.set("", "J", "M", opts)
 15vim.keymap.set("", "j", "m", opts)
 16vim.keymap.set("", "m", "e", opts)
 17vim.keymap.set("", "M", "E", opts)
 18
 19vim.keymap.set("v", "N", ":m '>+1<CR>gv=gv", opts)
 20vim.keymap.set("v", "E", ":m '<-2<CR>gv=gv", opts)
 21
 22-- General mappings
 23vim.keymap.set("", "<BS>", "gg", opts)
 24vim.keymap.set("", "<CR>", "G", opts)
 25vim.keymap.set("", "<Space>", "<NOP>", opts)
 26
 27vim.keymap.set("x", "p", "pgvy", opts)
 28
 29vim.keymap.set("n", "<tab>", vim.cmd.bn, opts)
 30vim.keymap.set("n", "<s-tab>", vim.cmd.bp, opts)
 31vim.keymap.set("n", "U", vim.cmd.redo, opts)
 32
 33-- File operation maps
 34vim.keymap.set("n", "<leader>fd", function()
 35	if vim.inspect(vim.lsp.get_clients()) then
 36		require("conform").format()
 37	else
 38		vim.cmd.normal("jzgg=G`z")
 39	end
 40end, opts)
 41vim.keymap.set("n", "<leader>fs", vim.cmd.w, opts)
 42vim.keymap.set("n", "<leader>fS", vim.cmd.SudaWrite, opts)
 43vim.keymap.set("n", "<leader>W", vim.cmd.SudaWrite, opts)
 44vim.keymap.set("n", "<leader>q", vim.cmd.q, opts)
 45vim.keymap.set("n", "<leader>Q", ":q!<cr>", opts)
 46vim.keymap.set("n", "<leader>wq", vim.cmd.wq, opts)
 47vim.keymap.set("n", "<leader>bd", ":bp | bd #<cr>", opts)
 48vim.keymap.set("n", "<leader>bD", ":bd!<cr>", opts)
 49vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle, opts)
 50vim.keymap.set("", "\\", ':let @/ = ""<CR>', opts)
 51
 52-- Comment strings
 53local comment = require("Comment.ft")
 54comment.resolv = "#%s"
 55comment.templ = "//%s"
 56
 57-- Git
 58vim.keymap.set("n", "<leader>gd", vim.cmd.Gvdiff, opts)
 59vim.keymap.set("n", "<leader>gb", function()
 60	vim.cmd("Gitsigns toggle_current_line_blame")
 61end, opts)
 62
 63-- window movement
 64vim.keymap.set("n", "<leader>wn", "<C-W>j", opts)
 65vim.keymap.set("n", "<leader>we", "<C-W>k", opts)
 66vim.keymap.set("n", "<leader>wh", "<C-W>h", opts)
 67vim.keymap.set("n", "<leader>wi", "<C-W>l", opts)
 68vim.keymap.set("n", "<leader>wH", "<C-W>5<", opts)
 69vim.keymap.set("n", "<leader>wI", "<C-W>5>", opts)
 70vim.keymap.set("n", "<leader>wN", ":resize +5<CR>", opts)
 71vim.keymap.set("n", "<leader>wE", ":resize -5<CR>", opts)
 72
 73-- Telescope
 74require("telescope").setup({
 75	defaults = {
 76		mappings = {
 77			i = {
 78				["<esc>"] = require("telescope.actions").close,
 79			},
 80		},
 81	},
 82})
 83local telescope = require("telescope.builtin")
 84
 85vim.keymap.set("n", "<leader>ff", function()
 86	xpcall(function()
 87		telescope.git_files({
 88			show_untracked = true,
 89			use_git_root = false,
 90		})
 91	end, function()
 92		telescope.find_files({
 93			hidden = true,
 94		})
 95	end)
 96end, opts)
 97vim.keymap.set("n", "<leader>rg", telescope.live_grep, opts)
 98vim.keymap.set("n", "<leader>fb", telescope.buffers, opts)
 99vim.keymap.set("n", "<leader>fh", telescope.help_tags, opts)
100vim.keymap.set("n", "<leader>fp", telescope.builtin, opts)
101
102vim.keymap.set("n", "<leader>gc", telescope.git_commits, opts)
103vim.keymap.set("n", "<leader>gC", telescope.git_bcommits, opts)
104vim.keymap.set("n", "<leader>gs", telescope.git_status, opts)
105
106-- LSP
107vim.keymap.set("n", "gr", telescope.lsp_references, opts)
108vim.keymap.set("n", "gd", telescope.lsp_definitions, opts)
109vim.keymap.set("n", "gi", telescope.lsp_implementations, opts)
110vim.keymap.set("n", "gt", telescope.lsp_type_definitions, opts)
111vim.keymap.set("n", "<leader>ei", telescope.diagnostics, opts)
112
113vim.keymap.set("n", "<leader>vc", vim.lsp.buf.code_action, opts)
114vim.keymap.set("n", "<leader>vr", vim.lsp.buf.rename, opts)
115vim.keymap.set("n", "<leader>vl", vim.lsp.codelens.run, opts)
116vim.keymap.set("n", "E", function()
117	vim.lsp.buf.hover({ border = "rounded" })
118end, opts)
119vim.keymap.set("i", "<C-h>", vim.lsp.buf.signature_help, opts)
120vim.keymap.set("n", "<C-h>", vim.lsp.buf.signature_help, opts)
121vim.keymap.set("n", "<leader>en", function()
122	vim.diagnostic.jump({ count = 1 })
123end, opts)
124vim.keymap.set("n", "<leader>ep", function()
125	vim.diagnostic.jump({ count = -1 })
126end, opts)