" curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ " https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim " call plug#begin('$HOME/.vim/plugged') """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " GLOBAL scriptencoding utf-8 nmap """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " EDIT HELPERS set spell inoremap mm[s1z=`mi nnoremap [s1z= nnoremap - mmvip:s/^\(\s*\)/\1- /`m nnoremap _ mmvip:s/^\(\s*\)- /\1/`m nnoremap q :quit nnoremap tS mmvip:sort!`m nnoremap ts mmvip:sort`m nnoremap K i vnoremap < >gv vnoremap Y myY`y vnoremap y myy`y xnoremap p pgvy function! Trim() let s:pos=getpos('.') execute '%s/\s\+$//ge' execute '%s/\($\n\s*\)\+\%$//e' execute '%s/\.\s\{2,\}/. /ge' call setpos('.', s:pos) endfunction nnoremap tt :call Trim() augroup Trim autocmd! BufWrite *.md,*.md.asc call Trim() augroup END function! RemoveFancyCharacters() let l:typo={'–': '--', '—': '---', '…': '...', '‘': '''', '’': '''', '“': '"', '”': '"'} execute ':%s/'.join(keys(l:typo), '\|').'/\=typo[submatch(0)]/ge' endfunction command! RemoveFancyCharacters call RemoveFancyCharacters() set textwidth=72 nowrap linebreak formatoptions=cronqBj nojoinspaces autoindent shiftround expandtab shiftwidth=2 softtabstop=2 tabstop=2 set smartcase ignorecase incsearch Plug 'junegunn/vim-easy-align' Plug 'terryma/vim-expand-region' Plug 'tpope/vim-commentary' Plug 'tpope/vim-repeat' Plug 'tpope/vim-speeddating' Plug 'tpope/vim-surround' Plug 'tpope/vim-unimpaired' vmap v (expand_region_expand) vmap (expand_region_shrink) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " COMPLETION Plug 'shougo/neocomplete.vim' let g:neocomplete#sources#omni#input_patterns={} let g:neocomplete#force_omni_input_patterns={} let g:neocomplete#enable_auto_select=1 let g:neocomplete#enable_at_startup=1 let g:neocomplete#enable_smart_case=1 augroup NeoComplete autocmd! FileType css setlocal omnifunc=csscomplete#CompleteCSS autocmd! FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags autocmd! FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS augroup END inoremap pumvisible() ? "\" : "\" inoremap neocomplete#smart_close_popup()."\" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " INTEGRATION TOOLS set clipboard=unnamed set nobackup nowritebackup noswapfile set undofile undolevels=1000 undoreload=3000 undodir=$HOME/.vim/undo/ set viminfo='10,\"100,:20,%,n$HOME/.vim/viminfo augroup LastPositionJump autocmd! BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif augroup END " Search and files set path=.,** set wildcharm= set wildignore+=*.gif,*.ico,*.jpg,*.png,node_modules/*,.git/**/*,_site/*,tags,*.tar.* set wildmenu wildignorecase command! -nargs=+ Grep execute 'vim *' | copen nnoremap / :Grep nnoremap a :edit **/* " Buffers set hidden nnoremap b :buffer Plug 'christoomey/vim-tmux-navigator' nnoremap gP :r!tmux show-buffer nnoremap gp :r!xclip -o -selection clipboard Plug 'tpope/vim-vinegar' Plug 'tpope/vim-eunuch' nnoremap w :W Plug 'tpope/vim-fugitive' nnoremap d :Gdiff nnoremap g :Gstatus """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " FILE TYPE SPECIFIC " Formatters Plug 'ianks/vim-tsx', { 'for': ['tsx'] } Plug 'leafgarland/typescript-vim', { 'for': ['tsx', 'ts'] } Plug 'sbdchd/neoformat', {'for': ['sql', 'sass', 'scss', 'css', 'javascript', 'typescript', 'json', 'html']} augroup Neoformat autocmd! BufWrite *.sql,*.ts,*.js,*.json,*.css,*.html silent! undojoin | Neoformat augroup END " Linters Plug 'w0rp/ale', {'for': ['sql', 'markdown', 'vim', 'bash', 'sh', 'css', 'scss', 'sass', 'javascript', 'json', 'html']} let g:ale_lint_on_text_changed='normal' let g:ale_linters={'markdown': ['mdl', 'proselint']} let g:ale_fixers={ \ 'markdown': ['prettier', 'remove_trailing_lines', 'trim_whitespace'], \ 'html': ['prettier', 'remove_trailing_lines', 'trim_whitespace'] \ } """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " JOURNAL function! JournalInsertDate() let l:position = getpos('.') execute 'normal! I'.strftime('%Y-%m-%d ') let l:position[2]=l:position[2]+10 call setpos('.', l:position) endfunction function! JournalSettings() setfiletype journal let b:current_syntax='journal' setlocal nobackup " Don't make a backup before overwriting a file. setlocal noswapfile " Open files without creating a swap file. setlocal nowritebackup " Don't make a backup before overwriting a file. setlocal noundofile " Don't store undo history in a file. setlocal viminfo= setlocal matchpairs= setlocal textwidth=0 setlocal nowrap setlocal nolinebreak setlocal formatoptions=tcroqnB1j setlocal iskeyword+=: nnoremap :call JournalInsertDate() syntax case ignore syntax match date "^[0-9]\{4}-[0-9]\{2}-[0-9]\{2}" syntax match time "^[0-9]\{4}-[0-9]\{2}-[0-9]\{2} [0-9]\{2}:[0-9]\{2}" syntax match at " @[_-a-zA-Z0-9]\+" syntax match hash " #[_-a-zA-Z0-9]\+" syntax match regular "\[ ]" syntax match code " `[^`].*`" syntax match comment " --.*" syntax match completed "\[x] .\+" highlight def link hash Number highlight def link at String highlight def link date Function highlight def link time Function highlight def link regular Comment highlight def link completed Comment highlight def link code Keyword endfunction augroup Journal autocmd! autocmd BufRead,BufNewFile *.journal call JournalSettings() augroup END """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " DECORATIONS Plug 'tpope/vim-markdown' let g:markdown_fenced_languages=['sh', 'vim', 'javascript', 'json', 'html', 'sass', 'css'] set background=dark set cursorline set number set ruler syntax on highlight clear highlight CursorColumn ctermfg=NONE ctermbg=236 cterm=NONE highlight CursorLine ctermfg=NONE ctermbg=236 cterm=NONE highlight CursorLineNr ctermfg=7 ctermbg=236 cterm=NONE highlight DiffAdd ctermfg=2 ctermbg=NONE cterm=NONE highlight DiffChange ctermfg=2 ctermbg=NONE cterm=NONE highlight DiffDelete ctermfg=1 ctermbg=NONE cterm=NONE highlight DiffText ctermfg=2 ctermbg=236 cterm=NONE highlight FoldColumn ctermfg=248 ctermbg=NONE cterm=italic highlight Folded ctermfg=248 ctermbg=NONE cterm=italic highlight LineNr ctermfg=238 ctermbg=NONE cterm=NONE highlight MatchParen cterm=underline ctermbg=NONE cterm=NONE highlight NonText ctermfg=236 ctermbg=NONE cterm=NONE highlight Normal ctermfg=NONE ctermbg=NONE cterm=NONE highlight Pmenu ctermfg=15 ctermbg=236 cterm=NONE highlight PmenuSbar ctermfg=7 ctermbg=NONE cterm=NONE highlight PmenuSel ctermfg=236 ctermbg=2 cterm=NONE highlight PmenuThumb ctermfg=7 ctermbg=NONE cterm=NONE highlight SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE highlight SpellBad ctermfg=NONE ctermbg=NONE cterm=underline highlight SpellCap ctermfg=NONE ctermbg=NONE cterm=underline highlight Error ctermfg=1 ctermbg=NONE cterm=underline highlight StatusLine ctermfg=15 ctermbg=236 cterm=bold highlight StatusLineNC ctermfg=248 ctermbg=236 cterm=italic highlight VertSplit ctermfg=236 ctermbg=236 cterm=NONE highlight Visual ctermfg=NONE ctermbg=238 cterm=NONE highlight WildMenu ctermfg=236 ctermbg=2 cterm=NONE highlight qfFileName ctermfg=245 ctermbg=NONE cterm=italic highlight qfLineNr ctermfg=238 ctermbg=NONE cterm=NONE highlight qfSeparator ctermfg=0 ctermbg=NONE cterm=NONE highlight Comment ctermfg=248 ctermbg=NONE cterm=NONE highlight String ctermfg=10 ctermbg=NONE cterm=NONE highlight htmlH1 ctermfg=15 ctermbg=NONE cterm=bold highlight htmlItalic ctermfg=7 ctermbg=NONE cterm=italic highlight htmlItalicBold ctermfg=15 ctermbg=NONE cterm=italic highlight htmlBoldItalic ctermfg=15 ctermbg=NONE cterm=bold " function! HighlightItem() " return synIDattr(synID(line('.'),col('.'),1),'name') " endfunction " set statusline=%{HighlightItem()} """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" call plug#end()