]> git.r.bdr.sh - rbdr/dotfiles/blobdiff - vimrc
Add local vimrc support
[rbdr/dotfiles] / vimrc
diff --git a/vimrc b/vimrc
index bc9d40ba4edd220f932b262660a13a8b3a08a3b9..01bb79b52d1b04328069e0da6a16bd60818ae6cb 100755 (executable)
--- a/vimrc
+++ b/vimrc
@@ -1,5 +1,9 @@
 set nocompatible
 
+"
+" Basics
+"
+
 set number
 set ruler
 syntax on
@@ -28,18 +32,11 @@ set wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/*
 " Status bar
 set laststatus=2
 
-" Without setting this, ZoomWin restores windows in a way that causes
-" equalalways behavior to be triggered the next time CommandT is used.
-" This is likely a bludgeon to solve some other issue, but it works
-set noequalalways
-
-" NERDTree configuration
-let NERDTreeIgnore=['\.pyc$', '\.rbc$', '\~$']
-map <Leader>n :NERDTreeToggle<CR>
+" allow backspacing over everything in insert mode
+set backspace=indent,eol,start
 
-" CTags
-map <Leader>rt :!ctags --extra=+f -R *<CR><CR>
-map <C-\> :tnext<CR>
+" Show (partial) command in the status line
+set showcmd
 
 " Remember last location in file
 if has("autocmd")
@@ -47,16 +44,9 @@ if has("autocmd")
     \| exe "normal g'\"" | endif
 endif
 
-function s:setupWrapping()
-  set wrap
-  set wrapmargin=2
-  set textwidth=72
-endfunction
-
-function s:setupMarkup()
-  call s:setupWrapping()
-  map <buffer> <Leader>p :Hammer<CR>
-endfunction
+"
+" File Type Config
+"
 
 " make uses real tabs
 au FileType make set noexpandtab
@@ -64,24 +54,33 @@ au FileType make set noexpandtab
 " Thorfile, Rakefile, Vagrantfile and Gemfile are Ruby
 au BufRead,BufNewFile {Gemfile,Rakefile,Vagrantfile,Thorfile,config.ru}    set ft=ruby
 
-" md, markdown, and mk are markdown and define buffer-local preview
-au BufRead,BufNewFile *.{md,markdown,mdown,mkd,mkdn} call s:setupMarkup()
-
-" add json syntax highlighting
-au BufNewFile,BufRead *.json set ft=javascript
-
-au BufRead,BufNewFile *.txt call s:setupWrapping()
-
 " make Python follow PEP8 ( http://www.python.org/dev/peps/pep-0008/ )
 au FileType python set softtabstop=4 tabstop=4 shiftwidth=4 textwidth=79
 
-" allow backspacing over everything in insert mode
-set backspace=indent,eol,start
+" snes syntax highlighting
+au BufNewFile,BufRead *.asm,*.s set filetype=snes"
 
 " load the plugin and indent settings for the detected filetype
 filetype plugin indent on
 filetype plugin on
 
+" Directories for swp files
+set backupdir=~/.vim/.backup
+set directory=~/.vim/.backup
+
+" Include local vimrc
+if filereadable(expand("~/.vimrc.local"))
+  source ~/.vimrc.local
+endif
+
+"
+" Tool Configs
+"
+
+" CTags
+map <Leader>rt :!ctags --extra=+f -R *<CR><CR>
+map <C-\> :tnext<CR>
+
 " Opens an edit command with the path of the currently edited file filled in
 " Normal mode: <Leader>e
 map <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR>
@@ -90,69 +89,73 @@ map <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR>
 " Normal mode: <Leader>t
 map <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR>
 
-" Inserts the path of the currently edited file into a command
-" Command mode: Ctrl+P
-cmap <C-P> <C-R>=expand("%:p:h") . "/" <CR>
-
-" Unimpaired configuration
-" Bubble single lines
-nmap <C-Up> [e
-nmap <C-Down> ]e
-" Bubble multiple lines
-vmap <C-Up> [egv
-vmap <C-Down> ]egv
-
-" Enable syntastic syntax checking
-let g:syntastic_enable_signs=1
-let g:syntastic_quiet_warnings=1
-
-" gist-vim defaults
-if has("mac")
-  let g:gist_clip_command = 'pbcopy'
-elseif has("unix")
-  let g:gist_clip_command = 'xclip -selection clipboard'
-endif
-let g:gist_detect_filetype = 1
-let g:gist_open_browser_after_post = 1
+" % to bounce from do to end etc.
+runtime! macros/matchit.vim
 
-" Use modeline overrides
-set modeline
-set modelines=10
+" Dank Mono Italics
+highlight Keyword cterm=italic
 
-" Default color scheme
-set t_Co=256
-color molokai
+" FZF config
+set rtp+=$FZF_VIM_PATH
 
-" Directories for swp files
-set backupdir=~/.vim/.backup
-set directory=~/.vim/.backup
+" Inserts the path of the currently edited file into a command
+noremap <C-P> :FZF <CR>
 
-" Turn off jslint errors by default
-let g:JSLintHighlightErrorLine = 0
+let g:fzf_layout = { 'down': '40%' }
 
-" MacVIM shift+arrow-keys behavior (required in .vimrc)
-let macvim_hig_shift_movement = 1
+" Auto Pairs
+let g:AutoPairsMultilineClose = 0
 
-" % to bounce from do to end etc.
-runtime! macros/matchit.vim
+" ALE config
+let g:ale_linter_aliases = {'svelte': ['css', 'javascript']}
+let g:ale_linters = {
+      \'javascript': ['eslint'],
+      \'svelte': ['stylelint', 'eslint']
+      \}
+let g:ale_fixers = {
+      \'javascript': ['eslint'],
+      \'svelte': ['eslint']
+      \}
+let g:ale_fix_on_save = 1
 
-" Show (partial) command in the status line
-set showcmd
+" Svelte Config
+let g:vim_svelte_plugin_use_typescript = 1
 
-" Include user's local vim config
-if filereadable(expand("~/.vimrc.local"))
-  source ~/.vimrc.local
-endif
+" Deoplete config
+let g:deoplete#enable_at_startup = 1
+inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"
+inoremap <expr><S-tab> pumvisible() ? "\<c-p>" : "\<tab>"
 
-" Mapping for TagBar
-nmap <F8> :TagbarToggle<CR>
-let g:tagbar_ctags_bin="/usr/local/bin/ctags"
+"
+" A E S T H E T I C S
+"
 
 " Color Column
-set colorcolumn=81
+let &colorcolumn="80,150"
 
-" Add Pathogen
-call pathogen#infect()
+" Default color scheme
+set termguicolors
+color rbdr
+
+" Map colors to vim colors
+let g:fzf_colors =
+\ { 'fg':      ['fg', 'Normal'],
+  \ 'bg':      ['bg', 'Normal'],
+  \ 'hl':      ['fg', 'Comment'],
+  \ 'fg+':     ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
+  \ 'bg+':     ['bg', 'CursorLine', 'CursorColumn'],
+  \ 'hl+':     ['fg', 'Statement'],
+  \ 'info':    ['fg', 'PreProc'],
+  \ 'border':  ['fg', 'Ignore'],
+  \ 'prompt':  ['fg', 'Conditional'],
+  \ 'pointer': ['fg', 'Exception'],
+  \ 'marker':  ['fg', 'Keyword'],
+  \ 'spinner': ['fg', 'Label'],
+  \ 'header':  ['fg', 'Comment'] }
+
+"
+" Editing Shortcuts
+"
 
 " Folding Settings
 set foldmethod=syntax
@@ -160,23 +163,15 @@ set foldnestmax=10
 set nofoldenable
 set foldlevel=1
 
-" powerline stuff
-set rtp+=~/Library/Python/2.7/lib/python/site-packages/powerline/bindings/vim
-
-" Fix CtrlP root folder and add some ignores
-let g:ctrlp_working_path_mode = 0
-let g:ctrlp_custom_ignore = '\v[\/](\.(git|hg|svn)|node_modules|DS_Store)$'
-let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files']
-
 " Relative numbers
-autocmd FocusLost * :set number
-autocmd InsertEnter * :set number
+autocmd FocusLost * :set norelativenumber
+autocmd InsertEnter * :set norelativenumber
 autocmd InsertLeave * :set relativenumber
 autocmd CursorMoved * :set relativenumber
 
 function! NumberToggle()
   if(&relativenumber == 1)
-    set number
+    set norelativenumber
   else
     set relativenumber
   endif
@@ -184,16 +179,72 @@ endfunction
 
 nnoremap <C-n> :call NumberToggle()<cr>
 
-" Find file and Find stuff to quickfix.
-command -nargs=1 Qff :cexpr system('find . \| ag <f-args>') | copen
 
-function! ToggleCWindow()
-  if exists("g:qwindow")
-    cclose
-    unlet g:qwindow
-  else
-    copen
-    let g:qwindow = 1
-  endif
-endfunction
-nnoremap <C-h> :call ToggleCWindow()<cr>
+" Move things up and down using Ctrl + Shift
+nnoremap <C-S-j> :m .+1<CR>==
+nnoremap <C-S-k> :m .-2<CR>==
+inoremap <C-S-j> <Esc>:m .+1<CR>==gi
+inoremap <C-S-k> <Esc>:m .-2<CR>==gi
+vnoremap <C-S-j> :m '>+1<CR>gv=gv
+vnoremap <C-S-k> :m '<-2<CR>gv=gv
+
+" Limelight / Goyo config
+
+autocmd! User GoyoEnter Limelight
+autocmd! User GoyoLeave Limelight!
+nnoremap <C-S-l> :Limelight!!<CR>==
+inoremap <C-S-l> <Esc>:Limelight!!<CR>==gi
+vnoremap <C-S-l> :<C-u>Limelight!!<CR>gv=gv
+nnoremap <C-S-g> :Goyo<CR>==
+inoremap <C-S-g> <Esc>:Goyo<CR>==gi
+vnoremap <C-S-g> :<C-u>Goyo<CR>gv=gv
+
+"
+" Plug Config
+"
+
+call plug#begin('~/.vim/plugged')
+
+" Syntaxes
+Plug 'https://gitlab.com/rbdr/api-notation.vim.git'
+Plug 'elzr/vim-json'
+Plug 'mustache/vim-mode'
+Plug 'othree/yajs.vim'
+Plug 'ARM9/snes-syntax-vim'
+Plug 'posva/vim-vue'
+Plug 'leafgarland/typescript-vim'
+Plug 'leafOfTree/vim-svelte-plugin'
+Plug 'bumaociyuan/vim-swift'
+Plug 'udalov/kotlin-vim'
+Plug 'tikhomirov/vim-glsl'
+Plug 'jparise/vim-graphql'
+Plug 'digitaltoad/vim-pug'
+Plug 'https://git.sr.ht/~torresjrjr/gemini.vim'
+Plug 'rust-lang/rust.vim'
+Plug 'dart-lang/dart-vim-plugin'
+
+" Editing
+Plug 'tpope/vim-endwise'
+Plug 'rstacruz/vim-closer'
+Plug 'michaeljsmith/vim-indent-object'
+Plug 'editorconfig/editorconfig-vim'
+
+" Distraction free editing
+Plug 'junegunn/goyo.vim'
+Plug 'junegunn/limelight.vim'
+
+" Tools
+Plug 'editorconfig/editorconfig-vim'
+Plug 'dense-analysis/ale'
+Plug 'neoclide/coc.nvim', {'branch': 'release'}
+Plug 'vim-scripts/LargeFile'
+Plug 'tpope/vim-fugitive'
+Plug 'milkypostman/vim-togglelist'
+Plug 'jremmen/vim-ripgrep'
+
+" List ends here. Plugins become visible to Vim after this call.
+call plug#end()
+
+if filereadable(expand('~/.vimrc.local'))
+  exe 'source' '~/.vimrc.local'
+endif