2023-06-19 09:54:39 +00:00
|
|
|
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
|
2023-08-01 14:28:47 +00:00
|
|
|
vim.fn.system({
|
|
|
|
"git",
|
|
|
|
"clone",
|
|
|
|
"--filter=blob:none",
|
|
|
|
"https://github.com/folke/lazy.nvim.git",
|
|
|
|
"--branch=stable", -- latest stable release
|
|
|
|
lazypath,
|
|
|
|
})
|
2023-06-19 09:54:39 +00:00
|
|
|
end
|
|
|
|
vim.opt.rtp:prepend(lazypath)
|
2023-08-01 14:28:47 +00:00
|
|
|
require("lazy").setup("plugins", {
|
|
|
|
dev = {
|
|
|
|
path = "~/projects/nvim/",
|
|
|
|
patterns = {"crater2150"},
|
|
|
|
fallback = true
|
|
|
|
}
|
|
|
|
})
|
2023-06-19 09:54:39 +00:00
|
|
|
|
|
|
|
vim.opt.background = "dark"
|
|
|
|
vim.opt.number = 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.foldenable = false
|
|
|
|
|
|
|
|
-- todo visualbell needed?
|
|
|
|
|
|
|
|
vim.opt.shell = "/bin/zsh"
|
|
|
|
vim.opt.ignorecase = true
|
|
|
|
vim.opt.smartcase = true
|
|
|
|
vim.opt.inccommand = "split"
|
|
|
|
|
|
|
|
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
|
|
|
|
|
2023-08-18 09:52:45 +00:00
|
|
|
vim.opt.spelllang = 'de,en'
|
2023-06-19 09:54:39 +00:00
|
|
|
|
|
|
|
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' })
|
|
|
|
|
|
|
|
vim.g.tex_flavor = 'latex'
|
|
|
|
|
|
|
|
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')
|
|
|
|
--
|
2023-08-01 14:28:47 +00:00
|
|
|
key('n', '<S-Left>', "<C-w><")
|
|
|
|
key('n', '<S-Right>', "<C-w>>")
|
|
|
|
key('n', '<S-Down>', "<C-w>-")
|
|
|
|
key('n', '<S-Up>', "<C-w>+")
|
2023-06-19 09:54:39 +00:00
|
|
|
|
|
|
|
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' })
|
|
|
|
|
|
|
|
|
|
|
|
key({ 'n', 'x' }, '<M-a>', "<Plug>(EasyAlign)", { desc = 'align selection' })
|