Take steps to a more IDE experience with neovim

This commit is contained in:
Martin
2025-06-22 19:58:50 +02:00
parent 4e69d65a8a
commit c494611b05
4 changed files with 176 additions and 8 deletions

View File

@ -10,12 +10,26 @@
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
aerial-nvim aerial-nvim
zen-mode-nvim zen-mode-nvim
vim-commentary # vim-commentary
ts-comments-nvim
vim-fugitive
gitsigns-nvim
vim-repeat vim-repeat
vim-surround vim-surround
nvim-tree-lua nvim-tree-lua
targets-vim targets-vim
delimitMate # delimitMate
mini-pairs
mini-align
mini-bracketed
mini-splitjoin
mini-move
mini-ai
flash-nvim
trouble-nvim
conform-nvim
nvim-lint
todo-comments-nvim
# vim-startify # vim-startify
vim-windowswap vim-windowswap
vim-nix vim-nix
@ -44,6 +58,12 @@
markdown-preview-nvim markdown-preview-nvim
vim-markdown vim-markdown
bullets-vim bullets-vim
obsidian-nvim
nvim-dap
nvim-nio
nvim-dap-ui
nvim-dap-go
nvim-dap-python
(nvim-treesitter.withPlugins (p: [ p.awk p.bash p.c p.c_sharp p.cpp p.css p.diff p.dockerfile p.doxygen p.git_config p.gitcommit p.go p.gomod p.gosum p.gotmpl p.helm p.haskell p.html p.http p.java p.javascript p.json p.latex p.lua p.markdown p.markdown_inline p.matlab p.nix p.printf p.python p.regex p.rust p.sql p.strace p.supercollider p.svelte p.swift p.terraform p.tmux p.toml p.typescript p.vim p.xml p.yaml p.zig ])) (nvim-treesitter.withPlugins (p: [ p.awk p.bash p.c p.c_sharp p.cpp p.css p.diff p.dockerfile p.doxygen p.git_config p.gitcommit p.go p.gomod p.gosum p.gotmpl p.helm p.haskell p.html p.http p.java p.javascript p.json p.latex p.lua p.markdown p.markdown_inline p.matlab p.nix p.printf p.python p.regex p.rust p.sql p.strace p.supercollider p.svelte p.swift p.terraform p.tmux p.toml p.typescript p.vim p.xml p.yaml p.zig ]))
]; ];

View File

@ -131,3 +131,40 @@ vim.api.nvim_create_user_command('TrimWhiteSpace', function()
vim.cmd('%s/\\s\\+$//e') vim.cmd('%s/\\s\\+$//e')
end, {}) end, {})
---------------------------
------- DIAGNOSTICS -------
---------------------------
vim.diagnostic.config({
update_in_insert = true,
signs = true,
virtual_text = {
prefix = '',
current_line = false,
severity = {
-- min = vim.diagnostic.severity.INFO,
max = vim.diagnostic.severity.INFO,
},
},
virtual_lines = {
current_line = false,
severity = {
min = vim.diagnostic.severity.WARN,
-- max = vim.diagnostic.severity.WARN,
},
},
float = {
prefix = '',
focusable = false,
style = "minimal",
border = "rounded",
source = "always",
header = "",
},
})
vim.cmd([[highlight DiagnosticUnderlineError gui=undercurl guifg=Red]])
vim.cmd([[highlight DiagnosticUnderlineWarn gui=undercurl guifg=Yellow]])
vim.cmd([[highlight DiagnosticUnderlineInfo gui=undercurl guifg=Blue]])
vim.cmd([[highlight DiagnosticUnderlineHint gui=undercurl guifg=Cyan]])

View File

