set nocompatible " be iMproved, required set number " turn on line numbers set relativenumber " lines are numbered relative to current line set scrolloff=8 " number of lines to keep above and below the cursor set noerrorbells visualbell t_vb= " no sound on errors autocmd! bufwritepost .vimrc source ~/.vimrc " When vimrc is edited, reload it set autoread " set to auto read when a file is changed from the outside set cursorcolumn " highlight current column set cursorline " highlight current row set incsearch " make search act like search in modern browsers set showmatch " show matching brackets when text indicator is over them " ---------------------------------------------------------------------------------------------------- " From Vim Zero: https://www.oliversherouse.com/2017/08/21/vim_zero.html " General let mapleader = ',' set hidden " Allow background buffers without saving set spell spelllang=en_us set splitright " Split to right by default " Text Wrapping set textwidth=119 set colorcolumn=120 set nowrap " Search and Substitute set gdefault " use global flag by default in s: commands set hlsearch " highlight searches set ignorecase set smartcase " don't ignore capitals in searches nnoremap :nohls " Tabs set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab " Mappings " -H to move to previous buffer nnoremap :bp " -L to move to next buffer nnoremap :bn " comma-w to save buffer nnoremap w :w " comma-q to quit buffer nnoremap q :bd " bring up the copy buffer noremap x "+ " With ripgrep and FZF " p to open files map p :Files " search buffers nmap ; :Buffers " Plugins "" Installation with VimPlug if has("win32") call plug#begin('~/vimfiles/plugged') else call plug#begin('~/.vim/plugged') endif """ Basics Plug 'tpope/vim-sensible' Plug 'sheerun/vim-polyglot' Plug 'flazz/vim-colorschemes' """ General Functionality Plug 'lifepillar/vim-mucomplete' Plug 'scrooloose/syntastic' Plug 'tpope/vim-commentary' """ Particular Functionality Plug 'vim-pandoc/vim-pandoc-syntax' Plug 'godlygeek/tabular' """ Command Line Fuzzy Finder - https://github.com/junegunn/fzf Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'junegunn/fzf.vim' call plug#end() "" Colors "set termguicolors colorscheme slate "" Autocompletion set completeopt=menuone,noinsert,noselect set shortmess+=c " Turn off completion messages inoremap mucomplete#popup_exit("\") inoremap mucomplete#popup_exit("\") inoremap mucomplete#popup_exit("\") let g:mucomplete#enable_auto_at_startup = 1 "" Pandoc augroup pandoc_syntax au! BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc au! BufNewFile,BufFilePre,BufRead *.markdown set filetype=markdown.pandoc augroup END let g:pandoc#syntax#conceal#use = 0 let g:pandoc#syntax#codeblocks#embeds#langs = ['python', 'vim', 'make', 'bash=sh', 'html', 'css', 'scss', 'javascript'] " ---------------------------------------------------------------------------------------------------- " ---------------------------------------------------------------------------------------------------- " => Statusline " Ideas from http://got-ravings.blogspot.com/2008/08/vim-pr0n-making-statuslines-that-own.html set laststatus=2 " always show statusline set statusline= " clear on reload set statusline+=[%n] " buffer number set statusline+=\ %f " filename set statusline+=\ [%{strlen(&fenc)?&fenc:'none'}, " file encoding set statusline+=\ %{&ff}] " file format set statusline+=\ %y " filetype set statusline+=\ %H\ %m\ %r\ %W " flags set statusline+=%= " left/right separator set statusline+=l:%l/%L " cursor line/total lines set statusline+=\ c:%c, " cursor column set statusline+=\ %P " percent through file " ---------------------------------------------------------------------------------------------------- " ----------------------------------------------------------------------------------------------------- " => Keymaps: Doing more things at once " ----------------------------------------------------------------------------------------------------- " ----------------------------------------------------------------------------------------------------- " ===> Text bubbling (http://vimcasts.org/episodes/bubbling-text/) " Bubble single lines nmap ddkP nmap ddp " Bubble multiple lines vmap xkP`[V`] vmap xp`[V`] " ----------------------------------------------------------------------------------------------------- " ----------------------------------------------------------------------------------------------------- " ===> More sane movement keys nnoremap j gj nnoremap k gk " ----------------------------------------------------------------------------------------------------- " ----------------------------------------------------------------------------------------------------- " ===> Spellcheck " Horrible colors! I hate spellchecker's red highlight, so I changed it " (http://stackoverflow.com/questions/6008921/how-do-i-change-the-highlight-style-in-vim-spellcheck) " Vim Colors: (http://alvinalexander.com/linux/vi-vim-editor-color-scheme-syntax) " ----------------------------------------------------------------------------------------------------- hi clear SpellBad hi clear SpellCap hi clear SpellErrors hi clear SpellLocal hi clear SpellRare hi SpellBad cterm=underline,bold ctermfg=Red hi SpellCap cterm=underline,bold ctermfg=Red hi SpellErrors cterm=underline,bold ctermfg=Red " ----------------------------------------------------------------------------------------------------- " ===> Spell check only certain file types https://robots.thoughtbot.com/vim-spell-checking " turn off for files with no extension autocmd BufRead,BufNewFile * setlocal nospell " turn off for files with any extension autocmd BufRead,BufNewFile *.* setlocal nospell " turn on for markdown files autocmd BufRead,BufNewFile *.md setlocal spell autocmd BufRead,BufNewFile *.mkd setlocal spell autocmd BufRead,BufNewFile *.markdown setlocal spell " turn on for text files autocmd BufRead,BufNewFile *.txt setlocal spell " ----------------------------------------------------------------------------------------------------- " ----------------------------------------------------------------------------------------------------- " => Templates " Doing special things with certain filetypes " ----------------------------------------------------------------------------------------------------- " shell scripts (.sh) ------------------------------------------------ autocmd BufNewFile *.sh so $HOME/.vim/templates/sh autocmd BufNewFile *.sh %s/FILE:.*/\='FILE: '.expand('%')/e autocmd BufNewFile *.sh exe "g/AUTHOR:.*/s//AUTHOR: C Hawley" autocmd BufNewFile *.sh exe "g/CREATED:.*/s//CREATED: " .strftime("%c") autocmd BufWritePre,filewritepre *.sh execute "normal ma" autocmd BufWritePre,filewritepre *.sh exe "g/REVISION:.*/s//REVISION: " .strftime("%c") autocmd bufWritePost,filewritepost *.sh execute "normal `a" " python scripts (.py) ------------------------------------------------ autocmd BufNewFile *.py so $HOME/.vim/templates/py autocmd BufNewFile *.py %s/FILE:.*/\='FILE: '.expand('%')/e autocmd BufNewFile *.py exe "g/AUTHOR:.*/s//AUTHOR: C Hawley" autocmd BufNewFile *.py exe "g/CREATED:.*/s//CREATED: " .strftime("%c") autocmd BufWritePre,filewritepre *.py execute "normal ma" autocmd BufWritePre,filewritepre *.py exe "g/REVISION:.*/s//REVISION: " .strftime("%c") autocmd bufWritePost,filewritepost *.py execute "normal `a" " markdown documents (.md,*.mkd) ------------------------------------- autocmd BufNewFile *.md,*.mkd so $HOME/.vim/templates/md autocmd BufNewFile *.md,*.mkd exe "g/Created:.*/s//Created: " .strftime("%c") autocmd BufWritePre,filewritepre *.md,*.mkd execute "normal ma" autocmd BufWritePre,filewritepre *.md,*.mkd exe "g/Updated:.*/s//Updated: " .strftime("%c") autocmd bufWritePost,filewritepost *.md,*.mkd execute "normal `a" " markdown documents (.markdown - jekyll blog) ----------------------- autocmd BufNewFile *.markdown so $HOME/.vim/templates/markdown autocmd BufNewFile *.markdown exe "g/date:.*/s//date: " .strftime("%c") autocmd BufWritePre,filewritepre *.markdown execute "normal ma" autocmd BufWritePre,filewritepre *.markdown exe "g/Updated:.*/s//Updated: " .strftime("%c") autocmd bufWritePost,filewritepost *.markdown execute "normal `a"