Last active
January 2, 2018 19:38
-
-
Save chesster/eacd9ca8a0290bd541aaca9aefbaf68c to your computer and use it in GitHub Desktop.
vimrc for neoVim
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" 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