Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
291 lines (249 sloc) 7.42 KB
" vim: nowrap fdm=marker
scriptencoding utf-8
if !has('nvim')
unlet! skip_defaults_vim
source $VIMRUNTIME/defaults.vim
endif
source ~/dotfiles/packages.vim
" Personal preferences not set by sensible.vim
let g:mapleader=','
set history=5000
set showcmd
set nojoinspaces
set complete-=t
" set listchars=tab:▸\ ,eol:¬
set foldlevelstart=99
set noswapfile
if has('mouse')
set mouse=nv
endif
set diffopt=filler,vertical
set ruler
if has('nvim')
set inccommand=nosplit
endif
" Define a group for autocommands
augroup vimrc
autocmd!
augroup END
function! FormatprgLocal(filter)
if !empty(v:char)
return 1
else
let l:command = v:lnum.','.(v:lnum+v:count-1).'!'.a:filter
echo l:command
execute l:command
endif
endfunction
if has('autocmd')
augroup ragtag_filetypes
autocmd!
autocmd FileType markdown call RagtagInit()
augroup END
let g:pandoc_pipeline = 'pandoc --from=html --to=markdown'
let g:pandoc_pipeline .= ' | pandoc --from=markdown --to=html'
autocmd vimrc FileType html setlocal formatexpr=FormatprgLocal(pandoc_pipeline)
endif
" Colorscheme
set termguicolors
set background=light
silent! colorscheme solarized8_light
set hidden
" Plugin configuration {{{1
" netrw.vim {{{2
let g:netrw_banner=0
" Don't show undo files in the explorer
let g:netrw_list_hide='\.un\~$'
" neomake {{{2
let g:neomake_javascript_enabled_makers = ['eslint']
if exists(':Neomake')
autocmd! vimrc BufWritePost * Neomake
endif
" if emoji#available()
" let g:neomake_warning_sign = { 'text': emoji#for('exclamation') }
" let g:neomake_error_sign = { 'text': emoji#for('x') }
" let g:neomake_info_sign = { 'text': emoji#for('8ball') }
" let g:neomake_message_sign = { 'text': emoji#for('pencil2') }
" endif
" syntastic {{{2
let g:syntastic_mode_map = {
\ 'mode': 'passive',
\ 'active_filetypes': [
\ 'javascript'
\ ],
\ 'passive_filetypes': [
\ 'html',
\ 'ruby'
\ ]
\ }
let g:syntastic_ruby_checkers=['bx rubocop', 'mri']
nnoremap ZS :SyntasticCheck<CR>
nnoremap ZT :SyntasticToggle<CR>
" Vim-ruby {{{2
" let ruby_fold=1
" Vim-rspec {{{2
map <Leader>t :w<bar>:call RunCurrentSpecFile()<CR>
map <Leader>s :w<bar>:call RunNearestSpec()<CR>
map <Leader>l :w<bar>:call RunLastSpec()<CR>
map <Leader>a :w<bar>:call RunAllSpecs()<CR>
let g:rspec_command = 'Dispatch rspec {spec}'
" Markdown {{{2
let g:markdown_fenced_languages = ['ruby', 'javascript']
" FIXME:
" Markdown files have foldmethod=syntax when both of these options are set:
" let ruby_fold=1
" let g:markdown_fenced_languages = ['ruby', 'javascript']
" to debug, run :verbose set foldmethod?
"
" Solarized8 {{{2
nnoremap <leader>B :<c-u>exe "colors" (g:colors_name =~# "dark"
\ ? substitute(g:colors_name, 'dark', 'light', '')
\ : substitute(g:colors_name, 'light', 'dark', '')
\ )<cr>
function! Solarized8Contrast(delta)
let l:schemes = map(['_low', '_flat', '', '_high'], '"solarized8_".(&background).v:val')
exe 'colors' l:schemes[((a:delta+index(l:schemes, g:colors_name)) % 4 + 4) % 4]
endfunction
nmap <leader>- :<c-u>call Solarized8Contrast(-v:count1)<cr>
nmap <leader>+ :<c-u>call Solarized8Contrast(+v:count1)<cr>
" Ctlr-P {{{2
let g:ctrlp_jump_to_buffer = 0
let g:ctrlp_working_path_mode = 0
let g:ctrlp_user_command = 'find %s -type f'
" Denite {{{2
" vim/after/plugin/denite.vim
" Ragel {{{2
augroup ragel
autocmd!
autocmd BufNewFile,BufRead *.rl setfiletype ragel
augroup END
let g:ragel_default_subtype='ruby'
" Mappings and commands {{{1
" Override defaults {{{2
nnoremap Q <Nop>
command! -nargs=0 -bang Qa qall!
command! -nargs=0 -bang QA qall!
" File opening {{{2
cnoremap <expr> %% getcmdtype() == ':' ? fnameescape(expand('%:h')).'/' : '%%'
map <leader>ew :e %%
map <leader>es :sp %%
map <leader>ev :vsp %%
map <leader>et :tabe %%
" Prompt to open file with same name, different extension
map <leader>er :e <C-R>=expand("%:r")."."<CR>
" Fix the & command in normal+visual modes {{{2
nnoremap & :&&<Enter>
xnoremap & :&&<Enter>
" Strip trailing whitespace {{{2
function! Preserve(command)
let l:save = winsaveview()
execute a:command
call winrestview(l:save)
endfunction
command! TrimWhitespace call Preserve("%s/\\s\\+$//e")
nmap _$ :TrimWhitespace<CR>
" Visual line repeat {{{2
xnoremap . :normal .<CR>
xnoremap @ :<C-u>call ExecuteMacroOverVisualRange()<CR>
function! ExecuteMacroOverVisualRange()
echo '@'.getcmdline()
execute ":'<,'>normal @".nr2char(getchar())
endfunction
" Experimental mappings {{{2
nnoremap g" /\v<<C-r>"><CR>
command! Path :call EchoPath()
function! EchoPath()
echo join(split(&path, ','), "\n")
endfunction
command! TagFiles :call EchoTags()
function! EchoTags()
echo join(split(&tags, ','), "\n")
endfunction
" let g:EasyClipUseSubstituteDefaults = 1
" nmap <silent> gs <plug>SubstituteOverMotionMap
" nmap gss <plug>SubstituteLine
" xmap gs p
" let g:EasyClipUseCutDefaults = 0
" nmap x <Plug>MoveMotionPlug
" xmap x <Plug>MoveMotionXPlug
" nmap xx <Plug>MoveMotionLinePlug
nmap cp <Plug>TransposeCharacters
nnoremap <Plug>TransposeCharacters xp
\:call repeat#set("\<Plug>TransposeCharacters")<CR>
" ember-cli {{{2
command! -nargs=* Ember :echo system('ember <args>')
if exists('*smartinput#define_rule')
call smartinput#clear_rules()
call smartinput#define_rule({
\'at': '{\%#',
\'char': '{',
\'input': '{}}<Left><Left>',
\'filetype': ['html.handlebars']
\ })
call smartinput#define_rule({
\'at': '\%#}}',
\'char': '}',
\'input': '<Right><Right>',
\'filetype': ['html.handlebars']
\ })
call smartinput#define_rule({
\'at': '}}\%#',
\'char': '}',
\'input': '',
\'filetype': ['html.handlebars']
\ })
call smartinput#define_rule({
\'at': '{{\%#}}',
\'char': '<BS>',
\'input': '<BS><BS><Del><Del>',
\'filetype': ['html.handlebars']
\ })
call smartinput#define_rule({
\'at': '{{}}\%#',
\'char': '<BS>',
\'input': '<BS><BS><BS><BS>',
\'filetype': ['html.handlebars']
\ })
endif
augroup javascript
autocmd!
autocmd FileType javascript setlocal suffixesadd+=.debug.js,.js
augroup END
let g:mustache_operators=0
augroup emoji_complete
autocmd!
autocmd FileType markdown setlocal completefunc=emoji#complete
augroup END
if exists(':terminal')
tnoremap <expr> <C-\><C-R> '<C-\><C-N>"'.nr2char(getchar()).'pi'
autocmd vimrc TermOpen * nnoremap <buffer> I I<C-a>
autocmd vimrc TermOpen * nnoremap <buffer> A A<C-e>
autocmd vimrc TermOpen * nnoremap <buffer> C i<C-k>
autocmd vimrc TermOpen * nnoremap <buffer> D i<C-k><C-\><C-n>
autocmd vimrc TermOpen * nnoremap <buffer> cc i<C-e><C-u>
autocmd vimrc TermOpen * nnoremap <buffer> dd i<C-e><C-u><C-\><C-n>
endif
" https://github.com/neovim/neovim/pull/2076#issuecomment-76998265
nnoremap <a-h> <c-w>h
nnoremap <a-j> <c-w>j
nnoremap <a-k> <c-w>k
nnoremap <a-l> <c-w>l
vnoremap <a-h> <c-\><c-n><c-w>h
vnoremap <a-j> <c-\><c-n><c-w>j
vnoremap <a-k> <c-\><c-n><c-w>k
vnoremap <a-l> <c-\><c-n><c-w>l
inoremap <a-h> <c-\><c-n><c-w>h
inoremap <a-j> <c-\><c-n><c-w>j
inoremap <a-k> <c-\><c-n><c-w>k
inoremap <a-l> <c-\><c-n><c-w>l
cnoremap <a-h> <c-\><c-n><c-w>h
cnoremap <a-j> <c-\><c-n><c-w>j
cnoremap <a-k> <c-\><c-n><c-w>k
cnoremap <a-l> <c-\><c-n><c-w>l
if has('nvim')
tnoremap <a-h> <c-\><c-n><c-w>h
tnoremap <a-j> <c-\><c-n><c-w>j
tnoremap <a-k> <c-\><c-n><c-w>k
tnoremap <a-l> <c-\><c-n><c-w>l
tnoremap <Esc> <C-\><C-n>
endif