From b42cfbfccea755d5a0cb9a56e62060873d0625f6 Mon Sep 17 00:00:00 2001 From: Warwick Date: Thu, 28 Jan 2021 09:49:23 +0000 Subject: [PATCH] New vim defualts for vim-lsp config as YouCompleteMe is an arse --- .gitignore | 4 +++ plugins.vim | 79 +++++++++++++++++++++++++++++++++++++++++++++ vimrc | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 .gitignore create mode 100644 plugins.vim create mode 100644 vimrc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5bf95fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +bundle +autoload +doc +plugin/* diff --git a/plugins.vim b/plugins.vim new file mode 100644 index 0000000..aeab6ff --- /dev/null +++ b/plugins.vim @@ -0,0 +1,79 @@ +set nocompatible " be iMproved, required +filetype off " required + +" set the runtime path to include Vundle and initialize +set rtp+=~/.vim/bundle/Vundle.vim +call vundle#begin() +" alternatively, pass a path where Vundle should install plugins +"call vundle#begin('~/some/path/here') + +" let Vundle manage Vundle, required +Plugin 'VundleVim/Vundle.vim' + +" Pretty +Plugin 'itchyny/lightline.vim' +"Plug 'morhetz/gruvbox' +" Functional +Plugin 'jiangmiao/auto-pairs' +Plugin 'scrooloose/nerdtree' +Plugin 'tpope/vim-surround' +Plugin 'dhruvasagar/vim-dotoo' +" Language C++ +"Plugin 'ycm-core/YouCompleteMe' +Plugin 'prabirshrestha/vim-lsp' +Plugin 'mattn/vim-lsp-settings' +Plugin 'prabirshrestha/asyncomplete.vim' + + +" All of your Plugins must be added before the following line +call vundle#end() " required +filetype plugin indent on " required +" To ignore plugin indent changes, instead use: +"filetype plugin on +" +" Brief help +" :PluginList - lists configured plugins +" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate +" :PluginSearch foo - searches for foo; append `!` to refresh local cache +" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal +" +" see :h vundle for more details or wiki for FAQ +" Put your non-Plugin stuff after this line + +" Tab completion +inoremap pumvisible() ? "\" : "\" +inoremap pumvisible() ? "\" : "\" +inoremap pumvisible() ? asyncomplete#close_popup() : "\" + +" clangd vim lsp +let g:lsp_settings = { +\ 'clangd': {'cmd': ['clangd-8']}, +\ 'efm-langserver': {'disabled': v:false} +\} + +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 + autocmd! BufWritePre *.rs,*.go,*.cpp,*.c,*.h,*.cs call execute('LspDocumentFormatSync') + + " 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 diff --git a/vimrc b/vimrc new file mode 100644 index 0000000..3f3b3a1 --- /dev/null +++ b/vimrc @@ -0,0 +1,93 @@ +" An example for a vimrc file. +" +" Maintainer: Bram Moolenaar +" Last change: 2019 Jan 26 +" +" To use it, copy it to +" for Unix and OS/2: ~/.vimrc +" for Amiga: s:.vimrc +" for MS-DOS and Win32: $VIM\_vimrc +" for OpenVMS: sys$login:.vimrc + +" When started as "evim", evim.vim will already have done these settings, bail +" out. +if v:progname =~? "evim" + finish +endif + +" Get the defaults that most users want. +source $VIMRUNTIME/defaults.vim + +if has("vms") + set nobackup " do not keep a backup file, use versions instead +else + set backup " keep a backup file (restore to previous version) + if has('persistent_undo') + set undofile " keep an undo file (undo changes after closing) + endif +endif + +if &t_Co > 2 || has("gui_running") + " Switch on highlighting the last used search pattern. + set hlsearch +endif + +" Put these in an autocmd group, so that we can delete them easily. +augroup vimrcEx + au! + + " For all text files set 'textwidth' to 78 characters. + autocmd FileType text setlocal textwidth=78 +augroup END + +" Add optional packages. +" +" The matchit plugin makes the % command work better, but it is not backwards +" compatible. +" The ! means the package won't be loaded right away but when plugins are +" loaded during initialization. +if has('syntax') && has('eval') + packadd! matchit +endif + + +" :W sudo saves the file when the file is open in readonly mode +command W w !sudo tee % > /dev/null + +set number +set expandtab +" 1 tab = 2 spaces +set tabstop=4 shiftwidth=4 +set smarttab +set autoindent +" Ignore case when searching +set ignorecase +set smartcase +" highlight search results (after pressing Enter) +set hlsearch +" highlight all pattern matches WHILE typing the pattern +set incsearch +" show the mathing brackets +set showmatch +" Create backup directory if it doesn't exist +silent !mkdir ~/.cache/vim > /dev/null 2>&1 +" tell vim where to put its backup files +set backupdir=~/.cache/vim +set undodir=~/.cache/vim +set dir=~/.cache/vim + +" set colors +if has("termguicolors") + set termguicolors +endif +colorscheme desert +hi Normal guibg=NONE ctermbg=NONE +hi EndOfBuffer guibg=NONE ctermbg=NONE +" highlight current line +set cursorline +hi clear CursorLine +hi CursorLine ctermbg=8 guibg=#404040 +hi Cursor ctermbg=15 + +" Load Plugins +so ~/.vim/plugins.vim