summaryrefslogtreecommitdiffstats
path: root/vimrc
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2017-10-27 01:57:57 -0400
committerJesse Luehrs <doy@tozt.net>2017-10-27 03:45:26 -0400
commit8c08a76cc112cd21233551ddb515a9b3175a5416 (patch)
tree407fae69439c9ec0e36326c223c0ac85b423a31e /vimrc
parent21e2d8f8b43302538702fe3ccaed32995c146c96 (diff)
downloadconf-8c08a76cc112cd21233551ddb515a9b3175a5416.tar.gz
conf-8c08a76cc112cd21233551ddb515a9b3175a5416.zip
clean up and reorganize vimrc
Diffstat (limited to 'vimrc')
-rw-r--r--vimrc714
1 files changed, 256 insertions, 458 deletions
diff --git a/vimrc b/vimrc
index 387e6a2..2c1f9e4 100644
--- a/vimrc
+++ b/vimrc
@@ -1,237 +1,174 @@
-" based on Eidolos's .vimrc, at http://sartak.org/conf/vimrc
-
-" General options {{{
-" Miscellaneous {{{
+" options {{{
+" general {{{
set nocompatible
-
-" indentation FTW.. also plugins FTW! heh
filetype indent plugin on
-
-" automatically flush to disk when using :make, etc.
-set autowrite
-
-" automatically read in external changes if we haven't modified the buffer
+syntax on
+set modeline " some systems disable this by default
+" }}}
+" persistence {{{
+set history=10000
+if has("persistent_undo")
+ set undofile
+ set undodir=~/.cache/vim/undo
+endif
+" }}}
+" buffers {{{
set autoread
-
-" Gentoo disables modelines by default
-set modeline
-
-" always join with just one space, even between sentences
-set nojoinspaces
-
-" don't move the cursor to the start of the line when changing buffers
+set autowrite
+set confirm
+set hidden
set nostartofline
-
-" call CursorHold autocommands (and write swap files to disk) more often
-set updatetime=2000
-
-" strip leading comment characters when joining multiline comments
-set formatoptions+=j
" }}}
-" Display {{{
-" color!
-syntax on
-
-" lines, cols in status line
-set ruler
-
-" display more information in the ruler
-set rulerformat=%26(%y%r%m\ (%n)\ %.7l,%.7c\ %=\ %P%)
-
-" display the number of (characters|lines) in visual mode, also cur command
-set showcmd
-
-" don't display the current mode, since airline does that
-set noshowmode
-
-" a - terse messages (like [+] instead of [Modified]
-" o - don't show both reading and writing messages if both occur at once
-" t - truncate file names
-" T - truncate messages rather than prompting to press enter
-" W - don't show [w] when writing
-" I - no intro message when starting vim fileless
-set shortmess=aotTWI
-
-" status line
-set laststatus=2
-
-" display as much of the last line as possible if it's really long
-" also display unprintable characters as hex
+" display {{{
set display+=lastline,uhex
-
-" give three lines of context when moving the cursor around
-set scrolloff=3
-
-" don't redraw the screen during macros etc (NetHack's runmode:teleport)
set lazyredraw
-
-" highlight all matches, we'll see if this works with a different hilight
-set hlsearch
-
-" highlight matching parens for .1s
-set showmatch
-set matchtime=1
-
-" threshold for reporting number of lines changed
-set report=0
-
-" I generally don't want to have to space through things.. :)
-set nomore
-
-" word wrapping
set linebreak
-
-" only show a menu for completion, never a preview window or things like that
-set completeopt=menuone
-
-" hide the mouse in the gui while typing
-set mousehide
-
-" fold only when I ask for it damnit!
-set foldmethod=marker
-
-" visually indicate wrapped lines
+set report=0
+set scrolloff=3
set showbreak=>
-
-" enable concealing
+set showcmd
if has('conceal')
- set conceallevel=2 concealcursor=i
+ set conceallevel=2
endif
" }}}
-" Improve power of commands {{{
-" backspace over autoindent, end of line (to join lines), and preexisting test
+" editing {{{
+set autoindent
set backspace=indent,eol,start
-
-" tab completion in ex mode
-set wildmenu
-
-" when doing tab completion, ignore files that match any of these
+set cinoptions+=:0,l1,g0,(0,W1s
+set expandtab
+set formatoptions+=j
+set nojoinspaces
+set shiftround
+set shiftwidth=4
+set softtabstop=-1
+" }}}
+" command mode {{{
set wildignore+=*.o,.git/*,.svn/*,blib/*
-
-" tab completions should ignore case
+set wildmenu
+set wildmode=longest,list,full
if exists("+wildignorecase")
set wildignorecase
endif
-
-" remember lotsa fun stuff
-set viminfo=!,'1000,f1,/1000,:1000,<1000,@1000,h,n~/.viminfo
-
-" more stuff to remember
-set history=1000
-
-" add : as a filename character (allow gf to work with http://foo.bar/)
-set isfname+=:
-
-" tab completion stuff for the command line
-set wildmode=longest,list,full
-
-" always make the help window cover the entire screen
-set helpheight=9999
-
-" ; is easier to reach than \
-let mapleader = ';'
-let maplocalleader = ';'
-
-" enable persistent undo
-if has("persistent_undo")
- set undofile
- set undodir=~/.cache/vim/undo
-endif
-
-" case insensitive searching, unless i type a capital letter
+" }}}
+" search {{{
+set hlsearch
set ignorecase
set smartcase
" }}}
-" Make vim less whiny {{{
-" :bn with a change in the current buffer? no prob!
-set hidden
-
-" no bells whatsoever
+" terminal stuff {{{
set vb t_vb=
-
-" if you :q with changes it asks you if you want to continue or not
-set confirm
-
-" 50 milliseconds for escape timeout instead of 1000
set ttimeoutlen=50
-
-" send more data to the terminal in a way that makes the screen update faster
-" more importantly, wraps lines at the terminal level so that copying a single
-" line that spans multiple screen lines works properly
set ttyfast
" }}}
-" Indentation {{{
-" normal sized tabs!
-set tabstop=8
-
-" set to what i like (see #2 in :help tabstop)
-set shiftwidth=4
-
-" if it looks like a tab, we can delete it like a tab
-set softtabstop=-1
-
-" no tabs! spaces only..
-set expandtab
-
-" < and > will hit indentation levels instead of always -4/+4
-set shiftround
-
-" new line has indentation equal to previous line
-set autoindent
-
-" configure cindent for my coding style
-set cinoptions+=:0,l1,g0,(0,W1s
-" }}}
-" }}}
-" Colors {{{
-" default colorscheme {{{
-if has("gui_running")
- colorscheme torte
-else
- set background=light
- set t_Co=256
-endif
-" }}}
-" word completion menu {{{
-highlight Pmenu ctermfg=grey ctermbg=darkblue guifg=grey guibg=darkblue
-highlight PmenuSel ctermfg=red ctermbg=darkblue guifg=red guibg=darkblue
-highlight PmenuSbar ctermbg=cyan guibg=cyan
-highlight PmenuThumb ctermfg=red guifg=red
-
-highlight WildMenu ctermfg=grey ctermbg=darkblue guifg=grey guibg=darkblue
" }}}
-" folding {{{
-highlight Folded ctermbg=black ctermfg=darkgreen guibg=black guifg=green
+" colors {{{
+" general {{{
+set background=light
+set t_Co=256
" }}}
-" hlsearch {{{
-highlight Search NONE ctermfg=red guifg=red
+" recolorings {{{
+highlight Pmenu ctermfg=grey ctermbg=darkblue guifg=grey guibg=darkblue
+highlight PmenuSel ctermfg=red ctermbg=darkblue guifg=red guibg=darkblue
+highlight PmenuSbar ctermbg=cyan guibg=cyan
+highlight PmenuThumb ctermfg=red guifg=red
+highlight WildMenu ctermfg=grey ctermbg=darkblue guifg=grey guibg=darkblue
+highlight Folded ctermfg=darkgreen ctermbg=black guifg=green guibg=black
+highlight Search NONE ctermfg=red guifg=red
" }}}
-" color end of line whitespace {{{
+" highlight end of line whitespace {{{
autocmd InsertEnter * syn clear EOLWS | syn match EOLWS excludenl /\s\+\%#\@!$/
autocmd InsertLeave * syn clear EOLWS | syn match EOLWS excludenl /\s\+$/
highlight EOLWS ctermbg=red guibg=red
" }}}
-" conflict markers {{{
+" highlight diff conflict markers {{{
match ErrorMsg '^\(<\||\|=\|>\)\{7\}\([^=].\+\)\?$'
" }}}
-" fonts {{{
-if has('win32') || has('win64') || has('win32unix')
- set guifont=Lucida_Console
-elseif has('unix')
- set guifont=Monospace\ 8
-endif
" }}}
+" bindings {{{
+" general {{{
+let mapleader = ';'
+let maplocalleader = ';'
" }}}
-" Autocommands {{{
+" keep the current selection when indenting {{{
+xnoremap < <gv
+xnoremap > >gv
+" }}}
+" M to :make {{{
+noremap <silent>M :<C-u>make<CR><CR><C-W>k
+" }}}
+" F11 for spell checking {{{
+function! s:spell()
+ if !exists("s:spell_check") || s:spell_check == 0
+ let s:spell_check = 1
+ setlocal spell spelllang=en_us
+ else
+ let s:spell_check = 0
+ setlocal spell spelllang=
+ endif
+endfunction
+noremap <silent><F11> :<C-u>call <SID>spell()<CR>
+inoremap <silent><F11> <C-o>:call <SID>spell()<CR>
+" }}}
+" arrow keys {{{
+noremap <up> gk
+noremap <down> gj
+inoremap <up> <C-o>gk
+inoremap <down> <C-o>gj
+" }}}
+" editing binary files {{{
+nnoremap <C-B> :%!xxd<CR>
+nnoremap <C-R> :%!xxd -r<CR>
+" }}}
+" auto-append closing characters {{{
+for pair in [['(', ')'], ['{', '}'], ['[', ']']]
+ exe "inoremap " . pair[0] . " " . pair[0] . pair[1] . "<Left>"
+ exe "inoremap " . pair[0] . "<CR> " . pair[0] . "<CR>" . pair[1] . "<Esc>O"
+ exe "inoremap <expr> " . pair[1] . " strpart(getline('.'), col('.')-1, 1) == '" . pair[1] . "' ? '<Right>' : '" . pair[1] . "'"
+endfor
+inoremap <expr> ' strpart(getline('.'), col('.')-1, 1) == "\'" ? "\<Right>" : col('.') == 1 \|\| match(strpart(getline('.'), col('.')-2, 1), '\W') != -1 ? "\'\'\<Left>" : "\'"
+inoremap <expr> " strpart(getline('.'), col('.')-1, 1) == "\"" ? "\<Right>" : "\"\"\<Left>"
+" }}}
+" tab for completion {{{
+inoremap <expr> <Tab> strpart(getline('.'), 0, col('.')-1) =~ '^\s*$' ? "\<Tab>" : "\<C-n>"
+inoremap <S-Tab> <C-p>
+" }}}
+" easier tag traversal {{{
+nnoremap <CR> <C-]>
+nnoremap <BS> <C-T>
+autocmd CmdWinEnter * nnoremap <buffer><CR> <CR>
+" }}}
+" buffer switching {{{
+nnoremap <silent>H :bp<CR>
+nnoremap <silent>L :bn<CR>
+" }}}
+" fixups for my keyboard remappings {{{
+nmap <silent>) 0
+nmap <silent>g) g0
+nmap <Bar> \
+" }}}
+" miscellaneous {{{
+nnoremap e c
+nnoremap E C
+nnoremap r <C-r>
+nnoremap Y y$
+nnoremap , :
+xnoremap , :
+nnoremap ! :!
+xnoremap ! :!
+autocmd BufEnter * exe "nnoremap T :e " . expand('%')
+nnoremap <silent><Leader>/ :nohl<CR>
+nnoremap <silent><Tab> :w<CR>
+nnoremap <silent>\ :q<CR>
+nnoremap <silent><C-D> :bd<CR>
+" }}}
+" }}}
+" hooks {{{
" When editing a file, always jump to the last cursor position {{{
autocmd BufReadPost *
\ if &filetype != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
" }}}
-" Update ctags after writing {{{
-autocmd BufWritePost * if filereadable('tags') | silent exe "!ctags -a %" | redraw | endif
-" }}}
" Prompt to create directories if they don't exist {{{
autocmd BufNewFile * :call <SID>ensure_dir_exists()
function! s:ensure_dir_exists ()
@@ -252,10 +189,131 @@ function! s:ask_quit (msg, proposed_action)
endif
endfunction
" }}}
-" Try harder to keep syntax highlighting in sync {{{
-autocmd BufEnter,CursorHold,CursorHoldI * syntax sync fromstart
" }}}
-" Update zsh history when editing a new file - see 'vim' wrapper in .zshrc {{{
+" plugin configuration {{{
+" ale {{{
+let g:ale_lint_on_text_changed = 'normal'
+let g:ale_lint_on_insert_leave = 1
+let g:ale_history_enabled = 0
+let g:ale_history_log_output = 0
+" }}}
+" airline
+" commentary {{{
+map <silent><Leader>x :Commentary<CR>
+" }}}
+" denite {{{
+autocmd VimEnter * call denite#custom#map('insert', '<Tab>', '<denite:move_to_next_line>')
+autocmd VimEnter * call denite#custom#map('insert', '<S-Tab>', '<denite:move_to_previous_line>')
+if executable('ag')
+ autocmd VimEnter * call denite#custom#var('file_rec', 'command', ['ag', '--hidden', '-l', '.'])
+ autocmd VimEnter * call denite#custom#var('grep', 'command', ['ag'])
+ autocmd VimEnter * call denite#custom#var('grep', 'default_opts', ['--hidden'])
+ autocmd VimEnter * call denite#custom#var('grep', 'recursive_opts', [])
+ autocmd VimEnter * call denite#custom#var('grep', 'pattern_opt', [])
+ autocmd VimEnter * call denite#custom#var('grep', 'separator', [])
+endif
+nnoremap <silent>t :Denite -direction=dynamictop buffer file_rec<CR>
+nnoremap <silent>b :Denite -direction=dynamictop buffer<CR>
+nnoremap <silent>ff :Denite -direction=dynamictop grep:.::!<CR>
+nnoremap <silent>fh :Denite -direction=dynamictop help<CR>
+nnoremap <silent>ft :Denite -direction=dynamictop filetype<CR>
+nnoremap <silent>f/ :Denite -direction=dynamictop line<CR>
+" }}}
+" ft-bzl
+" git
+" go
+" gundo {{{
+if has("python")
+ nnoremap <silent>U :silent GundoToggle<CR>
+ let g:gundo_help = 0
+ let g:gundo_preview_bottom = 1
+else
+ let g:gundo_disable = 1
+endif
+" }}}
+" ledger
+" multiple-cursors
+" neosnippet {{{
+let g:neosnippet#snippets_directory = '~/.vim/snippets'
+let g:neosnippet#disable_runtime_snippets = { '_' : 1 }
+
+let i_tab = maparg("<Tab>", "i", 0, 1)
+let i_stab = maparg("<S-Tab>", "i", 0, 1)
+let s_tab = maparg("<Tab>", "s", 0, 1)
+imap <expr><Tab>
+ \ neosnippet#expandable_or_jumpable() ?
+ \ "\<Plug>(neosnippet_expand_or_jump)" :
+ \ i_tab["expr"] ? eval(i_tab["rhs"]) : eval("\"\\" . i_tab["rhs"] . "\"")
+imap <expr><S-Tab>
+ \ neosnippet#expandable_or_jumpable() ?
+ \ "\<Plug>(neosnippet_expand_or_jump)" :
+ \ i_stab["expr"] ? eval(i_stab["rhs"]) : eval("\"\\" . i_stab["rhs"] . "\"")
+smap <expr><Tab>
+ \ neosnippet#expandable_or_jumpable() ?
+ \ "\<Plug>(neosnippet_expand_or_jump)" :
+ \ s_tab["expr"] ? eval(s_tab["rhs"]) : eval("\"\\" . s_tab["rhs"] . "\"")
+" }}}
+" perl
+" puppet
+" rainbow {{{
+let g:rainbow = 1
+let g:rainbow_paren = 1
+let g:rainbow_brace = 1
+" }}}
+" rust
+" startify {{{
+let g:startify_list_order = ['dir', 'bookmarks', 'commands']
+let g:startify_files_number = 7
+let g:startify_commands = [
+ \ {'t': ['Open file', 'Denite -direction=dynamictop buffer file_rec']},
+ \ {'ff': ['Grep', 'Denite -direction=dynamictop grep:.::!']},
+ \ {'fh': ['Help', 'Denite -direction=dynamictop help']},
+ \ ]
+let g:startify_change_to_vcs_root = 1
+let g:startify_custom_indices = [
+ \'!', '@', '#', '$', '%', '^', '&', '*', '(', ')'
+ \]
+let g:startify_custom_header = []
+let fortune = system('fortune -n200 -s ~/.fortune | grep -v -E "^$"')
+let g:startify_custom_footer = [''] + map(split(fortune, '\n'), '" ".v:val')
+let g:startify_skiplist = ['^/usr/share/vim', '/.git/']
+for file in [ '.gitignore', expand('~/.gitignore') ]
+ if filereadable(file)
+ for line in readfile(file)
+ let line = substitute(line, '#.*', '', '')
+ if line != '' && line[0] != '!'
+ let line = substitute(line, "[~.]", "\\\\&", 'g')
+ let line = substitute(line, "\\*\\*", ".*", 'g')
+ let line = substitute(line, "\\*", "[^/]*", 'g')
+ let line = substitute(line, "?", ".", 'g')
+ call add(g:startify_skiplist, line)
+ endif
+ endfor
+ endif
+endfor
+" }}}
+" terraform {{{
+let g:terraform_fmt_on_save = 1
+" }}}
+" textobj {{{
+let g:Textobj_defs = [
+ \['/', 'Textobj_paired', '/'],
+ \['\|', 'Textobj_paired', '\|'],
+ \['f', 'Textobj_fold'],
+ \[',', 'Textobj_arg'],
+\]
+" }}}
+" Load plugins that don't use vim's format {{{
+runtime macros/matchit.vim
+" just loading this directly from the plugin directory fails because language
+" syntax files override the highlighting
+" using BufWinEnter because that is run after modelines are run (so it catches
+" modelines which update highlighting)
+autocmd BufWinEnter,FileType * runtime plugin/rainbow_paren.vim
+" }}}
+" }}}
+" things that should be plugins {{{
+" update zsh history when editing a new file - see 'vim' wrapper in .zshrc {{{
if $SHELL =~ 'zsh' && exists('g:_zsh_hist_fname')
let s:initial_files = {}
@@ -322,37 +380,6 @@ if $SHELL =~ 'zsh' && exists('g:_zsh_hist_fname')
endfunction
endif
" }}}
-" start with the current fold open {{{
-autocmd BufReadPost * normal zv
-" }}}
-" disable syntax highlighting for huge files (it's really slow) {{{
-autocmd BufEnter * if line('$') > 20000 | syntax off | endif
-" }}}
-" regularly check for autoread {{{
-autocmd BufEnter,CursorHold,CursorHoldI * silent! checktime
-" }}}
-" }}}
-" Remappings {{{
-" Keep the current selection when indenting (thanks cbus) {{{
-xnoremap < <gv
-xnoremap > >gv
-" }}}
-" M to :make {{{
-noremap <silent>M :<C-u>make<CR><CR><C-W>k
-" }}}
-" Painless spell checking (F11) {{{
-function! s:spell()
- if !exists("s:spell_check") || s:spell_check == 0
- let s:spell_check = 1
- setlocal spell spelllang=en_us
- else
- let s:spell_check = 0
- setlocal spell spelllang=
- endif
-endfunction
-noremap <silent><F11> :<C-u>call <SID>spell()<CR>
-inoremap <silent><F11> <C-o>:call <SID>spell()<CR>
-" }}}
" diff between current file and its original state {{{
let s:foldmethod = &foldmethod
let s:foldenable = &foldenable
@@ -419,13 +446,7 @@ nnoremap <silent>ds :call <SID>diffstart('read # <bar> normal ggdd')<CR>
nnoremap <silent>dc :call <SID>diffstart('call append(0, split(s:vcs_orig(expand("#:.")), "\n", 1)) <bar> normal Gdddd')<CR>
nnoremap <silent>de :call <SID>diffstop()<CR>
" }}}
-" Arrow keys {{{
-noremap <up> gk
-noremap <down> gj
-inoremap <up> <C-o>gk
-inoremap <down> <C-o>gj
-" }}}
-" Nopaste {{{
+" nopaste {{{
function! s:nopaste(visual)
if a:visual
silent exe "normal gv:!nopaste\<CR>"
@@ -484,228 +505,5 @@ endfunction
nnoremap <silent>K :call Help(0, [], '<SID>man')<CR>
xnoremap <silent>K :call Help(1, [], '<SID>man')<CR>
" }}}
-" ;= to align = signs {{{
-function! s:align_assignments()
- " Patterns needed to locate assignment operators...
- let ASSIGN_OP = '[-+*/%|&]\?=\@<!=[=~]\@!'
- let ASSIGN_LINE = '^\(.\{-}\)\s*\(' . ASSIGN_OP . '\)\(.*\)$'
-
- " Locate block of code to be considered (same indentation, no blanks)
- let indent_pat = '^' . matchstr(getline('.'), '^\s*') . '\S'
- let firstline = search('^\%('. indent_pat . '\)\@!','bnW') + 1
- let lastline = search('^\%('. indent_pat . '\)\@!', 'nW') - 1
- if lastline < 0
- let lastline = line('$')
- endif
-
- " Decompose lines at assignment operators...
- let lines = []
- for linetext in getline(firstline, lastline)
- let fields = matchlist(linetext, ASSIGN_LINE)
- call add(lines, fields[1:3])
- endfor
-
- " Determine maximal lengths of lvalue and operator...
- let op_lines = filter(copy(lines),'!empty(v:val)')
- let max_lval = max( map(copy(op_lines), 'strlen(v:val[0])') ) + 1
- let max_op = max( map(copy(op_lines), 'strlen(v:val[1])' ) )
-
- " Recompose lines with operators at the maximum length...
- let linenum = firstline
- for line in lines
- if !empty(line)
- let newline
- \ = printf("%-*s%*s%s", max_lval, line[0], max_op, line[1], line[2])
- call setline(linenum, newline)
- endif
- let linenum += 1
- endfor
-endfunction
-nnoremap <silent><Leader>= :call <SID>align_assignments()<CR>
-" fix this to work in visual mode properly
-"xnoremap <silent><Leader>= :call <SID>align_assignments()<CR>
-" }}}
-" editing binary files {{{
-nnoremap <C-B> :%!xxd<CR>
-nnoremap <C-R> :%!xxd -r<CR>
-" }}}
-" keystroke reducers {{{
-" tags
-nnoremap <CR> <C-]>
-nnoremap <BS> <C-T>
-autocmd CmdWinEnter * nnoremap <buffer><CR> <CR>
-
-" 'e' instead of 'c' for change
-nnoremap e c
-nnoremap E C
-
-" 'r' instead of '^R' for redo
-nnoremap r <C-r>
-
-" buffer switching
-nnoremap <silent>H :bp<CR>
-nnoremap <silent>L :bn<CR>
-
-" clear the search highlight
-nnoremap <silent><Leader>/ :nohl<CR>
-
-" easier commands
-nnoremap , :
-xnoremap , :
-nnoremap ! :!
-xnoremap ! :!
-
-" writing, quitting
-nnoremap <silent><Tab> :w<CR>
-nnoremap <silent>\ :q<CR>
-nnoremap <silent><C-D> :bd<CR>
-
-" allow some commands to work regardless of keyboard mode
-nmap <silent>) 0
-nmap <silent>g) g0
-nmap <Bar> \
-" }}}
-" auto-append closing characters {{{
-for pair in [['(', ')'], ['{', '}'], ['[', ']']]
- exe "inoremap " . pair[0] . " " . pair[0] . pair[1] . "<Left>"
- exe "inoremap " . pair[0] . "<CR> " . pair[0] . "<CR>" . pair[1] . "<Esc>O"
- exe "inoremap <expr> " . pair[1] . " strpart(getline('.'), col('.')-1, 1) == '" . pair[1] . "' ? '<Right>' : '" . pair[1] . "'"
-endfor
-inoremap <expr> ' strpart(getline('.'), col('.')-1, 1) == "\'" ? "\<Right>" : col('.') == 1 \|\| match(strpart(getline('.'), col('.')-2, 1), '\W') != -1 ? "\'\'\<Left>" : "\'"
-inoremap <expr> " strpart(getline('.'), col('.')-1, 1) == "\"" ? "\<Right>" : "\"\"\<Left>"
-" }}}
-" tab for completion {{{
-inoremap <expr> <Tab> strpart(getline('.'), 0, col('.')-1) =~ '^\s*$' ? "\<Tab>" : "\<C-n>"
-inoremap <S-Tab> <C-p>
-" }}}
-" Miscellaneous {{{
-" have Y behave analogously to D rather than to dd
-nnoremap Y y$
-
-nmap <silent>g_ g0
-
-autocmd BufEnter * exe "nnoremap T :e " . expand('%')
-" }}}
-" }}}
-" Plugins {{{
-" ale {{{
-let g:ale_lint_on_text_changed = 'normal'
-let g:ale_lint_on_insert_leave = 1
-let g:ale_history_enabled = 0
-let g:ale_history_log_output = 0
-" }}}
-" airline
-" commentary {{{
-map <silent><Leader>x :Commentary<CR>
-" }}}
-" denite {{{
-autocmd VimEnter * call denite#custom#map('insert', '<Tab>', '<denite:move_to_next_line>')
-autocmd VimEnter * call denite#custom#map('insert', '<S-Tab>', '<denite:move_to_previous_line>')
-if executable('ag')
- autocmd VimEnter * call denite#custom#var('file_rec', 'command', ['ag', '--hidden', '-l', '.'])
- autocmd VimEnter * call denite#custom#var('grep', 'command', ['ag'])
- autocmd VimEnter * call denite#custom#var('grep', 'default_opts', ['--hidden'])
- autocmd VimEnter * call denite#custom#var('grep', 'recursive_opts', [])
- autocmd VimEnter * call denite#custom#var('grep', 'pattern_opt', [])
- autocmd VimEnter * call denite#custom#var('grep', 'separator', [])
-endif
-nnoremap <silent>t :Denite -direction=dynamictop buffer file_rec<CR>
-nnoremap <silent>b :Denite -direction=dynamictop buffer<CR>
-nnoremap <silent>ff :Denite -direction=dynamictop grep:.::!<CR>
-nnoremap <silent>fh :Denite -direction=dynamictop help<CR>
-nnoremap <silent>ft :Denite -direction=dynamictop filetype<CR>
-nnoremap <silent>f/ :Denite -direction=dynamictop line<CR>
-" }}}
-" ft-bzl
-" git
-" go
-" gundo {{{
-if has("python")
- nnoremap <silent>U :silent GundoToggle<CR>
- let g:gundo_help = 0
- let g:gundo_preview_bottom = 1
-else
- let g:gundo_disable = 1
-endif
-" }}}
-" ledger
-" multiple-cursors
-" neosnippet {{{
-let g:neosnippet#snippets_directory = '~/.vim/snippets'
-let g:neosnippet#disable_runtime_snippets = { '_' : 1 }
-
-let i_tab = maparg("<Tab>", "i", 0, 1)
-let i_stab = maparg("<S-Tab>", "i", 0, 1)
-let s_tab = maparg("<Tab>", "s", 0, 1)
-imap <expr><Tab>
- \ neosnippet#expandable_or_jumpable() ?
- \ "\<Plug>(neosnippet_expand_or_jump)" :
- \ i_tab["expr"] ? eval(i_tab["rhs"]) : eval("\"\\" . i_tab["rhs"] . "\"")
-imap <expr><S-Tab>
- \ neosnippet#expandable_or_jumpable() ?
- \ "\<Plug>(neosnippet_expand_or_jump)" :
- \ i_stab["expr"] ? eval(i_stab["rhs"]) : eval("\"\\" . i_stab["rhs"] . "\"")
-smap <expr><Tab>
- \ neosnippet#expandable_or_jumpable() ?
- \ "\<Plug>(neosnippet_expand_or_jump)" :
- \ s_tab["expr"] ? eval(s_tab["rhs"]) : eval("\"\\" . s_tab["rhs"] . "\"")
-" }}}
-" perl
-" puppet
-" rainbow {{{
-let g:rainbow = 1
-let g:rainbow_paren = 1
-let g:rainbow_brace = 1
-" }}}
-" rust
-" startify {{{
-let g:startify_list_order = ['dir', 'bookmarks', 'commands']
-let g:startify_files_number = 7
-let g:startify_commands = [
- \ {'t': ['Open file', 'Denite -direction=dynamictop buffer file_rec']},
- \ {'ff': ['Grep', 'Denite -direction=dynamictop grep:.::!']},
- \ {'fh': ['Help', 'Denite -direction=dynamictop help']},
- \ ]
-let g:startify_change_to_vcs_root = 1
-let g:startify_custom_indices = [
- \'!', '@', '#', '$', '%', '^', '&', '*', '(', ')'
- \]
-let g:startify_custom_header = []
-let fortune = system('fortune -n200 -s ~/.fortune | grep -v -E "^$"')
-let g:startify_custom_footer = [''] + map(split(fortune, '\n'), '" ".v:val')
-let g:startify_skiplist = ['^/usr/share/vim', '/.git/']
-for file in [ '.gitignore', expand('~/.gitignore') ]
- if filereadable(file)
- for line in readfile(file)
- let line = substitute(line, '#.*', '', '')
- if line != '' && line[0] != '!'
- let line = substitute(line, "[~.]", "\\\\&", 'g')
- let line = substitute(line, "\\*\\*", ".*", 'g')
- let line = substitute(line, "\\*", "[^/]*", 'g')
- let line = substitute(line, "?", ".", 'g')
- call add(g:startify_skiplist, line)
- endif
- endfor
- endif
-endfor
-" }}}
-" terraform {{{
-let g:terraform_fmt_on_save = 1
-" }}}
-" textobj {{{
-let g:Textobj_defs = [
- \['/', 'Textobj_paired', '/'],
- \['\|', 'Textobj_paired', '\|'],
- \['f', 'Textobj_fold'],
- \[',', 'Textobj_arg'],
-\]
-" }}}
-" Load plugins that don't use vim's format {{{
-runtime macros/matchit.vim
-" just loading this directly from the plugin directory fails because language
-" syntax files override the highlighting
-" using BufWinEnter because that is run after modelines are run (so it catches
-" modelines which update highlighting)
-autocmd BufWinEnter,FileType * runtime plugin/rainbow_paren.vim
-" }}}
" }}}
+" vim: fdm=marker