nvim/init.lua
Alexander Gehrke 5cab0a1769 more cleanup
2024-07-25 19:17:54 +02:00

133 lines
3.2 KiB
Lua

if vim.env["VIRTUAL_ENV"] ~= nil then
vim.g.python3_host_prog = vim.fn.system("which -a python3 | sed -n 2p | tr -d '\n'")
else
vim.g.python3_host_prog = vim.fn.system("which python3 | tr -d '\n'")
end
-- lazy.nvim bootstrap
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup("plugins", {
dev = {
path = "~/projects/nvim/",
patterns = { "crater2150" },
fallback = true,
},
})
vim.opt.background = "dark"
vim.opt.number = true
vim.opt.title = true
vim.opt.colorcolumn = "+1"
vim.opt.textwidth = 80
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2
vim.opt.whichwrap = "b,s,<,>,[,],h,l"
--vim.opt.timeout = false
vim.opt.foldmethod = "expr"
vim.opt.foldlevel = 99
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
vim.opt.diffopt:append("vertical")
vim.opt.diffopt:append("linematch:50")
-- todo visualbell needed?
vim.opt.shell = "/bin/zsh"
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.inccommand = "split"
vim.opt.listchars = "tab:⇥\\ ,trail:-,nbsp:+,lead:␣"
--vim.opt.list = true
vim.cmd([[hi link Whitespace Comment]])
vim.opt.wildmode = { "list:longest", "list:full" }
vim.opt.wildignore = { "*.so", "*.swp", "*.zip", "*.o" }
vim.opt.suffixes = {
".bak",
"~",
".h",
".info",
".swp",
".obj",
".info",
".aux",
".dvi",
".bbl",
".out",
".o",
".lo",
"\\.class",
".pdf",
}
vim.opt.completeopt = "menu,menuone,noselect"
vim.opt.mouse = ""
vim.opt.shortmess = vim.o.shortmess .. "c"
vim.opt.cursorline = true
vim.opt.undofile = true
vim.opt.spelllang = "de,en"
vim.opt.termguicolors = true
vim.opt.pumblend = 10
vim.opt.updatetime = 300
local command = vim.api.nvim_create_user_command
local initlua = vim.fn.stdpath("config") .. "/init.lua"
command("RC", function()
vim.cmd.edit(initlua)
end, { desc = "edit init.lua" })
command("CD", ":cd %:h", { desc = "cd to current file" })
command("TrailingSpace", "%s/\\s*$//g", { desc = "remove trailing spaces" })
local key = vim.keymap.set
key("n", "<space>", "za", { desc = "toggle fold" })
key("v", ".", "<cmd>normal .<CR>", { desc = "repeat last command in visual mode" })
key("n", "cy", '"*y', { desc = "copy to system clipboard" })
key("t", "<C-q>", "<C-\\><C-n>", { desc = "exit terminal mode" })
-- Arrow keys for window movement and resizing
key("n", "<Left>", "<C-w>h")
key("n", "<Down>", "<C-w>j")
key("n", "<Up>", "<C-w>k")
key("n", "<Right>", "<C-w>l")
--
key("n", "<S-Left>", "<C-w><")
key("n", "<S-Right>", "<C-w>>")
key("n", "<S-Down>", "<C-w>-")
key("n", "<S-Up>", "<C-w>+")
key("n", "<M-[>", function()
vim.fn.search("^[^[:space:])\\]}]", "be")
end, { desc = "jump to previous unindented line" })
key("n", "<M-]>", function()
vim.fn.search("^[^[:space:])\\]}]", "e")
end, { desc = "jump to next unindented line" })
key("i", "<C-U>", "<C-G>u<C-U>")
key("n", "&", ":&&<CR>")
key("x", "&", ":&&<CR>")
key("n", "Y", "y$")
key("i", "<C-Space>", "<C-x><C-o>", { desc = "completion" })
key("n", "<C-l>", "<cmd>noh<CR><cmd>redraw!<CR>", { desc = "clear search highlight" })
key("v", "gs", "<cmd>'<,'>sort<CR>", { desc = "sort selection" })