source /etc/vim/vimrc call plug#begin('~/.vim/plugged') Plug 'junegunn/vim-easy-align' Plug 'preservim/nerdtree' | Plug 'Xuyuanp/nerdtree-git-plugin' Plug 'w0rp/ale' Plug 'itchyny/lightline.vim' Plug 'maximbaz/lightline-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 'jlanzarotta/bufexplorer' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' 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 tabstop=2 set shiftwidth=2 set softtabstop=2 set expandtab set listchars=tab:>-,trail:- set list set noshowmode set hlsearch set incsearch set visualbell set noerrorbells set whichwrap=<,>,[,],b, set background=dark set backspace=indent,eol,start set number set autoread set mouse=a set nobackup set nowb set noswapfile syntax on let mapleader = " " 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 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 BufNewFile,BufRead *.tera set syntax=django " Center screen when scrolling search results nmap n nzz nmap N Nzz let g:lightline = { \ 'colorscheme': 'OldHope', \ } let g:lightline.component = { \ 'readonly': '%{&readonly?"":""}', \ } let g:lightline.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', \ } let g:lightline.component_type = { \ 'linter_checking': 'right', \ 'linter_infos': 'right', \ 'linter_warnings': 'warning', \ 'linter_errors': 'error', \ 'linter_ok': 'right', \ } let g:lightline.component_function = { \ 'gitbranch': 'gitbranch#name' \ } 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" let g:lightline.active = { \ 'left': [ [ 'mode', 'paste' ], \ [ 'gitbranch', 'readonly', 'filename', 'modified' ], \ [ 'linter_checking', 'linter_errors', 'linter_warnings', 'linter_infos', 'linter_ok' ] ] \} map :NERDTreeToggle " automatically close vim if the only window open is nerdtree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif let NERDTreeShowHidden=1 let g:NERDTreeGitStatusUntrackedFilesMode = 'all' let g:bufExplorerDefaultHelp=0 let g:bufExplorerShowRelativePath=1 let g:bufExplorerFindActive=1 let g:bufExplorerSortBy='name' map o :BufExplorer map :bprevious map :bnext set pastetoggle= " highlight trailing whitespace highlight ExtraWhitespace ctermbg=red guibg=red match ExtraWhitespace /\s\+$/ autocmd BufWinEnter * match ExtraWhitespace /\s\+$/ autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@1 :diffget LOCAL " map 2 :diffget BASE " map 3 :diffget REMOTE " packloadall " silent! helptags ALL let g:ale_linters = {'rust': ['analyzer']} let g:ale_cursor_detail = 0 " Start interactive EasyAlign in visual mode (e.g. vipga) xmap ga (EasyAlign) " Start interactive EasyAlign for a motion/text object (e.g. gaip) nmap ga (EasyAlign) nnoremap 1 :source ~/.vimrc \| :PlugInstall map s :StripWhitespace nnoremap f :GFiles nnoremap g :Rg nnoremap l :Buffers if !has('gui_running') set t_Co=256 endif 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