commit 13d05c511899fde3ab582dca3cab0e6b5a7a8b19 from: Thomas Böhler date: Mon Sep 15 19:01:19 2025 UTC vim: add a fairly minimal vim configuration neovim fucking sucks. trying out vim again to see if it fulfils my needs. includes lsp setup. Signed-off-by: Thomas Böhler commit - 453028869775f39679c147b2ea87fee41e18d96c commit + 13d05c511899fde3ab582dca3cab0e6b5a7a8b19 blob - /dev/null blob + ec86604154a4b8719515e78e7b9b99ceaa8646a7 (mode 644) --- /dev/null +++ vim/.vimrc @@ -0,0 +1,147 @@ +set termguicolors +syntax enable +filetype plugin indent on + +let g:mapleader = "," +let g:localleader = "\\" + +set path+=** +set spell +set spelllang=de_de,en_gb +set encoding=utf-8 +set fileencoding=utf-8 +set clipboard=unnamedplus + +set updatetime=250 +set timeout +set timeoutlen=300 + +set wildmenu +set wildmode=longest:full,full +set wildignore=*.o,*~,*.pyc,*.class +set omnifunc=syntaxcomplete#Complete +set completeopt=menuone,noselect + +set colorcolumn=80 +set number +set relativenumber +set scrolloff=7 + +set showmatch +set mat=2 +set hlsearch +set smartcase +set ignorecase +set incsearch + +set ruler +set undolevels=1000 +set undofile + +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 + +set showcmd +set lazyredraw + +set splitright +set splitbelow + +set list +set listchars=tab:>~,trail:*,leadmultispace:-+,nbsp:+ + +set foldenable +set foldlevelstart=10 +set foldnestmax=10 +set foldmethod=syntax +set foldlevel=99 + +set grepprg=rg\ --vimgrep\ --smart-case\ --follow + +" https://github.com/prabirshrestha/vim-lsp.git +let g:lsp_use_native_client = 1 + +if executable('pylsp') + au User lsp_setup call lsp#register_server({ + \ 'name': 'pylsp', + \ 'cmd': {server_info->['pylsp']}, + \ 'allowlist': ['python'], + \ }) +endif + +if executable('rustup') + au User lsp_setup call lsp#register_server({ + \ 'name': 'rust-analyzer', + \ 'cmd': {server_info->['rustup', 'run', 'stable', 'rust-analyzer']}, + \ 'allowlist': ['rust'], + \ }) + autocmd BufWritePre *.rs + \ call execute('LspDocumentFormatSync') +endif + +if executable('clangd') + au User lsp_setup call lsp#register_server({ + \ 'name': 'clangd', + \ 'cmd': {server_info->['clangd', '-background-index']}, + \ 'allowlist': ['c', 'cpp', 'objc', 'objcpp'], + \ }) +endif + +if executable('gopls') + au User lsp_setup call lsp#register_server({ + \ 'name': 'gopls', + \ 'cmd': {server_info->['gopls', '-remote=auto']}, + \ 'allowlist': ['go', 'gomod', 'gohtmltmpl', 'gotexttmpl'], + \ }) + autocmd BufWritePre *.go + \ call execute('LspDocumentFormatSync') | + \ call execute('LspCodeActionSync source.organizeImports') +endif + +if executable('yaml-language-server') + augroup LspYaml + autocmd! + autocmd User lsp_setup call lsp#register_server({ + \ 'name': 'yaml-language-server', + \ 'cmd': {server_info->['yaml-language-server', '--stdio']}, + \ 'allowlist': ['yaml', 'yaml.ansible'], + \ 'workspace_config': { + \ 'yaml': { + \ 'validate': v:true, + \ 'hover': v:true, + \ 'completion': v:true, + \ 'customTags': [], + \ 'schemas': {}, + \ 'schemaStore': { 'enable': v:true }, + \ } + \ } + \}) + augroup END +endif + +function! s:on_lsp_buffer_enabled() abort + setlocal omnifunc=lsp#complete + setlocal signcolumn=yes + if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif + nmap gd (lsp-definition) + nmap gs (lsp-document-symbol-search) + nmap gS (lsp-workspace-symbol-search) + nmap gr (lsp-references) + nmap gi (lsp-implementation) + nmap gt (lsp-type-definition) + nmap rn (lsp-rename) + nmap [g (lsp-previous-diagnostic) + nmap ]g (lsp-next-diagnostic) + nmap K (lsp-hover) + + let g:lsp_format_sync_timeout = 1000 + + " refer to doc to add more commands +endfunction + +augroup lsp_install + au! + " call s:on_lsp_buffer_enabled only for languages that has the server registered. + autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() +augroup END