set encoding=utf-8 " Leader let mapleader = " " set backspace=2 " Backspace deletes like most programs in insert mode set nobackup set nowritebackup set noswapfile " http://robots.thoughtbot.com/post/18739402579/global-gitignore#comment-458413287 set history=50 set ruler " show the cursor position all the time set showcmd " display incomplete commands set incsearch " do incremental searching set laststatus=2 " Always display the status line set autowrite " Automatically :write before running commands set modelines=0 " Disable modelines as a security precaution set nomodeline " Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on") syntax on endif if filereadable(expand("~/.vimrc.bundles")) source ~/.vimrc.bundles endif " Load matchit.vim, but only if the user hasn't installed a newer version. if !exists('g:loaded_matchit') && findfile('plugin/matchit.vim', &rtp) ==# '' runtime! macros/matchit.vim endif filetype plugin indent on augroup vimrcEx autocmd! " When editing a file, always jump to the last known cursor position. " Don't do it for commit messages, when the position is invalid, or when " inside an event handler (happens when dropping a file on gvim). autocmd BufReadPost * \ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ endif " Set syntax highlighting for specific file types autocmd BufRead,BufNewFile *.md set filetype=markdown autocmd BufRead,BufNewFile .{jscs,jshint,eslint}rc set filetype=json autocmd BufRead,BufNewFile \ aliases.local, \zshenv.local,zlogin.local,zlogout.local,zshrc.local,zprofile.local, \*/zsh/configs/* \ set filetype=sh autocmd BufRead,BufNewFile gitconfig.local set filetype=gitconfig autocmd BufRead,BufNewFile tmux.conf.local set filetype=tmux autocmd BufRead,BufNewFile vimrc.local set filetype=vim augroup END " ALE linting events augroup ale autocmd! if g:has_async autocmd VimEnter * \ set updatetime=1000 | \ let g:ale_lint_on_text_changed = 0 autocmd CursorHold * call ale#Queue(0) autocmd CursorHoldI * call ale#Queue(0) autocmd InsertEnter * call ale#Queue(0) autocmd InsertLeave * call ale#Queue(0) else echoerr "The thoughtbot dotfiles require NeoVim or Vim 8" endif augroup END " When the type of shell script is /bin/sh, assume a POSIX-compatible " shell for syntax highlighting purposes. let g:is_posix = 1 " Softtabs, 2 spaces set tabstop=2 set shiftwidth=2 set shiftround set expandtab " Display extra whitespace set list listchars=tab:»·,trail:·,nbsp:· " Use one space, not two, after punctuation. set nojoinspaces " Use The Silver Searcher https://github.com/ggreer/the_silver_searcher if executable('ag') " Use Ag over Grep set grepprg=ag\ --nogroup\ --nocolor " Use ag in fzf for listing files. Lightning fast and respects .gitignore let $FZF_DEFAULT_COMMAND = 'ag --literal --files-with-matches --nocolor --hidden -g ""' if !exists(":Ag") command -nargs=+ -complete=file -bar Ag silent! grep! |cwindow|redraw! nnoremap \ :Ag endif endif " Make it obvious where 80 characters is set textwidth=80 set colorcolumn=+1 " Numbers set number set numberwidth=5 " Tab completion " will insert tab at beginning of line, " will use completion if not at beginning set wildmode=list:longest,list:full function! InsertTabWrapper() let col = col('.') - 1 if !col || getline('.')[col - 1] !~ '\k' return "\" else return "\" endif endfunction inoremap =InsertTabWrapper() inoremap " Switch between the last two files nnoremap " Get off my lawn nnoremap :echoe "Use h" nnoremap :echoe "Use l" nnoremap :echoe "Use k" nnoremap :echoe "Use j" " vim-test mappings nnoremap t :TestFile nnoremap s :TestNearest nnoremap l :TestLast nnoremap a :TestSuite nnoremap gt :TestVisit " Run commands that require an interactive shell nnoremap r :RunInInteractiveShell " Treat
  • and

    tags like the block tags they are let g:html_indent_tags = 'li\|p' " Set tags for vim-fugitive set tags^=.git/tags " Open new split panes to right and bottom, which feels more natural set splitbelow set splitright " Quicker window movement nnoremap j nnoremap k nnoremap h nnoremap l " Move between linting errors nnoremap ]r :ALENextWrap nnoremap [r :ALEPreviousWrap " Map Ctrl + p to open fuzzy find (FZF) nnoremap :Files " Set spellfile to location that is guaranteed to exist, can be symlinked to " Dropbox or kept in Git and managed outside of thoughtbot/dotfiles using rcm. set spellfile=$HOME/.vim-spell-en.utf-8.add " Autocomplete with dictionary words when spell check is on set complete+=kspell " Always use vertical diffs set diffopt+=vertical " Local config if filereadable($HOME . "/.vimrc.local") source ~/.vimrc.local endif