" ~/.vimrc " " ~ M. Thomas let mapleader = "\" " ============================== vim-plug let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim' if empty(glob(data_dir . '/autoload/plug.vim')) silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' autocmd VimEnter * PlugInstall --sync | source ~/.vimrc endif call plug#begin() Plug 'tpope/vim-sleuth' " heuristic file indendation Plug 'jiangmiao/auto-pairs' " pair completion Plug 'tpope/vim-fugitive' " git wrapper Plug 'tpope/vim-commentary' " DWIM comments Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' Plug 'sainnhe/everforest' " color scheme Plug 'vim-airline/vim-airline' " nicer status line Plug 'vim-airline/vim-airline-themes' " auto settings theme for airline Plug 'autozimu/LanguageClient-neovim', { \ 'branch': 'next', \ 'do': 'bash install.sh', \ } call plug#end() " ============================== Colors syntax on set background=light let g:everforest_background = 'medium' let g:everforest_better_performance = 1 colorscheme everforest let &t_8f = "\[38;2;%lu;%lu;%lum" let &t_8b = "\[48;2;%lu;%lu;%lum" set termguicolors " ============================== General filetype indent plugin on set number " show line number set relativenumber " show relative line number set cursorline " highlight current line set ruler " show line and row at bottom right set colorcolumn=80 set nowrap " don't wrap lines set showmatch " highlights paranthesis set hidden " allow moving to a new buffer without saving set noswapfile " don't create a swap file set confirm " can't quit without saving set noshowmode " don't show mode in status set noshowcmd " don't show command in status set encoding=utf-8 set mouse=a " a=on, c=off set undolevels=1337 set backspace=indent,eol,start " always delete with backspace set wildmenu " autocomplete :e set scrolloff=5 " minimum lines above or below the cursor let g:ctrlp_show_hidden = 1 " show hidden files in ctrlp menus " ============================== Statusline let g:airline_powerline_fonts = 1 let g:airline_mode_map = { \ 'i' : '', \ 'ic' : '', \ 'ix' : '', \ 'n' : '', \ 'multi' : '並', \ 'ni' : '', \ 'no' : '', \ 'R' : 'ﰇ', \ 'Rv' : 'ﰇ', \ 'v' : '', \ 'V' : '  ', \ '' : ' ', \ 'c' : '' \ } let g:airline_section_x = airline#section#create([]) let g:airline_section_y = airline#section#create_right(['%{&fileencoding}', '%{&fileformat}', '%{&filetype}']) let g:airline_section_z = airline#section#create(['%{line(".")}:%{col(".")}']) " ============================== Indents and Whitespaces set list set listchars=tab:──\ ,extends:›,precedes:‹,nbsp:·,trail:· " show chars for whitespaces set fillchars+=vert:\ " don't draw verticle split " show trailing whitespaces in red highlight ExtraWhitespace ctermbg=red guibg=red match ExtraWhitespace /\s\+\%#\@ unless capitol letters set hlsearch " highlight all results set mat=5 " ============================== Cursor Thiccness let &t_SI = "\[6 q" let &t_SR = "\[4 q" let &t_EI = "\[2 q" " ============================== netrw let g:netrw_winsize = 25 " width let g:netrw_liststyle = 3 " Tree-like structure let g:netrw_banner = 0 " Remove useless banner at the top of netrw " ============================== Macros and Mappings " file interaction let g:fzf_preview_window = ['down,50%', 'ctrl-/'] command! -bang -nargs=* GGrep \ call fzf#vim#grep( \ 'git grep --line-number -- '.shellescape(), 0, \ fzf#vim#with_preview(), 0) map :GFiles map :GGrep cabbrev g Git fun! TrimWhitespace() let l:save = winsaveview() keeppatterns %s/\s\+$//e call winrestview(l:save) endfun noremap ws :call TrimWhitespace() map :messages map :Commentary " ============================== LSP set hidden let g:LanguageClient_serverCommands = { \ 'rust': ['~/.cargo/bin/rust-analyzer'], \ 'python': ['/usr/bin/pylsp'], \ 'c': ['/usr/bin/clangd'], \ 'cpp': ['/usr/bin/clangd'], \ 'yaml': ['~/.local/bin/yaml-lsp'], \ } nnoremap :call LanguageClient_contextMenu() map :call LanguageClient#textDocument_rename() map :call LanguageClient#textDocument_definition() inoremap imap