" Mark's super duper _ " _ __ ___ _____ _(_)_ __ ___ "| '_ \ / _ \/ _ \ \ / / | '_ ` _ \ "| | | | __/ (_) \ V /| | | | | | | "|_| |_|\___|\___/ \_/ |_|_| |_| |_| set title set history=700 set background=dark filetype plugin on filetype indent on syntax enable let mapleader=" " let maplocalleader=" " set autoread " automatically reload changed files set wildmenu " handy auto complete menu set list set listchars=tab:·\ ,trail:▂,extends:»,precedes:« set infercase " completion recognizes capitalization set smartcase set ignorecase set incsearch " search as you type set hidden " sometimes I don't want to save a buffer before switching away from it set completeopt-=preview set matchtime=1 set modeline set modelines=5 set noswapfile set scrolloff=8 set shiftwidth=4 set softtabstop=4 set spell set tabstop=4 " install vim-plug if !filereadable(expand('~/.local/share/nvim/site/autoload/plug.vim')) silent !echo "Installing vim-plug..." silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim endif call plug#begin('~/.local/share/nvim/plugged') " color schemes Plug 'dylanaraps/wal.vim' " syntax Plug 'cakebaker/scss-syntax.vim' Plug 'calviken/vim-gdscript3' Plug 'ianks/vim-tsx' Plug 'leafgarland/typescript-vim' Plug 'lepture/vim-jinja' Plug 'posva/vim-vue' Plug 'nikvdp/ejs-syntax' " functionality Plug 'tpope/vim-sensible' Plug 'tpope/vim-abolish' Plug 'tpope/vim-surround' Plug 'tpope/vim-dispatch' Plug 'tpope/vim-vinegar' Plug 'tpope/vim-sleuth' Plug 'tpope/vim-commentary', "{{{ nmap c Commentary xmap c Commentary omap c Commentary nmap cc CommentaryLine "}}} Plug 'tpope/vim-fugitive', "{{{ map \b :Gblame map \l :Glog map \gs :Gstatus "}}} Plug 'carlitux/deoplete-ternjs', {'do': 'npm install -g tern'} Plug 'w0rp/ale', "{{{ let g:ale_linters = { \ 'c': ['clang'], \ 'cpp': ['clangx'], \ 'php': ['phpcs'], \ 'javascript': ['eslint'], \} let g:ale_python_pylint_options = '--load-plugins pylint_django' let g:ale_sign_error = '⬤' "}}} Plug 'vim-airline/vim-airline-themes' Plug 'vim-airline/vim-airline', "{{{ let g:airline_symbols = {} let g:airline_symbols.branch = '⭠' let g:airline_symbols.readonly = '⭤' let g:airline_symbols.linenr = '⭡' let g:airline#extensions#tabline#enabled = 1 let g:airline_theme = 'wal' "}}} Plug 'mattn/webapi-vim' Plug 'mattn/gist-vim' Plug 'easymotion/vim-easymotion', "{{{ map (easymotion-prefix) "}}} "Plug 'mhartington/nvim-typescript', {'do': './install.sh'} " if has('nvim') " Plug 'Shougo/deoplete.nvim', {'do': ':UpdateRemotePlugins'} " else " Plug 'Shougo/deoplete.nvim' " Plug 'roxma/nvim-yarp' " Plug 'roxma/vim-hug-neovim-rpc' " endif " let g:deoplete#enable_at_startup = 1 " let g:deoplete#enable_smart_case = 1 " let g:deoplete#sources#syntax#min_keyword_length = 2 " Plug 'Shougo/denite.nvim' "Plug 'Shougo/neosnippet-snippets' "Plug 'Shougo/neosnippet.vim', "{{{ " let g:neosnippet#snippets_directory = '~/.vim/bundle/'.expand(fnamemodify($MYVIMRC, ':p:h').'/snippets/') " let g:neosnippet#enable_snipmate_compatibility = 1 ""}}} Plug 'junegunn/fzf', {'dir': '~/.fzf', 'do': './install --all'} Plug 'junegunn/fzf.vim', "{{{ function! s:buflist() redir => ls silent ls redir END return split(ls,'\n') endfunction function! s:bufopen(e) execute 'buffer' matchstr(a:e, '^[ 0-9]*') endfunction nnoremap :call fzf#run({ \ 'source': reverse(buflist()), \ 'sink': function('bufopen'), \ 'options': '+m', \ 'down': len(buflist()) + 2 \}) function! s:FuzzyFiles() let gitparent=system('git rev-parse --show-toplevel')[:-2] let rootdir='.' if empty(matchstr(gitparent, '^fatal:.*')) silent call fzf#run({ \ 'dir': gitparent, \ 'source': '(git ls-tree -r --name-only HEAD | rg --files)', \ 'sink': 'e', \}) else silent call fzf#run({ \ 'dir': '.', \ 'source': 'rg --files', \ 'sink': 'e', \}) endif endfunction command! -bang -nargs=* Rg \ call fzf#vim#grep( \ 'rg --column --line-number --no-heading --color=always '.shellescape(), 1, \ 0 ? fzf#vim#with_preview('up:60%') \ : fzf#vim#with_preview('right:50%:hidden', '?'), \ 0) nnoremap ; :call FuzzyFiles() nnoremap / :Rg "}}} call plug#end() " key bindings map :bnext map :bprev nmap j " faster window movement nmap k nmap h nmap l vmap :sort " sort lines in visual mode with ctrl-o map mzgg=G`z " autoformat document nmap n :set invnumber " toggle line numbers vnoremap < >gv nnoremap pu :PlugUpdate " vim-plug actions nnoremap pi :PlugInstall nnoremap pc :PlugClean nnoremap o :jumps " show jumps list nnoremap zn ]s " next misspelling nnoremap zp [s " prev misspelling nnoremap zf 1z= " replace misspelling with first suggestion nnoremap z! :set local spell! " toggle spellcheck nnoremap ve :e $MYVIMRC " quick open this (literally this) file if executable('rg') set grepprg='rg\ --vimgrep' " use ripgrep if available endif " theme / visual try colorscheme wal catch endtry hi clear SpellBad " italicize misspellings hi SpellBad gui=underline cterm=italic " netrw nnoremap \e :Lexplore! let g:netrw_banner = 0 let g:netrw_liststyle = 3 let g:netrw_altv = 1 let g:netrw_winsize = 25 let g:netrw_browse_split = 4 augroup netrw_mapping autocmd! autocmd filetype netrw call NetrwMapping() augroup END function! NetrwMapping() noremap \e :bd endfunction " close if final buffer is netrw or the quickfix augroup finalcountdown au! autocmd WinEnter * if winnr('$') == 1 && getbufvar(winbufnr(winnr()), "&filetype") == "netrw" || &buftype == 'quickfix' |q|endif nmap - :Lexplore augroup END " read .vimlocal if available if filereadable(expand('~/.vimlocal')) source ~/.vimlocal endif