Skip to content

Instantly share code, notes, and snippets.

@chesster
Last active January 2, 2018 19:38
Show Gist options
  • Save chesster/eacd9ca8a0290bd541aaca9aefbaf68c to your computer and use it in GitHub Desktop.
Save chesster/eacd9ca8a0290bd541aaca9aefbaf68c to your computer and use it in GitHub Desktop.
vimrc for neoVim
" Key Bindings {{{
"
" }}}
" Setup Plugins [VimPlug] {{{
" Autoloading
if empty(glob('~/.config/nvim/autoload/plug.vim'))
silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall sync | source $MYVIMRC
endif
call plug#begin()
" Autocompletion
Plug 'valloric/youcompleteme'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
" Console
Plug 'edkolev/tmuxline.vim'
Plug 'edkolev/promptline.vim'
Plug 'shougo/vimproc.vim'
Plug 'shougo/vimshell.vim'
" Mixed
" Plug 'neomake/neomake'
" Plug 'xolox/vim-session'
" Plug 'xolox/vim-misc'
Plug 'junegunn/vim-easy-align' " :EasyAlign <char>
Plug 'vim-scripts/YankRing.vim'
Plug 'vimwiki/vimwiki'
Plug 'wesq3/vim-windowswap'
Plug 'terryma/vim-expand-region' " TODO: README
Plug 'chrisbra/csv.vim'
Plug 'vim-scripts/BufOnly.vim'
Plug 'bogado/file-line'
Plug 'airblade/vim-rooter'
Plug 'dag/vim-fish'
Plug 'diepm/vim-rest-console'
Plug 'easymotion/vim-easymotion'
Plug 'editorconfig/editorconfig-vim'
Plug 'goerz/ipynb_notedown.vim'
Plug 'jeffkreeftmeijer/vim-numbertoggle'
Plug 'jiangmiao/auto-pairs'
Plug 'lambdalisue/vim-gista'
Plug 'lambdalisue/vim-gista-ctrlp'
Plug 'maksimr/vim-jsbeautify' " TODO: README
Plug 'mbbill/undotree'
Plug 'mhinz/vim-sayonara', { 'on': 'Sayonara' }
Plug 'mhinz/vim-startify'
Plug 'mileszs/ack.vim'
Plug 'nathanaelkane/vim-indent-guides'
Plug 'osyo-manga/vim-over'
Plug 'plasticboy/vim-markdown'
Plug 'ryanoasis/vim-devicons'
Plug 'scrooloose/nerdtree'
Plug 'terryma/vim-multiple-cursors'
Plug 'thaerkh/vim-workspace'
Plug 'tomtom/tcomment_vim'
Plug 'tpope/vim-abolish' " TODO: README
Plug 'tpope/vim-dispatch'
Plug 'w0rp/ale'
" 'andrewradev/splitjoin.vim'
" IPython
Plug 'glench/vim-jinja2-syntax' " TODO: README
Plug 'fisadev/vim-isort'
Plug 'bfredl/nvim-ipy'
" Theme
Plug 'morhetz/gruvbox'
Plug 'bling/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" Plug 'itchyny/lightline.vim' " powerline
" Git
Plug 'tpope/vim-fugitive'
Plug 'junegunn/gv.vim'
Plug 'airblade/vim-gitgutter'
Plug 'Xuyuanp/nerdtree-git-plugin'
" Search and replace
Plug 'ctrlpvim/ctrlp.vim'
" Python
Plug 'klen/python-mode'
" JS
Plug 'moll/vim-node'
Plug 'mxw/vim-jsx'
Plug 'elzr/vim-json'
Plug 'pangloss/vim-javascript'
Plug 'ternjs/tern_for_vim'
Plug 'othree/yajs.vim'
" TAGS
Plug 'soramugi/auto-ctags.vim'
Plug 'majutsushi/tagbar'
call plug#end()
" }}}
" WildIgnore {{{
set suffixes=~,.aux,.bak,.bkp,.dvi,.hi,.o,.pdf,.gz,.idx,.log,.ps,.swp,.tar,.ilg,.bbl,.toc,.ind
set wildmenu
set wildcharm=<Tab>
set wildmode=list:longest
" set wildmode=longest,list,full
set wildignore+=log/**,node_modules/**,target/**,tmp/**,*.rbc
set wildignore+=*.egg,*.egg-info
set wildignore+=*.gem
set wildignore+=*.gem
set wildignore+=*.javac
set wildignore+=*.png,*.jpg,*.gif
set wildignore+=*.png,*.jpg,*.gif
set wildignore+=*.pyc
set wildignore+=*.so,*.swp,*.zip,*/.Trash/**,*.pdf,*.dmg,*/Library/**,*/.rbenv/**
set wildignore+=*/.nx/**,*.app
set wildignore+=*DS_Store*
set wildignore+=*sass-cache*
set wildignore+=*vim/backups*
set wildignore+=.coverage
set wildignore+=.coverage/**
set wildignore+=.env
set wildignore+=.env-pypy
set wildignore+=.env[0-9]+
set wildignore+=.git,.gitkeep
set wildignore+=.idea/**
set wildignore+=.sass-cache/
set wildignore+=.tmp
set wildignore+=.tox/**
set wildignore+=.vagrant/**
set wildignore+=.webassets-cache/
set wildignore+=__pycache__/
set wildignore+=log/**
set wildignore+=tmp/**
set wildignore+=vendor/cache/**
set wildignore+=vendor/rails/**
set wildignore=*.o,*.obj,*~ "stuff to ignore when tab completing
" }}}
" System Settings {{{
set nocompatible
set shell=/bin/zsh
filetype plugin indent on
syntax on
syntax enable
set background=dark
let g:deoplete#enable_at_startup = 1
let g:neosnippet#enable_completed_snippet = 1
" Plugin: Airline
let g:airline_theme='gruvbox'
let g:airline_powerline_fonts = 1
let g:promptline_preset = {
\'a' : [ promptline#slices#cwd({ 'dir_limit': 2 }) ],
\'b' : [ promptline#slices#vcs_branch() ],
\'c' : [ promptline#slices#python_virtualenv() ],
\'warn' : [ promptline#slices#last_exit_code() ]}
" Plugin: vim-wiki
let g:vimwiki_list = [
\{'path': '~/Dropbox/VimWiki/personal.wiki'},
\{'path': '~/Dropbox/VimWiki/tech.wiki'}
\]
au BufRead,BufNewFile *.wiki set filetype=vimwiki
:autocmd FileType vimwiki map d :VimwikiMakeDiaryNote
function! ToggleCalendar()
execute ":Calendar"
if exists("g:calendar_open")
if g:calendar_open == 1
execute "q"
unlet g:calendar_open
else
g:calendar_open = 1
end
else
let g:calendar_open = 1
end
endfunction
:autocmd FileType vimwiki map c :call ToggleCalendar()
" Plugin: vim-REST
let g:vrc_elasticsearch_support = 1
let g:vrc_output_buffer_name = '__VRC_OUTPUT.json'
let g:vrc_curl_opts = {
\ '--connect-timeout' : 10,
\ '-ss': '',
\ '--max-time': 60,
\ '--ipv4': '',
\ '-k': '',
\}
" Plugin: airline
let g:airline#extensions#tabline#enabled = 1
" Plugin: vim-expand
" map > <Plug>(expand_region_expand)
" map < <Plug>(expand_region_shrink)
" Plugin: vim-undotree
if has("persistent_undo")
set undodir=~/.undodir/
set undofile
endif
" Plugin: vim-ycm
let g:ycm_add_preview_to_completeopt = 1
let g:ycm_autoclose_preview_window_after_insertion = 1
" Plugin: vim-rooter
let g:rooter_change_directory_for_non_project_files = 'current'
let g:rooter_patterns = ['Rakefile', '.git/']
let g:rooter_use_lcd = 1
let g:rooter_resolve_links = 1
let g:rooter_silent_chdir = 1
" Plugin: UltiSnippets
let g:UltiSnipsExpandTrigger="<c-x>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
" Plugin: ACK
if executable('ag')
let g:ackprg = 'ag --vimgrep'
endif
" Plugin: WorkSpace
let g:workspace_session_name = '.workspace.vim'
" Plugin: vim-javascript
let g:javascript_plugin_jsdoc = 1
" Folding
augroup javascript_folding
au!
au FileType javascript setlocal foldmethod=syntax
augroup END
" Plugin: Gruvbox
let g:gruvbox_termcolors=1
let g:gruvbox_contrast_dark='hard'
let g:gruvbox_contrast_light='soft'
" let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_start_level=2
let g:indent_guides_guide_size=1
let g:lightline = {
\ 'colorscheme': 'gruvbox',
\ 'component_function': {
\ 'filetype': 'MyFiletype',
\ 'fileformat': 'MyFileformat',
\ }
\ }
function! MyFiletype()
return winwidth(0) > 70 ? (strlen(&filetype) ? &filetype . ' ' . WebDevIconsGetFileTypeSymbol() : 'no ft') : ''
endfunction
function! MyFileformat()
return winwidth(0) > 70 ? (&fileformat . ' ' . WebDevIconsGetFileFormatSymbol()) : ''
endfunction
colorscheme gruvbox
let g:ale_linters = {
\ 'javascript': ['eslint'],
\}
let g:ale_fixers = {
\ 'javascript': ['eslint'],
\}
" Settings
set nowrap
set relativenumber number
set autoindent
set autoread " reload files when changed on disk, i.e. via `git checkout`
set backspace=2 " Fix broken backspace in some setups
set backupcopy=yes " see :help crontab
set clipboard=unnamed " yank and paste with the system clipboard
set directory-=. " don't store swapfiles in the current directory
set encoding=utf-8
set expandtab " expand tabs to spaces
set ignorecase " case-insensitive search
set incsearch " search as you type
set laststatus=2 " always show statusline
set list " show trailing whitespace
set number " show line numbers
set ruler " show where you are
set scrolloff=3 " show context above/below cursorline
set shiftwidth=2 " normal mode indentation commands use 2 spaces
set showcmd
set smartcase " case-sensitive search if any caps
set softtabstop=2 " insert mode tab and backspace use 2 spaces
set tabstop=4 " actual tabs occupy 8 characters
set lazyredraw
set synmaxcol=200
set updatetime=250
set nowb
set nobackup
set noswapfile
set mouse=a
set cursorline
set foldmethod=syntax
set foldlevel=15
set foldlevelstart=15
" Vim Session
let g:session_autosave = 'no'
let g:session_autoload = 'no'
" Tags
" let g:auto_ctags_filetype_mode = 1
" let g:auto_ctags_directory_list = ['.git', '.svn']
" let g:auto_ctags = 1
" CtrlP
let g:ctrlp_custom_ignore = 'node_modules\|DS_Store\|git'
" File types:
autocmd BufRead,BufNewFile *.fdoc set filetype=yaml
autocmd BufRead,BufNewFile *.md set filetype=markdown
autocmd BufRead,BufNewFile *.md set spell
" automatically rebalance windows on vim resize
autocmd VimResized * :wincmd =
" }}}
" Mapping {{{
let mapleader = ","
command! DosToUnix %s/\r//g
command! Q Sayonara
command! W w
command! RmEmptyLines g/^$/d
cnoremap w!! %!sudo tee > /dev/null
nnoremap <C-l> :CtrlPBuffer<CR>
noremap H ^
noremap L g_
noremap J 5j
noremap K 5k
noremap ; :
vnoremap <c-f> <c-x><c-f>
vnoremap <c-/> :TComment
map <c-\> :NERDTreeToggle<cr>
map <c-]> :TagbarToggle<cr>
map <esc> :noh <cr>
map <c-s> :Ack
map <leader><leader>r :CtrlPMRUFiles<cr>
map <leader><leader>y :YRShow<cr>
" }}}
" vim:foldmethod=marker:foldlevel=0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment