"let g:ale_disable_lsp = 1 call plug#begin('~/.config/nvim/autoload/plugged') Plug 'junegunn/vim-easy-align' Plug 'dense-analysis/ale' Plug 'tpope/vim-rails' Plug 'vim-ruby/vim-ruby' Plug 'hashivim/vim-terraform' Plug 'cespare/vim-toml' Plug 'ntpeters/vim-better-whitespace' "Plug 'pearofducks/ansible-vim' Plug 'itchyny/vim-gitbranch' Plug 'rust-lang/rust.vim' Plug 'airblade/vim-gitgutter' "Plug 'elixir-editors/vim-elixir' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'kyazdani42/nvim-web-devicons' Plug 'kyazdani42/nvim-tree.lua' Plug 'svermeulen/vimpeccable' Plug 'sp5/nvim-colors-solarized' "Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'preservim/nerdtree' Plug 'NoahTheDuke/vim-just' Plug 'dewyze/vim-tada' call plug#end() set nocompatible set history=1000 set title set encoding=utf-8 set scrolloff=3 set ttyfast set laststatus=2 set ff=unix set number set tabstop=2 set shiftwidth=2 set softtabstop=2 set nojoinspaces set expandtab set listchars=tab:>-,trail:- set list set noshowmode set hlsearch set incsearch set termguicolors set visualbell set noerrorbells set whichwrap=<,>,[,],b, set backspace=indent,eol,start set number set autoread set nobackup set nowritebackup set nowb set noswapfile let mapleader = " " syntax on filetype on filetype plugin on filetype plugin indent on autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0 autocmd FileType rust set shiftwidth=4 softtabstop=4 tabstop=4 autocmd FileType terraform set expandtab let g:rustfmt_autosave = 1 let g:terraform_fmt_on_save = 1 autocmd FileType html set shiftwidth=4 softtabstop=4 tabstop=4 autocmd FileType javascript set shiftwidth=4 softtabstop=4 tabstop=4 autocmd FileType htmldjango set shiftwidth=4 softtabstop=4 tabstop=4 autocmd FileType just set shiftwidth=4 softtabstop=4 tabstop=4 autocmd BufNewFile,BufRead *.tera set syntax=django " autocmd BufNewFile,BufRead justfile setf make expandtab shiftwidth=8 softtabstop=0 autocmd FileType *.md set expandtab " Center screen when scrolling search results nmap n nzz nmap N Nzz "colorscheme solarized let g:airline_powerline_fonts=1 let g:airline_theme='base16_one_light' let g:airline_theme='owo' let g:airline#extensions#tabline#enabled = 1 noremap :bp noremap :bn set pastetoggle= " highlight trailing whitespace highlight ExtraWhitespace ctermbg=lightblue guibg=lightblue match ExtraWhitespace /\s\+$/ autocmd BufWinEnter * match ExtraWhitespace /\s\+$/ autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@(EasyAlign) " Start interactive EasyAlign for a motion/text object (e.g. gaip) nmap ga (EasyAlign) nnoremap 1 :source ~/.config/nvim/init.vim \| :PlugInstall map s :StripWhitespace nnoremap g :Rg nnoremap p :Files nnoremap l :Buffers nnoremap :call SetNewPassword() function! SetNewPassword() let cur_word = expand('') let cmd = 'pwgen ' . strlen(cur_word) . ' 1' let new_password = system(cmd)[:-2] " Replace current word with a new random password of the same length call setline(line('.'), substitute(getline('.'), cur_word, new_password, "")) endfunction " Relative numbering function! NumberToggle() if(&relativenumber == 1) set nornu set number else set rnu endif endfunc " Toggle between normal and relative numbering. noremap :call NumberToggle() " File Browser nnoremap e :NvimTreeToggle nnoremap r :NvimTreeRefresh nnoremap n :NvimTreeFindFile let g:nvim_tree_auto_close = 1 " let g:nvim_tree_quit_on_open = 1 let g:nvim_tree_git_hl = 1 "set guifont=OperatorMono\ Nerd\ Font:h16 " Set internal encoding of vim, not needed on neovim, since coc.nvim using some " unicode characters in the file autoload/float.vim set encoding=utf-8 " TextEdit might fail if hidden is not set. set hidden " Give more space for displaying messages. "set cmdheight=1 " Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable " delays and poor user experience. set updatetime=300 " Don't pass messages to |ins-completion-menu|. set shortmess+=c " Always show the signcolumn, otherwise it would shift the text each time " diagnostics appear/become resolved. "if has("nvim-0.5.0") || has("patch-8.1.1564") " Recently vim can merge signcolumn and number column into one " set signcolumn=number "else " set signcolumn=yes "endif " Use tab for trigger completion with characters ahead and navigate. " NOTE: Use command ':verbose imap ' to make sure tab is not mapped by " other plugin before putting this into your config. "inoremap " \ pumvisible() ? "\" : " \ check_back_space() ? "\" : " \ coc#refresh() "inoremap pumvisible() ? "\" : "\" "function! s:check_back_space() abort " let col = col('.') - 1 " return !col || getline('.')[col - 1] =~# '\s' "endfunction " Use to trigger completion. "if has('nvim') " inoremap coc#refresh() "else " inoremap coc#refresh() "endif " Make auto-select the first completion item and notify coc.nvim to " format on enter, could be remapped by other vim plugin "inoremap pumvisible() ? coc#_select_confirm() " \: "\u\\=coc#on_enter()\" " Use `[g` and `]g` to navigate diagnostics " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. "nmap [g (coc-diagnostic-prev) "nmap ]g (coc-diagnostic-next) " GoTo code navigation. "nmap gd (coc-definition) "nmap gy (coc-type-definition) "nmap gi (coc-implementation) "nmap gr (coc-references) " Use K to show documentation in preview window. "nnoremap K :call show_documentation() "function! s:show_documentation() " if (index(['vim','help'], &filetype) >= 0) " execute 'h '.expand('') " elseif (coc#rpc#ready()) " call CocActionAsync('doHover') " else " execute '!' . &keywordprg . " " . expand('') " endif "endfunction " Highlight the symbol and its references when holding the cursor. "autocmd CursorHold * silent call CocActionAsync('highlight') " Symbol renaming. "nmap rn (coc-rename) " Formatting selected code. "xmap f (coc-format-selected) "nmap f (coc-format-selected) "augroup mygroup " autocmd! " Setup formatexpr specified filetype(s). " autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') " Update signature help on jump placeholder. " autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') "augroup end " " Applying codeAction to the selected region. " Example: `aap` for current paragraph "xmap a (coc-codeaction-selected) "nmap a (coc-codeaction-selected) " Remap keys for applying codeAction to the current buffer. "nmap ac (coc-codeaction) " Apply AutoFix to problem on the current line. "nmap qf (coc-fix-current) " Map function and class text objects " NOTE: Requires 'textDocument.documentSymbol' support from the language server. "xmap if (coc-funcobj-i) "omap if (coc-funcobj-i) "xmap af (coc-funcobj-a) "omap af (coc-funcobj-a) "xmap ic (coc-classobj-i) "omap ic (coc-classobj-i) "xmap ac (coc-classobj-a) "omap ac (coc-classobj-a) " Remap and for scroll float windows/popups. "if has('nvim-0.4.0') || has('patch-8.2.0750') " nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" " nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" " inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" " inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" " vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" " vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" "endif " Use CTRL-S for selections ranges. " Requires 'textDocument/selectionRange' support of language server. "nmap (coc-range-select) "xmap (coc-range-select) " Add `:Format` command to format current buffer. "command! -nargs=0 Format :call CocAction('format') " Add `:Fold` command to fold current buffer. "command! -nargs=? Fold :call CocAction('fold', ) " Add `:OR` command for organize imports of the current buffer. "command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') " Add (Neo)Vim's native statusline support. " NOTE: Please see `:h coc-status` for integrations with external plugins that " provide custom statusline: lightline.vim, vim-airline. "set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} " Mappings for CoCList " Show all diagnostics. "nnoremap a :CocList diagnostics " Manage extensions. "nnoremap e :CocList extensions " Show commands. "nnoremap c :CocList commands " Find symbol of current document. "nnoremap o :CocList outline " Search workspace symbols. "nnoremap s :CocList -I symbols " Do default action for next item. "nnoremap j :CocNext " Do default action for previous item. "nnoremap k :CocPrev " Resume latest coc list. "nnoremap p :CocListResume