set nocompatible filetype off " easier to reach than \ let mapleader=" " " vim-plug if empty(glob('~/.vim/autoload/plug.vim')) silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin('~/.vim/plugged') " git wrapper Plug 'tpope/vim-fugitive' " ack wrapper. :Ack Plug 'mileszs/ack.vim' Plug 'mutewinter/nginx.vim' Plug 'scrooloose/nerdcommenter' Plug 'mustache/vim-mustache-handlebars' " better than ctrl-p Plug 'junegunn/fzf' Plug 'junegunn/fzf.vim' " Use a leader instead of the actual named binding nmap p :Files " Easy bindings for its various modes nmap bb :Buffers " rename a buffer. :rename[!] {newname} Plug 'danro/rename.vim' " ugh this thing Plug 'Valloric/YouCompleteMe' let g:ycm_rust_src_path = '~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src' nnoremap jd :YcmCompleter GoTo Plug 'chaquotay/ftl-vim-syntax' Plug 'itchyny/lightline.vim' let g:lightline = { \ 'colorscheme': 'PaperColor', \ } Plug 'scrooloose/nerdtree' nnoremap . :NERDTreeToggle autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif Plug 'vim-scripts/forth.vim' Plug 'rust-lang/rust.vim' let g:rustfmt_autosave = 1 Plug 'cespare/vim-toml' Plug 'airblade/vim-gitgutter' nnoremap gn :GitGutterNextHunk nnoremap gp :GitGutterPrevHunk Plug 'fatih/vim-go' nnoremap f :GoFmt nnoremap t :GoTestFunc nnoremap at :GoTest nnoremap s :GoAlternate nnoremap d :GoDecls nnoremap ad :GoDeclsDir nnoremap ld :GoDefStack nnoremap bd :GoDefPop nnoremap i :GoInfo nnoremap rr :GoReferrers nnoremap u :GoCallees Plug 'majutsushi/tagbar' nnoremap tb :TagbarToggle Plug 'tpope/vim-rails' Plug 'NLKNguyen/papercolor-theme' " gitk in vim basically Plug 'cohama/agit.vim' Plug 'jeetsukumaran/vim-buffergator' " Use the right side of the screen let g:buffergator_viewport_split_policy = 'R' " I want my own keymappings... let g:buffergator_suppress_keymaps = 1 " Looper buffers "let g:buffergator_mru_cycle_loop = 1 " Go to the previous buffer open nmap jj :BuffergatorMruCyclePrev " Go to the next buffer open nmap kk :BuffergatorMruCycleNext " View the entire list of buffers open nmap bl :BuffergatorOpen " Asynchronous Lint Engine Plug 'w0rp/ale' " Unixy stuff Plug 'tpope/vim-eunuch' call plug#end() filetype plugin indent on set rtp+=$GOROOT/misc/vim syntax enable set encoding=utf-8 set showcmd set pastetoggle= " leave paste mode so i don't forget au InsertLeave * set nopaste " whitespace set wrap " don't wrap lines set textwidth=79 set formatoptions=qrn1 set tabstop=2 shiftwidth=2 " a tab is two spaces (or set this to 4) set expandtab " use spaces, not tabs (optional) set backspace=indent,eol,start " backspace through everything in insert mode set lazyredraw " don't update the screen when executing macros set completeopt-=preview " hide the Scratch window when autocompleting " searching set hlsearch " highlight matches set incsearch " incremental searching set ignorecase " searches are case insensitive... set smartcase " ... unless they contain at least one capital letter set gdefault set showmatch " Show matching brackets. set matchtime=5 " Bracket blinking. set novisualbell " No blinking set noerrorbells " No noise. set laststatus=2 " Always show status line. set vb t_vb= " disable any beeps or flashes on error set ruler set showcmd " Display an incomplete command in the lower right corner of the Vim window set shortmess=atI " Shortens messages set nolist " Display unprintable characters f12 - switches set listchars=tab:·\ ,eol:¶,trail:·,extends:»,precedes:« " Unprintable chars mapping set foldenable " Turn on folding set foldmethod=marker " Fold on the marker set foldlevel=100 " Don't autofold anything (but I can still fold manually) set foldopen=block,hor,mark,percent,quickfix,tag " what movements open folds " start scrolling when we're 8 lines away from margins set scrolloff=8 set sidescrolloff=15 set sidescroll=1 set noswapfile set nobackup set nowb set hidden " Automatically insert the current comment leader after hitting 'o' or 'O' in Normal mode. set fo+=o " Do not automatically insert a comment leader after an enter set fo-=r " Do no auto-wrap text using textwidth (does not apply to comments) set fo-=t set mouse=a " make mouse work in st set ttymouse=xterm2 set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*/vendor/*,*/bin/*,*/node_modules/* " quicker update time for things like tagbar set updatetime=500 " taller vertical bar for vsplits set fillchars+=vert:│ " company standard bleh autocmd FileType java setlocal shiftwidth=4 tabstop=4 autocmd FileType go setlocal noexpandtab autocmd BufNewFile,BufRead *.shl set syntax=sh " When opening a file, always jump to the last cursor position autocmd BufReadPost * \ if line("'\"") > 0 && line ("'\"") <= line("$") | \ exe "normal g'\"" | \ endif " easily copy to system clipboard vnoremap "+y " remove annoying help window inoremap nnoremap vnoremap " easy .vimrc editing nnoremap rs :source ~/.vimrc nnoremap rt :tabnew ~/.vimrc " better window navigation nnoremap j nnoremap k nnoremap h nnoremap l " quickfix nnoremap :cnext nnoremap :cprevious " hulk smash escape inoremap jk inoremap kj " buffer switching noremap :bp noremap :bn " unhighlight search results noremap / :nohls noremap x :%!xmllint --format - " reselect visual block after indent/outdent vnoremap < >gv " force saving files that require root permission cmap w!! %!sudo tee > /dev/null % " Close the current buffer and move to the previous one " This replicates the idea of closing a tab nmap bq :bp bd # if &t_Co >= 256 || has('gui-running') set background=dark colorscheme PaperColor endif set nu if version >= 703 set undodir=~/.vim/backups set undofile set relativenumber endif highlight clear SignColumn set t_ku=OA set t_kd=OB set t_kr=OC set t_kl=OD