Commit Diff


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 <buffer> gd <plug>(lsp-definition)
+	nmap <buffer> gs <plug>(lsp-document-symbol-search)
+	nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
+	nmap <buffer> gr <plug>(lsp-references)
+	nmap <buffer> gi <plug>(lsp-implementation)
+	nmap <buffer> gt <plug>(lsp-type-definition)
+	nmap <buffer> <leader>rn <plug>(lsp-rename)
+	nmap <buffer> [g <plug>(lsp-previous-diagnostic)
+	nmap <buffer> ]g <plug>(lsp-next-diagnostic)
+	nmap <buffer> K <plug>(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