From 21355934a9cf8d25ac6e7188b9363e72e9f08da5 Mon Sep 17 00:00:00 2001 From: ColumbusUtrigas Date: Thu, 9 Jun 2022 13:19:48 +0400 Subject: [PATCH] add vimrc --- vimrc | 205 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 vimrc diff --git a/vimrc b/vimrc new file mode 100644 index 0000000..d5a3818 --- /dev/null +++ b/vimrc @@ -0,0 +1,205 @@ +" Set this to 1 to use ultisnips for snippet handling +let s:using_snippets = 0 + +" vim-plug: {{{ +call plug#begin('~/.vim/plugged') + +Plug 'preservim/nerdtree' +Plug 'OmniSharp/omnisharp-vim' + +" Mappings, code-actions available flag and statusline integration +Plug 'nickspoons/vim-sharpenup' + +" Linting/error highlighting +Plug 'dense-analysis/ale' + +" Vim FZF integration, used as OmniSharp selector +Plug 'junegunn/fzf' +Plug 'junegunn/fzf.vim' + +" Autocompletion +Plug 'prabirshrestha/asyncomplete.vim' + +" Colorscheme +Plug 'gruvbox-community/gruvbox' + +" Statusline +Plug 'itchyny/lightline.vim' +Plug 'shinchu/lightline-gruvbox.vim' +Plug 'maximbaz/lightline-ale' + +" Snippet support +if s:using_snippets + Plug 'sirver/ultisnips' +endif + +Plug 'ryanoasis/vim-devicons' +call plug#end() +" }}} + +" Settings: {{{ +filetype indent plugin on +if !exists('g:syntax_on') | syntax enable | endif +set encoding=utf-8 +scriptencoding utf-8 + +set number +set relativenumber +set listchars=eol:↵,tab:>-,trail:•,extends:>,precedes:<,nbsp:_ +set list +set cursorline + +set completeopt=menuone,noinsert,noselect,popuphidden +set completepopup=highlight:Pmenu,border:off + +set backspace=indent,eol,start +set shiftround +set shiftwidth=4 +set softtabstop=-1 +set tabstop=4 +set textwidth=80 +set title + +set hidden +set nofixendofline +set nostartofline +set splitbelow +set splitright + +set hlsearch +set incsearch +set laststatus=2 +set noruler +set noshowmode +set signcolumn=yes + +set mouse=a +set updatetime=1000 +" au VimEnter * NERDTree +map :w " save on Ctrl-S +map :NERDTreeToggle +" }}} + +" Colors: {{{ +augroup ColorschemePreferences + autocmd! + " These preferences clear some gruvbox background colours, allowing transparency + autocmd ColorScheme * highlight Normal ctermbg=NONE guibg=NONE + autocmd ColorScheme * highlight SignColumn ctermbg=NONE guibg=NONE + autocmd ColorScheme * highlight Todo ctermbg=NONE guibg=NONE + " Link ALE sign highlights to similar equivalents without background colours + autocmd ColorScheme * highlight link ALEErrorSign WarningMsg + autocmd ColorScheme * highlight link ALEWarningSign ModeMsg + autocmd ColorScheme * highlight link ALEInfoSign Identifier +augroup END + +" Use truecolor in the terminal, when it is supported +if has('termguicolors') + set termguicolors +endif + +set background=dark +colorscheme gruvbox +" }}} + +" ALE: {{{ +let g:ale_sign_error = '•' +let g:ale_sign_warning = '•' +let g:ale_sign_info = '·' +let g:ale_sign_style_error = '·' +let g:ale_sign_style_warning = '·' + +let g:ale_linters = { 'cs': ['OmniSharp'] } +" }}} + +" Asyncomplete: {{{ +let g:asyncomplete_auto_popup = 1 +let g:asyncomplete_auto_completeopt = 0 +" }}} + +" Sharpenup: {{{ +" All sharpenup mappings will begin with `os`, e.g. `osgd` for +" :OmniSharpGotoDefinition +let g:sharpenup_map_prefix = 'os' +let g:OmniSharp_server_use_net6 = 1 + +let g:sharpenup_statusline_opts = { 'Text': '%s (%p/%P)' } +let g:sharpenup_statusline_opts.Highlight = 0 + +augroup OmniSharpIntegrations + autocmd! + autocmd User OmniSharpProjectUpdated,OmniSharpReady call lightline#update() +augroup END +" }}} + +" Lightline: {{{ +let g:lightline = { +\ 'colorscheme': 'gruvbox', +\ 'active': { +\ 'right': [ +\ ['linter_checking', 'linter_errors', 'linter_warnings', 'linter_infos', 'linter_ok'], +\ ['lineinfo'], ['percent'], +\ ['fileformat', 'fileencoding', 'filetype', 'sharpenup'] +\ ] +\ }, +\ 'inactive': { +\ 'right': [['lineinfo'], ['percent'], ['sharpenup']] +\ }, +\ 'component': { +\ 'sharpenup': sharpenup#statusline#Build() +\ }, +\ 'component_expand': { +\ 'linter_checking': 'lightline#ale#checking', +\ 'linter_infos': 'lightline#ale#infos', +\ 'linter_warnings': 'lightline#ale#warnings', +\ 'linter_errors': 'lightline#ale#errors', +\ 'linter_ok': 'lightline#ale#ok' + \ }, + \ 'component_type': { + \ 'linter_checking': 'right', + \ 'linter_infos': 'right', + \ 'linter_warnings': 'warning', + \ 'linter_errors': 'error', + \ 'linter_ok': 'right' +\ } +\} +" Use unicode chars for ale indicators in the statusline +let g:lightline#ale#indicator_checking = "\uf110 " +let g:lightline#ale#indicator_infos = "\uf129 " +let g:lightline#ale#indicator_warnings = "\uf071 " +let g:lightline#ale#indicator_errors = "\uf05e " +let g:lightline#ale#indicator_ok = "\uf00c " +" }}} + +" OmniSharp: {{{ +let g:OmniSharp_popup_position = 'peek' +if has('nvim') + let g:OmniSharp_popup_options = { + \ 'winblend': 30, + \ 'winhl': 'Normal:Normal,FloatBorder:ModeMsg', + \ 'border': 'rounded' + \} +else + let g:OmniSharp_popup_options = { + \ 'highlight': 'Normal', + \ 'padding': [0], + \ 'border': [1], + \ 'borderchars': ['─', '│', '─', '│', '╭', '╮', '╯', '╰'], + \ 'borderhighlight': ['ModeMsg'] + \} +endif +let g:OmniSharp_popup_mappings = { +\ 'sigNext': '', +\ 'sigPrev': '', +\ 'pageDown': ['', ''], +\ 'pageUp': ['', ''] +\} + +if s:using_snippets + let g:OmniSharp_want_snippet = 1 +endif + +let g:OmniSharp_highlight_groups = { +\ 'ExcludedCode': 'NonText' +\} +" }}}