" " Personal preference .vimrc file " Maintained by Vincent Driessen " " My personally preferred version of vim is the one with the "big" feature " set, in addition to the following configure options: " " ./configure --with-features=BIG " --enable-pythoninterp --enable-rubyinterp " --enable-enablemultibyte --enable-gui=no --with-x --enable-cscope " --with-compiledby="Vincent Driessen " " --prefix=/usr " " To start vim without using this .vimrc file, use: " vim -u NORC " " To start vim without loading any .vimrc or plugins, use: " vim -u NONE " " Use vim settings, rather then vi settings (much better!) " This must be first, because it changes other options as a side effect. set nocompatible " Use pathogen to easily modify the runtime path to include all plugins under " the ~/.vim/bundle directory filetype off " force reloading *after* pathogen loaded call pathogen#infect() call pathogen#helptags() filetype plugin indent on " enable detection, plugins and indenting in one step syntax on " Change shell set shell=bash " Vim expects a POSIX-compliant shell, which Fish (my default shell) is not " Change the mapleader from \ to , let mapleader="," let maplocalleader="\\" " Editing behaviour {{{ set showmode " always show what mode we're currently editing in set nowrap " don't wrap lines set tabstop=4 " a tab is four spaces set softtabstop=4 " when hitting , pretend like a tab is removed, even if spaces set expandtab " expand tabs by default (overloadable per file type later) set shiftwidth=4 " number of spaces to use for autoindenting set shiftround " use multiple of shiftwidth when indenting with '<' and '>' set backspace=indent,eol,start " allow backspacing over everything in insert mode set autoindent " always set autoindenting on set copyindent " copy the previous indentation on autoindenting set number " always show line numbers set showmatch " set show matching parenthesis set ignorecase " ignore case when searching set smartcase " ignore case if search pattern is all lowercase, " case-sensitive otherwise set smarttab " insert tabs on the start of a line according to " shiftwidth, not tabstop set scrolloff=4 " keep 4 lines off the edges of the screen when scrolling set virtualedit=all " allow the cursor to go in to "invalid" places set hlsearch " highlight search terms set incsearch " show search matches as you type set gdefault " search/replace "globally" (on a line) by default set listchars=tab:▸\ ,trail:·,extends:#,nbsp:· set nolist " don't show invisible characters by default, " but it is enabled for some file types (see later) set pastetoggle= " when in insert mode, press to go to " paste mode, where you can paste mass data " that won't be autoindented set mouse=a " enable using the mouse if terminal emulator " supports it (xterm does) set fileformats="unix,dos,mac" set formatoptions+=1 " When wrapping paragraphs, don't end lines " with 1-letter words (looks stupid) set nrformats= " make and play well with " zero-padded numbers (i.e. don't consider " them octal or hex) set shortmess+=I " hide the launch screen set clipboard=unnamed " normal OS clipboard interaction set autoread " automatically reload files changed outside of Vim " Toggle show/hide invisible chars nnoremap i :set list! " Toggle line numbers nnoremap N :setlocal number! " Thanks to Steve Losh for this liberating tip " See http://stevelosh.com/blog/2010/09/coming-home-to-vim nnoremap / /\v vnoremap / /\v " Speed up scrolling of the viewport slightly nnoremap 2 nnoremap 2 " }}} " Folding rules {{{ set foldenable " enable folding set foldcolumn=2 " add a fold column set foldmethod=marker " detect triple-{ style fold markers set foldlevelstart=99 " start out with everything unfolded set foldopen=block,hor,insert,jump,mark,percent,quickfix,search,tag,undo " which commands trigger auto-unfold function! MyFoldText() let line = getline(v:foldstart) let nucolwidth = &fdc + &number * &numberwidth let windowwidth = winwidth(0) - nucolwidth - 3 let foldedlinecount = v:foldend - v:foldstart " expand tabs into spaces let onetab = strpart(' ', 0, &tabstop) let line = substitute(line, '\t', onetab, 'g') let line = strpart(line, 0, windowwidth - 2 -len(foldedlinecount)) let fillcharcount = windowwidth - len(line) - len(foldedlinecount) - 4 return line . ' …' . repeat(" ",fillcharcount) . foldedlinecount . ' ' endfunction set foldtext=MyFoldText() " Mappings to easily toggle fold levels nnoremap z0 :set foldlevel=0 nnoremap z1 :set foldlevel=1 nnoremap z2 :set foldlevel=2 nnoremap z3 :set foldlevel=3 nnoremap z4 :set foldlevel=4 nnoremap z5 :set foldlevel=5 " }}} " Editor layout {{{ set termencoding=utf-8 set encoding=utf-8 set lazyredraw " don't update the display while executing macros set laststatus=2 " tell VIM to always put a status line in, even " if there is only one window set cmdheight=2 " use a status bar that is 2 rows high " }}} " Vim behaviour {{{ set hidden " hide buffers instead of closing them this " means that the current buffer can be put " to background without being written; and " that marks and undo history are preserved set switchbuf=useopen " reveal already opened files from the " quickfix window instead of opening new " buffers set history=1000 " remember more commands and search history set undolevels=1000 " use many muchos levels of undo if v:version >= 730 set undofile " keep a persistent backup file set undodir=~/.vim/.undo,~/tmp,/tmp endif set nobackup " do not keep backup files, it's 70's style cluttering set noswapfile " do not write annoying intermediate swap files, " who did ever restore from swap files anyway? set directory=~/.vim/.tmp,~/tmp,/tmp " store swap files in one of these directories " (in case swapfile is ever turned on) set viminfo='20,\"80 " read/write a .viminfo file, don't store more " than 80 lines of registers set wildmenu " make tab completion for files/buffers act like bash set wildmode=list:full " show a list when pressing tab and complete " first full match set wildignore=*.swp,*.bak,*.pyc,*.class set title " change the terminal's title set visualbell " don't beep set noerrorbells " don't beep set showcmd " show (partial) command in the last line of the screen " this also shows visual selection info set nomodeline " disable mode lines (security measure) "set ttyfast " always use a fast terminal set cursorline " underline the current line, for quick orientation " }}} " Toggle the quickfix window {{{ " From Steve Losh, http://learnvimscriptthehardway.stevelosh.com/chapters/38.html nnoremap :call QuickfixToggle() let g:quickfix_is_open = 0 function! s:QuickfixToggle() if g:quickfix_is_open cclose let g:quickfix_is_open = 0 execute g:quickfix_return_to_window . "wincmd w" else let g:quickfix_return_to_window = winnr() copen let g:quickfix_is_open = 1 endif endfunction " }}} " Toggle the foldcolumn {{{ nnoremap f :call FoldColumnToggle() let g:last_fold_column_width = 4 " Pick a sane default for the foldcolumn function! FoldColumnToggle() if &foldcolumn let g:last_fold_column_width = &foldcolumn setlocal foldcolumn=0 else let &l:foldcolumn = g:last_fold_column_width endif endfunction " }}} " Highlighting {{{ if &t_Co > 2 || has("gui_running") syntax on " switch syntax highlighting on, when the terminal has colors endif " }}} " Shortcut mappings {{{ " Since I never use the ; key anyway, this is a real optimization for almost " all Vim commands, as I don't have to press the Shift key to form chords to " enter ex mode. nnoremap ; : nnoremap ; ; " Avoid accidental hits of while aiming for noremap! nnoremap Q :q " Quickly close the current window nnoremap q :bd " Quickly close the current buffer " Use Q for formatting the current paragraph (or visual selection) vnoremap Q gq nnoremap Q gqap " set breakindent on " keep paragraph indentation when re-wrapping text " Sort paragraphs vnoremap s !sort -fgv nnoremap s vip!sort -f " make p in Visual mode replace the selected text with the yank register vnoremap p :let current_reg = @"gvdi=current_reg " Shortcut to make nnoremap mk :make " Swap implementations of ` and ' jump to markers " By default, ' jumps to the marked line, ` jumps to the marked line and " column, so swap them nnoremap ' ` nnoremap ` ' " Use the damn hjkl keys " noremap " noremap " noremap " noremap " Remap j and k to act as expected when used on long, wrapped, lines nnoremap j gj nnoremap k gk " Easy window navigation noremap h noremap j noremap k noremap l nnoremap w vl " Complete whole filenames/lines with a quicker shortcut key in insert mode inoremap inoremap " Use ,d (or ,dd or ,dj or 20,dd) to delete a line without adding it to the " yanked stack (also, in visual mode) nnoremap d "_d vnoremap d "_d " vnoremap x "_x TODODODOOo " Quick yanking to the end of the line nnoremap Y y$ " YankRing stuff let g:yankring_history_dir = '$HOME/.vim/.tmp' nnoremap r :YRShow " Edit the vimrc file nnoremap ev :e $MYVIMRC nnoremap sv :so $MYVIMRC " Clears the search register nnoremap / :nohlsearch " Pull word under cursor into LHS of a substitute (for quick search and " replace) nnoremap z :%s#\<=expand("")\># " Keep search matches in the middle of the window and pulse the line when moving " to them. nnoremap n n:call PulseCursorLine() nnoremap N N:call PulseCursorLine() " Quickly get out of insert mode without your fingers having to leave the " home row (either use 'jj' or 'jk') inoremap jj " Quick alignment of text " nnoremap al :left " nnoremap ar :right " nnoremap ac :center " Sudo to write cnoremap w!! w !sudo tee % >/dev/null " Ctrl+W to redraw nnoremap :redraw! " Jump to matching pairs easily, with Tab nnoremap % vnoremap % " Folding nnoremap za vnoremap za " Strip all trailing whitespace from a file, using ,W nnoremap W :%s/\s\+$//:let @/='' " Use The Silver Searcher over grep, iff possible if executable('ag') " Use ag over grep set grepprg=ag\ --nogroup\ --nocolor " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' " ag is fast enough that CtrlP doesn't need to cache let g:ctrlp_use_caching = 0 endif " grep/Ack/Ag for the word under cursor " vnoremap a y:grep! "\b"\b":cw " nnoremap a :grep! "\b\b" vnoremap a y:Ag :cw nnoremap a :Ag nnoremap K *N:grep! "\b\b":cw " Allow quick additions to the spelling dict nnoremap g :spellgood " Define "Ag" command command -nargs=+ -complete=file -bar Ag silent! grep! | cwindow | redraw! " bind \ (backward slash) to grep shortcut nnoremap \ :Ag " Creating folds for tags in HTML "nnoremap ft Vatzf " Reselect text that was just pasted with ,v nnoremap v V`] " }}} " NERDTree settings {{{ nnoremap n :NERDTreeFocus nnoremap m :NERDTreeClose:NERDTreeFind nnoremap N :NERDTreeClose " Store the bookmarks file let NERDTreeBookmarksFile=expand("$HOME/.vim/NERDTreeBookmarks") " Show the bookmarks table on startup let NERDTreeShowBookmarks=1 " Show hidden files, too let NERDTreeShowFiles=1 let NERDTreeShowHidden=1 " Quit on opening files from the tree let NERDTreeQuitOnOpen=1 " Highlight the selected entry in the tree let NERDTreeHighlightCursorline=1 " Use a single click to fold/unfold directories and a double click to open " files let NERDTreeMouseMode=2 " Don't display these kinds of files let NERDTreeIgnore=[ '\.pyc$', '\.pyo$', '\.py\$class$', '\.obj$', \ '\.o$', '\.so$', '\.egg$', '^\.git$', '__pycache__', '\.DS_Store' ] " }}} " vim-flake8 default configuration let g:flake8_show_in_gutter=1 " Conflict markers {{{ " highlight conflict markers match ErrorMsg '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$' " shortcut to jump to next conflict marker nnoremap c /^\(<\\|=\\|>\)\{7\}\([^=].\+\)\?$ " }}} " Filetype specific handling {{{ " only do this part when compiled with support for autocommands if has("autocmd") augroup invisible_chars "{{{ au! " Show invisible characters in all of these files autocmd filetype vim setlocal list autocmd filetype python,rst setlocal list autocmd filetype ruby setlocal list autocmd filetype javascript,css setlocal list augroup end "}}} augroup vim_files "{{{ au! " Bind to show the keyword under cursor " general help can still be entered manually, with :h autocmd filetype vim noremap :help autocmd filetype vim noremap! :help augroup end "}}} augroup html_files "{{{ au! " This function detects, based on HTML content, whether this is a " Django template, or a plain HTML file, and sets filetype accordingly fun! s:DetectHTMLVariant() let n = 1 while n < 50 && n < line("$") " check for django if getline(n) =~ '{%\s*\(extends\|load\|block\|if\|for\|include\|trans\)\>' set ft=htmldjango.html return endif let n = n + 1 endwhile " go with html set ft=html endfun " Auto-tidy selection vnoremap x :!tidy -q -i --show-errors 0 --show-body-only 1 --wrap 0 autocmd BufNewFile,BufRead *.html,*.htm,*.j2 call s:DetectHTMLVariant() " Auto-closing of HTML/XML tags let g:closetag_default_xml=1 autocmd filetype html,htmldjango let b:closetag_html_style=1 autocmd filetype html,xhtml,xml source ~/.vim/scripts/closetag.vim augroup end " }}} augroup python_files "{{{ au! " This function detects, based on Python content, whether this is a " Django file, which may enabling snippet completion for it fun! s:DetectPythonVariant() let n = 1 while n < 50 && n < line("$") " check for django if getline(n) =~ 'import\s\+\' || getline(n) =~ 'from\s\+\\s\+import' set ft=python.django "set syntax=python return endif let n = n + 1 endwhile " go with html set ft=python endfun autocmd BufNewFile,BufRead *.py call s:DetectPythonVariant() " PEP8 compliance (set 1 tab = 4 chars explicitly, even if set " earlier, as it is important) autocmd filetype python setlocal textwidth=78 autocmd filetype python match ErrorMsg '\%>120v.\+' " But disable autowrapping as it is super annoying autocmd filetype python setlocal formatoptions-=t " Folding for Python (uses syntax/python.vim for fold definitions) "autocmd filetype python,rst setlocal nofoldenable "autocmd filetype python setlocal foldmethod=expr " Python runners autocmd filetype python noremap :w:!python % autocmd filetype python inoremap :w:!python % autocmd filetype python noremap :w:!ipython % autocmd filetype python inoremap :w:!ipython % " Automatic insertion of breakpoints autocmd filetype python nnoremap bp :normal oimport pdb; pdb.set_trace() # TODO: BREAKPOINT # noqa " Toggling True/False autocmd filetype python nnoremap mmviw:s/True\\|False/\={'True':'False','False':'True'}[submatch(0)]/`m:nohlsearch " Run a quick static syntax check every time we save a Python file autocmd BufWritePost *.py call Flake8() " Defer to isort for sorting Python imports (instead of using Unix sort) autocmd filetype python nnoremap s mX:%! isort -`X augroup end " }}} augroup clojure_files "{{{ au! " Set up r to run the entire file with vim-fireplace autocmd filetype clojure nnoremap r :%Eval autocmd filetype clojure RainbowParenthesesActivate autocmd filetype clojure RainbowParenthesesLoadRound autocmd filetype clojure RainbowParenthesesLoadSquare autocmd filetype clojure RainbowParenthesesLoadBraces augroup end " }}} augroup supervisord_files "{{{ au! autocmd BufNewFile,BufRead supervisord.conf set ft=dosini augroup end " }}} augroup markdown_files "{{{ au! autocmd filetype markdown noremap p :w:!open -a 'Marked 2' % augroup end " }}} augroup ruby_files "{{{ au! augroup end " }}} augroup rst_files "{{{ au! " Auto-wrap text around 74 chars autocmd filetype rst setlocal textwidth=74 autocmd filetype rst setlocal formatoptions+=nqt autocmd filetype rst match ErrorMsg '\%>74v.\+' augroup end " }}} augroup css_files "{{{ au! autocmd filetype css,less setlocal foldmethod=marker foldmarker={,} augroup end "}}} augroup javascript_files "{{{ au! autocmd filetype javascript setlocal expandtab autocmd filetype javascript setlocal listchars=trail:·,extends:#,nbsp:· autocmd filetype javascript setlocal foldmethod=marker foldmarker={,} " Toggling True/False autocmd filetype javascript nnoremap mmviw:s/true\\|false/\={'true':'false','false':'true'}[submatch(0)]/`m:nohlsearch " Enable insertion of "debugger" statement in JS files autocmd filetype javascript nnoremap b Odebugger; augroup end "}}} augroup textile_files "{{{ au! autocmd filetype textile set tw=78 wrap " Render YAML front matter inside Textile documents as comments autocmd filetype textile syntax region frontmatter start=/\%^---$/ end=/^---$/ autocmd filetype textile highlight link frontmatter Comment augroup end "}}} augroup git_files "{{{ au! " Don't remember the last cursor position when editing commit " messages, always start on line 1 autocmd filetype gitcommit call setpos('.', [0, 1, 1, 0]) augroup end "}}} endif " }}} " Skeleton processing {{{ if has("autocmd") "if !exists('*LoadTemplate') "function LoadTemplate(file) "" Add skeleton fillings for Python (normal and unittest) files "if a:file =~ 'test_.*\.py$' "execute "0r ~/.vim/skeleton/test_template.py" "elseif a:file =~ '.*\.py$' "execute "0r ~/.vim/skeleton/template.py" "endif "endfunction "endif "autocmd BufNewFile * call LoadTemplate(@%) endif " has("autocmd") " }}} " Restore cursor position upon reopening files {{{ autocmd BufReadPost * \ if &filetype != "gitcommit" && line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal! g`\"" | \ endif " }}} " Common abbreviations / misspellings {{{ source ~/.vim/autocorrect.vim " }}} " Extra vi-compatibility {{{ " set extra vi-compatible options set cpoptions+=$ " when changing a line, don't redisplay, but put a '$' at " the end during the change set formatoptions-=o " don't start new lines w/ comment leader on pressing 'o' au filetype vim set formatoptions-=o " somehow, during vim filetype detection, this gets set " for vim files, so explicitly unset it again " }}} " Extra user or machine specific settings {{{ source ~/.vim/user.vim " }}} " Creating underline/overline headings for markup languages " Inspired by http://sphinx.pocoo.org/rest.html#sections nnoremap 1 yyPVr=jyypVr= nnoremap 2 yyPVr*jyypVr* nnoremap 3 yypVr= nnoremap 4 yypVr- nnoremap 5 yypVr^ nnoremap 6 yypVr" iab lorem Lorem ipsum dolor sit amet, consectetur adipiscing elit iab llorem Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam lacus ligula, accumsan id imperdiet rhoncus, dapibus vitae arcu. Nulla non quam erat, luctus consequat nisi iab lllorem Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam lacus ligula, accumsan id imperdiet rhoncus, dapibus vitae arcu. Nulla non quam erat, luctus consequat nisi. Integer hendrerit lacus sagittis erat fermentum tincidunt. Cras vel dui neque. In sagittis commodo luctus. Mauris non metus dolor, ut suscipit dui. Aliquam mauris lacus, laoreet et consequat quis, bibendum id ipsum. Donec gravida, diam id imperdiet cursus, nunc nisl bibendum sapien, eget tempor neque elit in tortor "set guifont=Anonymous\ for\ Powerline:h12 linespace=2 "set guifont=Droid\ Sans\ Mono:h14 linespace=0 "set guifont=Mensch\ for\ Powerline:h14 linespace=0 "set guifont=saxMono:h14 linespace=3 "set guifont=Ubuntu\ Mono:h18 linespace=3 set guifont=Source\ Code\ Pro\ Light:h10 linespace=0 if has("gui_running") " Remove toolbar, left scrollbar and right scrollbar set guioptions-=T set guioptions-=l set guioptions-=L set guioptions-=r set guioptions-=R set guifont=Source\ Code\ Pro\ Light:h13 linespace=0 else set bg=dark endif "colorscheme mustang "colorscheme mustang_silent "colorscheme wombat256 "colorscheme jellybeans colorscheme onedark " Pulse ------------------------------------------------------------------- {{{ function! PulseCursorLine() let current_window = winnr() windo set nocursorline execute current_window . 'wincmd w' setlocal cursorline redir => old_hi silent execute 'hi CursorLine' redir END let old_hi = split(old_hi, '\n')[0] let old_hi = substitute(old_hi, 'xxx', '', '') hi CursorLine guibg=#3a3a3a redraw sleep 20m hi CursorLine guibg=#4a4a4a redraw sleep 30m hi CursorLine guibg=#3a3a3a redraw sleep 30m hi CursorLine guibg=#2a2a2a redraw sleep 20m execute 'hi ' . old_hi windo set cursorline execute current_window . 'wincmd w' endfunction " }}} " Powerline configuration ------------------------------------------------- {{{ let g:Powerline_symbols = 'compatible' "let g:Powerline_symbols = 'fancy' " }}} " Python mode configuration ----------------------------------------------- {{{ " Don't run pylint on every save let g:pymode = 1 let g:pymode_breakpoint = 0 let g:pymode_breakpoint_bind = 'b' let g:pymode_doc = 0 let g:pymode_doc_bind = 'K' let g:pymode_folding = 0 let g:pymode_indent = 0 let g:pymode_lint = 0 let g:pymode_lint_checkers = ['pyflakes', 'pep8', 'mccabe'] let g:pymode_lint_cwindow = 1 let g:pymode_lint_ignore = '' let g:pymode_lint_message = 1 let g:pymode_lint_on_fly = 0 let g:pymode_lint_on_write = 0 let g:pymode_lint_select = '' let g:pymode_lint_signs = 1 let g:pymode_motion = 0 let g:pymode_options = 0 let g:pymode_paths = [] let g:pymode_quickfix_maxheight = 6 let g:pymode_quickfix_minheight = 3 let g:pymode_rope = 1 let g:pymode_rope_completion = 0 let g:pymode_rope_regenerate_on_write = 0 let g:pymode_run = 0 let g:pymode_run_bind = 'r' let g:pymode_trim_whitespaces = 0 " }}} " Ignore common directories let g:ctrlp_custom_ignore = { \ 'dir': 'node_modules\|bower_components', \ } " Invoke CtrlP, but CommandT style nnoremap t :CtrlP nnoremap . :CtrlPTag nnoremap b :CtrlPBuffer " Learn Vim Script the Hard Way Exercises "noremap - ddp "noremap _ ddkP " C-U in insert/normal mode, to uppercase the word under cursor inoremap viwUea nnoremap viwUe iabbr m@@ me@nvie.com iabbr v@@ vincent@3rdcloud.com iabbr ssig --Vincent Driessenvincent@3rdcloud.com " Quote words under cursor nnoremap " viWa"gvoi"gvo3l nnoremap ' viWa'gvoi'gvo3l " Quote current selection " TODO: This only works for selections that are created "forwardly" vnoremap " a"gvoi"gvoll vnoremap ' a'gvoi'gvoll " Use shift-H and shift-L for move to beginning/end nnoremap H 0 nnoremap L $ " Define operator-pending mappings to quickly apply commands to function names " and/or parameter lists in the current line onoremap inf :normal! 0f(hviw onoremap anf :normal! 0f(hvaw onoremap in( :normal! 0f(vi( onoremap an( :normal! 0f(va( " "Next" tag onoremap int :normal! 0f onoremap ant :normal! 0f " Function argument selection (change "around argument", change "inside argument") onoremap ia :execute "normal! ?[,(]\rwv/[),]\rh" vnoremap ia :execute "normal! ?[,(]\rwv/[),]\rh" " Split previously opened file ('#') in a split window nnoremap sh :execute "leftabove vsplit" bufname('#') nnoremap sl :execute "rightbelow vsplit" bufname('#') " Grep searches "nnoremap g :silent execute "grep! -R " . shellescape('') . " .":copen 12 "nnoremap G :silent execute "grep! -R " . shellescape('') . " .":copen 12 " Run tests inoremap w :write:!./run_tests.sh % nnoremap w :!./run_tests.sh " Rope config nnoremap A :RopeAutoImport " Switch from block-cursor to vertical-line-cursor when going into/out of " insert mode let &t_SI = "\]50;CursorShape=1\x7" let &t_EI = "\]50;CursorShape=0\x7" " Configure vim-expand-region, for easy selection precision vmap v (expand_region_expand) vmap (expand_region_shrink) " Default settings. (NOTE: Remove comments in dictionary before sourcing) let g:expand_region_text_objects = { \ 'iw' :0, \ 'i"' :0, \ 'i''' :0, \ 'a"' :0, \ 'a''' :0, \ 'i)' :1, \ 'i}' :1, \ 'i]' :1, \ 'a)' :1, \ 'a}' :1, \ 'a]' :1, \ } " HTML specific region expansions call expand_region#custom_text_objects('html', { \ 'it': 1, \ 'at': 1, \ }) " Syntastic config {{{ set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 0 let g:syntastic_check_on_wq = 0 let g:syntastic_html_checkers = [] let g:syntastic_javascript_checkers = ['jshint'] " TODO: disable 'jscs' for now, until it's sane again let g:syntastic_typescript_tsc_args = '--target ES2015' " }}} " TypeScript settings {{{ " let g:typescript_compiler_binary = 'tsc' " let g:typescript_compiler_options = '--target es2015' " }}}