@ -6,10 +6,18 @@ vim.keymap.set('n', 'k', 'gk', {})
vim.keymap.set('v', 'j', 'gj', {}) vim.keymap.set('v', 'j', 'gj', {})
vim.keymap.set('v', 'k', 'gk', {}) vim.keymap.set('v', 'k', 'gk', {})
vim.keymap.set('n', '<C-h>', '<C-w>h', {}) -- vim.keymap.set('n', '<C-h>', '<C-w>h', {})
vim.keymap.set('n', '<C-j>', '<C-w>j', {}) -- vim.keymap.set('n', '<C-j>', '<C-w>j', {})
vim.keymap.set('n', '<C-k>', '<C-w>k', {}) -- vim.keymap.set('n', '<C-k>', '<C-w>k', {})
vim.keymap.set('n', '<C-l>', '<C-w>l', {}) -- vim.keymap.set('n', '<C-l>', '<C-w>l', {})
vim.keymap.set('n', '<C-M-h>', '<C-w>h', {})
vim.keymap.set('n', '<C-M-j>', '<C-w>j', {})
vim.keymap.set('n', '<C-M-k>', '<C-w>k', {})
vim.keymap.set('n', '<C-M-l>', '<C-w>l', {})
vim.keymap.set('t', '<C-M-h>', '<C-\\><C-n><C-w>h', {})
vim.keymap.set('t', '<C-M-j>', '<C-\\><C-n><C-w>j', {})
vim.keymap.set('t', '<C-M-k>', '<C-\\><C-n><C-w>k', {})
vim.keymap.set('t', '<C-M-l>', '<C-\\><C-n><C-w>l', {})
vim.keymap.set('n', '<leader>s', ':call WindowSwap#EasyWindowSwap()<CR>', {}) vim.keymap.set('n', '<leader>s', ':call WindowSwap#EasyWindowSwap()<CR>', {})
@ -26,6 +34,12 @@ vim.keymap.set('n', '<leader>fs', telebuiltin.grep_string, { silent = true })
vim.keymap.set('n', '<leader>o', telebuiltin.buffers, { silent = true }) vim.keymap.set('n', '<leader>o', telebuiltin.buffers, { silent = true })
vim.keymap.set('n', '<leader>fh', telebuiltin.help_tags, { silent = true }) vim.keymap.set('n', '<leader>fh', telebuiltin.help_tags, { silent = true })
-- Trouble
vim.keymap.set('n', '<leader>cs', '<cmd>Trouble symbols toggle focus=true win.position=right<cr>')
vim.keymap.set('n', '<leader>cl', '<cmd>Trouble lsp toggle focus=true win.position=right<cr>')
vim.keymap.set('n', '<leader>cd', '<cmd>Trouble diagnostics toggle focus=true win.position=bottom<cr>')
vim.keymap.set('n', '<leader>cq', '<cmd>Trouble quickfix toggle focus=true win.position=bottom<cr>')
-- Yanky -- Yanky
vim.keymap.set({"n","x"}, "p", "<Plug>(YankyPutAfter)") vim.keymap.set({"n","x"}, "p", "<Plug>(YankyPutAfter)")
vim.keymap.set({"n","x"}, "P", "<Plug>(YankyPutBefore)") vim.keymap.set({"n","x"}, "P", "<Plug>(YankyPutBefore)")

View File

@ -1,5 +1,14 @@
vim.g.delimitMate_expand_space=1 -- vim.g.delimitMate_expand_space=1
vim.g.delimitMate_expand_cr = 1 -- vim.g.delimitMate_expand_cr = 1
require('mini.pairs').setup()
require('mini.align').setup()
require('mini.bracketed').setup()
require('mini.splitjoin').setup()
require('mini.move').setup()
require('mini.move').setup()
require('flash').setup()
require('ts-comments').setup()
vim.g.tagbar_left=1 vim.g.tagbar_left=1
vim.g.tagbar_autoclose=1 vim.g.tagbar_autoclose=1
@ -210,3 +219,91 @@ require("nvim-tree").setup({
-- dotfiles = true, -- dotfiles = true,
-- }, -- },
}) })
require('gitsigns').setup {
signs = {
add = { text = '' },
change = { text = '' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
signs_staged = {
add = { text = '' },
change = { text = '' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
signs_staged_enable = true,
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
follow_files = true
},
auto_attach = true,
attach_to_untracked = false,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 1000,
ignore_whitespace = false,
virt_text_priority = 100,
use_focus = true,
},
current_line_blame_formatter = '<author>, <author_time:%R> - <summary>',
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
style = 'minimal',
relative = 'cursor',
row = 0,
col = 1
},
}
require("obsidian").setup({
workspaces = {
{
name = "privat",
path = "~/Documents/notes/privat",
},
{
name = "joplin",
path = "~/Documents/notes/fromjoplin",
},
},
})
require("conform").setup({
python = {"black"},
rust = {"rustfmt"},
go = {"gofmt"},
})
require("trouble").setup()
require("todo-comments").setup()
require("dapui").setup()
local dap, dapui = require("dap"), require("dapui")
dap.listeners.before.attach.dapui_config = function()
dapui.open()
end
dap.listeners.before.launch.dapui_config = function()
dapui.open()
end
dap.listeners.before.event_terminated.dapui_config = function()
dapui.close()
end
dap.listeners.before.event_exited.dapui_config = function()
dapui.close()
end