scatterd-dotfiles/vimrc

183 lines
5 KiB
VimL
Raw Normal View History

set encoding=utf-8
" Leader
let mapleader = " "
set backspace=2 " Backspace deletes like most programs in insert mode
2011-01-13 17:54:08 -05:00
set nobackup
set nowritebackup
2012-10-15 15:36:51 -04:00
set noswapfile " http://robots.thoughtbot.com/post/18739402579/global-gitignore#comment-458413287
2011-01-13 17:54:08 -05:00
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
2011-01-13 17:54:08 -05:00
" 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
2011-01-13 17:54:08 -05:00
filetype plugin indent on
augroup vimrcEx
autocmd!
2011-01-13 17:54:08 -05:00
" 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).
2011-01-13 17:54:08 -05:00
autocmd BufReadPost *
\ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") |
2011-01-13 17:54:08 -05:00
\ 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
2011-01-13 17:54:08 -05:00
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
2011-01-13 17:54:08 -05:00
" Softtabs, 2 spaces
set tabstop=2
set shiftwidth=2
set shiftround
2011-01-13 17:54:08 -05:00
set expandtab
" Display extra whitespace
set list listchars=tab:»·,trail,nbsp
2011-01-13 17:54:08 -05:00
" 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 ""'
nnoremap \ :Ag<SPACE>
2011-01-13 17:54:08 -05:00
endif
" Make it obvious where 80 characters is
set textwidth=80
set colorcolumn=+1
2011-01-13 17:54:08 -05:00
" Numbers
set number
set numberwidth=5
" Tab completion
" will insert tab at beginning of line,
" will use completion if not at beginning
2011-01-13 17:54:08 -05:00
set wildmode=list:longest,list:full
function! InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\<Tab>"
else
return "\<C-p>"
endif
endfunction
inoremap <Tab> <C-r>=InsertTabWrapper()<CR>
inoremap <S-Tab> <C-n>
2011-01-13 17:54:08 -05:00
2012-10-31 20:36:15 -07:00
" Switch between the last two files
nnoremap <Leader><Leader> <C-^>
2011-01-13 17:54:08 -05:00
" Get off my lawn
nnoremap <Left> :echoe "Use h"<CR>
nnoremap <Right> :echoe "Use l"<CR>
nnoremap <Up> :echoe "Use k"<CR>
nnoremap <Down> :echoe "Use j"<CR>
" vim-test mappings
nnoremap <silent> <Leader>t :TestFile<CR>
nnoremap <silent> <Leader>s :TestNearest<CR>
nnoremap <silent> <Leader>l :TestLast<CR>
nnoremap <silent> <Leader>a :TestSuite<CR>
2017-06-19 12:53:17 -05:00
nnoremap <silent> <Leader>gt :TestVisit<CR>
" Run commands that require an interactive shell
nnoremap <Leader>r :RunInInteractiveShell<Space>
2011-01-13 17:54:08 -05:00
" Treat <li> and <p> tags like the block tags they are
let g:html_indent_tags = 'li\|p'
2019-09-21 23:09:07 +02:00
" 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 <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-h> <C-w>h
nnoremap <C-l> <C-w>l
" Move between linting errors
nnoremap ]r :ALENextWrap<CR>
nnoremap [r :ALEPreviousWrap<CR>
" Map Ctrl + p to open fuzzy find (FZF)
nnoremap <c-p> :Files<cr>
" 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