130 lines
5.4 KiB
Lua
Executable File
130 lines
5.4 KiB
Lua
Executable File
local opts = require("utils").opts
|
|
|
|
local keymap = vim.keymap
|
|
|
|
-- Scroll more
|
|
keymap.set({ "n", "v" }, "<C-S-e>", "4<C-e>", opts("Scroll four lines up"))
|
|
keymap.set({ "n", "v" }, "<C-S-y>", "4<C-y>", opts("Scroll four lines down"))
|
|
|
|
-- write to file (sudo if readonly)
|
|
if vim.g.vscode then
|
|
keymap.set("n", "W", ":Write<CR>", opts("write file (vscode)"))
|
|
else
|
|
keymap.set("n", "W", ":w!<CR>", opts("write file"))
|
|
keymap.set("n", "<leader>W", ":lua require('utils').sudo_write()<CR>", opts("sudo write file"))
|
|
end
|
|
|
|
-- Keep selection in visual mode when indenting
|
|
keymap.set("v", "<", "<gv", opts())
|
|
keymap.set("v", ">", ">gv", opts())
|
|
|
|
-- Tabs
|
|
keymap.set("n", "<C-t>n", ":tabnew<CR>", opts("open new tab"))
|
|
keymap.set("n", "<C-t>j", ":-tabnext<CR>", opts("Go to previous tab"))
|
|
keymap.set("n", "<C-t>k", ":+tabnext<CR>", opts("Go to next tab"))
|
|
keymap.set("n", "<C-t>l", ":+tabnext<CR>", opts("Go to next tab"))
|
|
keymap.set("n", "<C-t>h", ":-tabnext<CR>", opts("Go to previous tab"))
|
|
keymap.set("n", "<C-t>0", ":1tabnext<CR>", opts("Go to previous tab"))
|
|
keymap.set("n", "<C-t>$", ":$tabnext<CR>", opts("Go to previous tab"))
|
|
|
|
-- Save and quit (sudo and no sudo)
|
|
keymap.set("n", "E", ":wq!<CR>", opts("write and quit file"))
|
|
keymap.set("n", "<leader>E", ":lua require('utils').sudo_write()<CR>:q!<CR>", opts("sudo write and quit file"))
|
|
|
|
-- Quit file
|
|
keymap.set("n", "Q", ":q!<CR>", opts("quit file"))
|
|
|
|
-- Duplicate line
|
|
keymap.set("n", "<leader>dd", ":t.<CR>", opts("Duplicate line"))
|
|
|
|
-- LaTeX mappings
|
|
keymap.set("n", "<leader>lc", ":VimtexCompile<CR>", opts("Compile latex document")) -- Compile LaTeX file
|
|
keymap.set("n", "<leader>lv", ":VimtexView<CR>", opts("View compiled latex pdf")) -- View compiled PDF
|
|
keymap.set("n", "<leader>lq", ":VimtexStop<CR>", opts("Stop Compiling document")) -- Stop compilation
|
|
|
|
-- window navigation
|
|
keymap.set("n", "<A-h>", "<C-w>h", opts())
|
|
keymap.set("n", "<A-j>", "<C-w>j", opts())
|
|
keymap.set("n", "<A-k>", "<C-w>k", opts())
|
|
keymap.set("n", "<A-l>", "<C-w>l", opts())
|
|
keymap.set("n", "<C-S-w>", "<C-w>w", opts())
|
|
|
|
-- window resize
|
|
keymap.set("n", "<A-C-h>", ":vertical resize +2<CR>", opts("Resize horizontally right"))
|
|
keymap.set("n", "<A-C-j>", ":resize -2<CR>", opts("Resize horizontally down"))
|
|
keymap.set("n", "<A-C-k>", ":resize +2<CR>", opts("Resize horizontally up"))
|
|
keymap.set("n", "<A-C-l>", ":vertical resize -2<CR>", opts("Resize Vertically to left"))
|
|
keymap.set("n", "<leader><leader>e", ":vertical resize 40<CR>", opts("Reset sizing to default"))
|
|
|
|
-- nohlsearch
|
|
keymap.set("n", "<leader>h", ":nohlsearch<CR>", opts("remove search highlighting"))
|
|
|
|
-- run file
|
|
keymap.set("n", "<leader>r", ":!%:p<CR>", opts("run current file"))
|
|
keymap.set("n", "<leader><leader>r", ":!%:p", opts("run current file with arguments"))
|
|
|
|
-- chmod +x
|
|
keymap.set("n", "<leader><leader>x", ":!chmod +x %:p<CR>", opts("make current file executable"))
|
|
|
|
-- script setup
|
|
keymap.set(
|
|
"n",
|
|
"<leader>#",
|
|
":w<CR>:!chmod +x %:p<CR>ggi#!/bin/sh<CR><CR><Esc>:setfiletype bash<CR>",
|
|
opts("setup sh script")
|
|
)
|
|
keymap.set(
|
|
"n",
|
|
"<leader><leader>#",
|
|
":set syntax=python<CR>:w<CR>:!chmod +x %:p<CR>:LspStart pyright<CR>i#!/usr/bin/env python3<CR><CR>",
|
|
opts("setup python script")
|
|
)
|
|
|
|
-- select all
|
|
keymap.set("n", "<leader>a", "ggVG", opts("select all"))
|
|
|
|
-- move cursor in insert mode
|
|
keymap.set("i", "<C-h>", "<Left>", opts())
|
|
keymap.set("i", "<C-j>", "<Down>", opts())
|
|
keymap.set("i", "<C-k>", "<Up>", opts())
|
|
keymap.set("i", "<C-l>", "<Right>", opts())
|
|
keymap.set("i", "<C-b>", "<C-Left>", opts("Jump back by word"))
|
|
keymap.set("i", "<C-e>", "<C-Right>", opts("Jump back by word"))
|
|
keymap.set("i", "<C-$>", "<End>", opts("Jump to EOL"))
|
|
keymap.set("i", "<C-0>", "<Home>", opts("Jump to beginning of line"))
|
|
|
|
-- Spell checking
|
|
keymap.set("n", "<leader>ss", ":set spell<CR>", opts("Start built-in spell checker"))
|
|
keymap.set("n", "<leader>sn", ":set nospell<CR>", opts("Stop spell checker"))
|
|
keymap.set("n", "<leader>slu", ":set spelllang=en_us<CR>", opts("Set spell checker lang to en_US"))
|
|
keymap.set("n", "<leader>sle", ":set spelllang=en_gb<CR>", opts("Set spell checker lang to en_GB"))
|
|
keymap.set("n", "<leader>slc", ":set spelllang=de_ch<CR>", opts("Set spell checker lang to de_CH"))
|
|
|
|
-- deleting doesn't yank except when used with <leader>
|
|
keymap.set({ "n", "v" }, "d", '"_d', opts())
|
|
keymap.set({ "n", "v" }, "D", '"_D', opts())
|
|
keymap.set({ "n", "v" }, "x", '"_x', opts())
|
|
keymap.set({ "n", "v" }, "X", '"_X', opts())
|
|
keymap.set({ "n", "v" }, "c", '"_c', opts())
|
|
keymap.set({ "n", "v" }, "C", '"_C', opts())
|
|
keymap.set({ "n", "v" }, "<leader>d", "d", opts("yank and delete"))
|
|
keymap.set({ "n", "v" }, "<leader>D", "D", opts("YANK and DELETE to end"))
|
|
|
|
-- <leader> + yank/paste/delete with system clipboard
|
|
keymap.set({ "n", "v" }, "<leader>y", '"+y', opts("yank to system clipboard"))
|
|
keymap.set({ "n", "v" }, "<leader>Y", '"+y$', opts("YANK to system clipboard"))
|
|
keymap.set({ "n", "v" }, "<leader>p", '"+p', opts("paste from system clipboard"))
|
|
keymap.set({ "n", "v" }, "<leader>P", '"+P', opts("PASTE from system clipboard"))
|
|
keymap.set({ "n", "v" }, "<leader><leader>d", '"+d', opts("yank to system clipboard and delete"))
|
|
keymap.set({ "n", "v" }, "<leader><leader>D", '"+D', opts("YANK to system clipboard and DELETE"))
|
|
|
|
keymap.set("n", "<leader>wk", ":WhichKey<CR>", opts("Toggle WhichKey"))
|
|
|
|
-- Toggle relative line numbers
|
|
keymap.set(
|
|
"n",
|
|
"<leader>.",
|
|
":lua vim.wo.relativenumber = not vim.wo.relativenumber<CR>",
|
|
opts("Toggle relative line numbers")
|
|
)
|