" https://github.com/zyeri/dotfiles call plug#begin('~/.config/nvim/plugged') " plugins Plug 'tpope/vim-repeat' Plug 'tpope/vim-git' Plug 'tpope/vim-sensible' Plug 'tpope/vim-fugitive' Plug 'tpope/vim-unimpaired' Plug 'tpope/vim-commentary' Plug 'tpope/vim-surround' Plug 'tpope/vim-speeddating' Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } Plug 'scrooloose/syntastic' Plug 'bling/vim-airline' | Plug 'bling/vim-bufferline' Plug 'Valloric/YouCompleteMe' Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' } Plug 'mhinz/vim-startify' Plug 'mhinz/vim-grepper' Plug 'godlygeek/tabular' Plug 'ctrlpvim/ctrlp.vim' Plug 'tacahiroy/ctrlp-funky' Plug 'FelikZ/ctrlp-py-matcher' Plug 'deris/vim-shot-f' Plug 'mbbill/undotree' Plug 'majutsushi/tagbar' Plug 'sheerun/vim-polyglot' Plug 'rhysd/committia.vim' Plug 'neovimhaskell/haskell-vim', { 'for': 'haskell' } Plug 'mtth/scratch.vim' Plug 'Valloric/ListToggle' Plug 'junegunn/fzf', { 'do': 'yes \| ./install' } " colorschemes Plug 'w0ng/vim-hybrid' Plug 'chriskempson/base16-vim' call plug#end() let mapleader = ',' let maplocalleader = ',' let g:mapleader = ',' let g:maplocalleader = ',' try " enable 24-bit TRUE COLOR for neovim let $NVIM_TUI_ENABLE_TRUE_COLOR=1 let g:hybrid_custom_term_colors=1 set background=dark colorscheme hybrid catch /:E185:/ " silently ignore colorscheme not found error endtry " don't reload a file when it has been edited outside of vim set noautoread " never autowrite a file set noautowrite set noautowriteall " don't keep a backup of any files currently being edited set nobackup " preserve indent on line breaks set breakindent " show a vertical column on the 79th column set colorcolumn=72 " show a popup menu for insert completion matches set completeopt=menu,menuone,longest " copy existing indent when autoindenting a new line set copyindent " diff display options set diffopt=filler,icase,iwhite,vertical " no error bells set noerrorbells " use spaces instead of the tab character set expandtab set nofoldenable foldmethod=syntax foldcolumn=0 " use g flag for :s by default set gdefault " if available, use ag in place of grep if executable('ag') set grepprg=ag\ --nogroup\ --nocolor endif " don't destroy hidden buffers set hidden " ignore case while searching set ignorecase " enable the magic set magic " enable line numbering set number " preserve insent structure set preserveindent " use four spaces for each autoindent set shiftwidth=4 " jump to matching bracket when inserted set showmatch " intelligently ignore case set smartcase " autoindent on newline set smartindent " number of spaces to use when tabbing during editing operations set softtabstop=4 " always split new windows to the bottom right set splitright set splitbelow " disable swap file set noswapfile " don't highlight past 256 columns set synmaxcol=256 " number of spaces to use for tabs set tabstop=4 " where to store undo files set undodir=$HOME/.config/nvim/undo " enable persistent undo set undofile " keep 2500 changes for undos set undolevels=2500 " allow cursor to be placed one character after the end of line set virtualedit=onemore " disable visualbells set novisualbell " ignore certain file patterns set wildignore+=*./git/*,*.o,*.obj " disable softwrapping by default; enable via autocommand or modeline set nowrap " searches wrap around the end of file set wrapscan " commands " Create bulleted or number lists out of a range of lines command! -nargs=0 -range=% NumberList ,s/^\s*\zs/\=(line('.') - line("'<")+1).'. ' command! -nargs=0 -range=% BulletList ,s/^\s*\zs/* " bindings " move between windows nnoremap nnoremap nnoremap nnoremap " yank to end of line nnoremap Y y$ " keep visual selecting when tabbing vnoremap << > >gv " toggle folds nnoremap @=(foldlevel('.')?'za':"\") vnoremap zf " clear trailing whitespace (http://vi.stackexchange.com/a/2285) nnoremap :let _s=@/:%s/\s\+$//e:let @/=_s nnoremap :NERDTreeToggle nnoremap :TagbarToggle nnoremap :UndotreeToggle nnoremap :CtrlP nnoremap :CtrlPBuffer nnoremap t :CtrlPTag " insert #! for current file type inoreabbrev #!! '#!/usr/bin/env' . (empty(&filetype) ? '' : ' '.&filetype) " plugin configuration " scratch.vim let g:scratch_autohide = 1 let g:scratch_top = 0 let g:scratch_persistence_file = '/tmp/scratch.vim' " airline let g:bufferline_echo = 0 let g:airline_inactive_collapse=1 let g:airline_powerline_fonts=0 if !exists('g:airline_symbols') let g:airline_symbols = { } endif let g:airline_left_sep = "" let g:airline_right_sep = "" let g:airline_symbols.branch = '' let g:airline_symbols.readonly = '' let g:airline_symbols.linenr = '' let g:airline_symbols.whitespace = 'Ξ' " ctrlp if executable('ag') let g:ctrlp_user_command = { \ 'types': { \ 1: ['.git', 'cd %s && git ls-files . -co --exclude-standard'], \ }, \ 'fallback': 'ag %s -l -f -S --nocolor --nogroup --hidden -g ""' \ } let g:ctrlp_custom_ignore = { \ 'dir': '\.git$\|\.svn$\', \ 'file': '\.so$\|' \ } let g:ctrlp_use_caching = 0 endif let g:ctrlp_status_func = { 'main': 'CtrlPStatusFunc1', 'prog': 'CtrlPStatusFunc2' } let g:ctrlp_match_func = { 'match': 'pymatcher#PyMatch' } let g:ctrlp_extensions = ['tag', 'line'] let g:ctrlp_working_path_mode = 'ca' let g:ctrlp_open_new_file = 'h' let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:10,results:10' " tagbar " change focus to tagbar when opening it let g:tagbar_autofocus = 1 let g:tagbar_autclose = 1 " haskell-vim let g:haskell_enable_quantification=1 let g:haskell_enable_recursivedo=1 let g:haskell_enable_arrowsyntax=1 let g:haskell_enable_pattern_synonyms=1 let g:haskell_enable_typeroles=1 let g:haskell_enable_static_pointers=1 " polyglot let g:polyglot_disabled=['haskell'] " vim-plug let g:plug_threads = 40 " syntastic let g:syntastic_always_populate_loc_list = 1 " ListToggle let g:lt_location_list_toggle_map = 'tl' let g:lt_quickfix_list_toggle_map = 'tq' " YouCompleteMe let g:ycm_path_to_python_interpreter = '/usr/bin/python3'