" " Vim customization and package management " " This uses Vundle for package management, so Vundle is installed on the first " run. " " Run the following to install plugins: " " * Launch vim and run :PluginInstall " * To install from command line: vim +PluginInstall +qall " Vundle Installation {{{ " Bootstrap Vundle if it's not installed if empty(system("grep lazy_load ~/.vim/bundle/Vundle.vim/autoload/vundle.vim")) silent !mkdir -p ~/.vim/bundle silent !rm -rf ~/.vim/bundle/Vundle.vim silent !git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim endif " }}} " Base settings {{{ set nocompatible " be iMproved, required filetype off " required syntax on set mouse=a set mousehide scriptencoding utf-8 let g:airline_powerline_fonts=1 let mapleader="," let g:indent_guides_enable_on_vim_startup=1 " }}} " Vundle setup - Preamble {{{ set runtimepath+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' " }}} " Vundle setup - Packages {{{ Plugin 'scrooloose/nerdtree' Plugin 'tpope/vim-fugitive' Plugin 'spf13/vim-colors' Plugin 'tpope/vim-surround' Plugin 'tpope/vim-repeat' Plugin 'jiangmiao/auto-pairs' Plugin 'terryma/vim-multiple-cursors' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'Shougo/denite.nvim' Plugin 'pR0Ps/molokai-dark' Plugin 'nathanaelkane/vim-indent-guides' Plugin 'luochen1990/rainbow' " }}} " Vundle - Closing {{{ call vundle#end() " required filetype plugin indent on " required " }}} " Customization {{{ " Base customization {{{ if has("gui_running") if has("mac") set guifont=Iosevka:h13 elseif has("win32") set guifont=Iosevka\ Term\ Regular\ 13 else set guifont=Iosevka\ Term\ Regular\ 12 end set columns=120 lines=54 hi Search guifg=black guibg=yellow hi Cursor guifg=white guibg=maroon " Hide/Show menu and tool bar function! ToggleGUICruft() if &guioptions=='i' exec('set guioptions=imTrL') else exec('set guioptions=i') endif endfunction map :call ToggleGUICruft() " By default, hide gui menus set guioptions=i else set background=dark endif colorscheme molokai-dark set norelativenumber set number set visualbell t_vb= set cindent set noautoindent set tabstop=2 set shiftwidth=2 set scrolloff=10 set expandtab set showmatch set cursorline set mat=2 set showmode set hlsearch set incsearch set ignorecase set wildmenu set wildmode=list:longest,full " Command completion, list matches, then longest common part, then all. set backspace=indent,eol,start set history=1024 set ruler set hid set viminfo='20,\"50 set backspace=2 whichwrap+=<,>,h,l set cmdheight=2 set smartcase set magic set showmode let g:spf13_no_autochdir=1 set backspace=indent,eol,start set list set listchars=tab:›\ ,trail:•,extends:#,nbsp:. " Highlight problematic whitespace " Directories {{{ set backup " backups are nice ... set backupdir=$HOME/.vimbackup// " but not when they clog . set directory=$HOME/.vimswap// " Same for swap files set viewdir=$HOME/.vimviews// " same for view files " Creating directories if they don't exist silent execute '!mkdir -p $HOME/.vimbackup' silent execute '!mkdir -p $HOME/.vimswap' silent execute '!mkdir -p $HOME/.vimviews' au BufWinLeave \* silent! mkview "make vim save view (state) (fds, cursor, etc) au BufWinEnter \* silent! loadview "make vim load view (state) (fds, cursor, etc) " }}} " }}} " Module customization {{{ if isdirectory(expand("~/.vim/bundle/nerdtree")) map NERDTreeTabsToggle map e :NERDTreeFind nmap nt :NERDTreeFind let NERDTreeShowBookmarks=1 let NERDTreeIgnore=['\.py[cd]$', '\~$', '\.swo$', '\.swp$', '^\.git$', '^\.hg$', '^\.svn$', '\.bzr$'] let NERDTreeChDirMode=0 let NERDTreeQuitOnOpen=1 let NERDTreeMouseMode=2 let NERDTreeShowHidden=1 let NERDTreeKeepTreeInNewTab=1 let g:nerdtree_tabs_open_on_gui_startup=0 endif let g:airline#extensions#tabline#enabled = 1 let g:airline_theme='molokai' let g:rainbow_active = 1 "0 if you want to enable it later via :RainbowToggle " }}} " Key bindings {{{ map :NERDTreeToggle nnoremap :e G nnoremap w nnoremap W nnoremap :confirm bd nnoremap o nnoremap s nnoremap v nnoremap :Denite buffer nnoremap b :Denite buffer nnoremap :set wrap! nnoremap :set spell! nnoremap :next nnoremap :prev vnoremap "hy/h nnoremap :bnext if has("nvim") nnoremap za elseif has("gui_running") nnoremap za else nnoremap za end " Reflow text nnoremap Q gqap " reflow visually highlighted lines with Q: vnoremap Q gq " Remove trailing spaces nnoremap :%s/\s\+$//g:noh " }}} " }}} " vim: foldenable foldmethod=marker