Skip to content

Instantly share code, notes, and snippets.

@m-basov
Created November 1, 2015 17:12
Show Gist options
  • Save m-basov/c18b96adc2c8c8175b38 to your computer and use it in GitHub Desktop.
Save m-basov/c18b96adc2c8c8175b38 to your computer and use it in GitHub Desktop.
Nvim temp storage
"===============================================================================
"===
"=== Plugins
"===
"===============================================================================
" Init plugins {{
call plug#begin('~/.config/nvim/plugged')
" Themes
Plug 'flazz/vim-colorschemes'
" General
Plug 'editorconfig/editorconfig-vim'
Plug 'nathanaelkane/vim-indent-guides'
Plug 'ervandew/supertab'
Plug 'qpkorr/vim-bufkill'
Plug 'haya14busa/incsearch.vim'
Plug 'xolox/vim-misc'
" Interface
Plug 'bling/vim-airline'
Plug 'scrooloose/nerdtree'
Plug 'jistr/vim-nerdtree-tabs'
Plug 'majutsushi/tagbar'
Plug 'kien/ctrlp.vim'
Plug 'airblade/vim-gitgutter'
Plug 'Xuyuanp/nerdtree-git-plugin'
" Syntax
Plug 'benekastah/neomake'
Plug 'ntpeters/vim-better-whitespace'
Plug 'godlygeek/tabular'
Plug 'cakebaker/scss-syntax.vim'
Plug 'luochen1990/rainbow'
Plug 'pangloss/vim-javascript'
Plug 'scrooloose/nerdcommenter'
Plug 'mustache/vim-mustache-handlebars'
Plug 'mattn/emmet-vim'
Plug 'suan/vim-instant-markdown'
Plug 'fatih/vim-go'
Plug 'rust-lang/rust.vim'
Plug 'vim-ruby/vim-ruby'
Plug 'tpope/vim-endwise'
Plug 'mxw/vim-jsx'
" Autocomplete
Plug 'Valloric/YouCompleteMe', { 'do': './install.py --gocode-completer' }
Plug 'xolox/vim-easytags'
Plug 'Raimondi/delimitMate'
" Git
Plug 'tpope/vim-fugitive'
call plug#end()
" }}
"===============================================================================
"===
"=== Configure Neovim/Plugins
"===
"===============================================================================
" General {{
" Apply config on save
autocmd! bufwritepost init.vim source ~/.config/nvim/init.vim
" Use default OS clipboard
set clipboard=unnamed
" Show lines number
set number
" Ignore case on search
set ignorecase
" Or respect case if keyword contains uppercase letters
set smartcase
" Translate tab to spaces
set expandtab
" Number of spaces that replaces tab
set tabstop=2
set softtabstop=2
set shiftwidth=2
" Disable bell sound and replace with flash
set visualbell
" Disable backups
set nobackup
set nowb
" Disable swap file
set noswapfile
" Allow to swith between buffers without saving
set hidden
" Highlight current line and column
set cursorline cursorcolumn
" Disable redrawing interface when executing commands without output
set lazyredraw
" Donot insert 2 spaces in join command
set nojoinspaces
" TODO: Find description
set noshowmode
" Use old regex engine for backward compatibility
set regexpengine=1
" Faster startup without welcome message
set shortmess=atI
" Scroll if 3 lines are left
set scrolloff=3
" Ignore extensions list in autocomplete tooltip
set suffixes=.bak,~,.swp,.swo,.o,.d,.info,.aux,.log,.dvi,.pdf,.bin,.bbl,.blg,.brf,.cb,.dmg,.exe,.ind,.idx,.ilg,.inx,.out,.toc,.pyc,.pyd,.dll
" Show hidden symbols
set list
set lcs=tab:▸\ ,trail:·,eol:¬,nbsp:_
" Move cursor to the first non-blanl line
set nostartofline
" Don't wrap long lines
set nowrap
" Add ruller
let &colorcolumn="80,".join(range(120,999),",")
" Fast switching between mode
set ttimeoutlen=10
au InsertEnter * set timeoutlen=0
au InsertLeave * set timeoutlen=1000
" }}
" Interface {{
let g:molotov = 1
" TODO: Check if this is required
set t_Co=256
set background=dark
colorscheme molotov
" }}
" Airline {{
" Populate airline symbols from patched font
let g:airline_powerline_fonts = 1
" Show PASTE mode at airline
let g:airline_detect_paste=1
" Enable neomake airline extension
let g:airline#extensions#neomake#enable = 1
" TODO: Add description
let g:airline#extensions#tabline#buffer_nr_format = '%s '
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#fnamecollapse = 0
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#fnamemod = ':t'
" }}
" Neomake {{
autocmd! BufWritePost * Neomake
let g:neomake_javascript_enabled_makers = ['eslint']
let g:neomake_open_list = 1
let g:neomake_list_height = 5
"}}
" NERDTree {{
let g:nerdtree_tabs_open_on_console_startup = 1
let NERDTreeShowHidden=1
let NERDTreeIgnore=['.git$[[dir]]', '.DS_STORE$[[file]]', '*.swp$[[file]]', 'tmp[[dir]]']
" }}
" Tagbar {{
set tags=~/.nvimtags
let g:easytags_events = ['BufReadPost', 'BufWritePost']
let g:easytags_async = 1
let g:easytags_dynamic_files = 2
let g:easytags_resolve_links = 1
let g:easytags_suppress_ctags_warning = 1
" }}
" Git gutter {{
hi clear SignColumn
let g:airline#extensions#hunks#non_zero_only = 1
" }}
" DelimitMate {{
let delimitMate_expand_cr = 1
au FileType markdown let b:delimitMate_nesting_quotes = ["`"]
au FileType tex let b:delimitMate_quotes = ""
au FileType tex let b:delimitMate_matchpairs = "(:),[:],{:},`:'"
au FileType python let b:delimitMate_nesting_quotes = ['"', "'"]
" }}
" Rainbow brackets {{
let g:rainbow_active = 1
let g:rainbow_conf = {
\ 'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'],
\ 'operators': '_,_',
\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],
\ 'separately': {
\ '*': {},
\ 'html': 0,
\ 'css': 0,
\ 'sml': {
\ 'parentheses': ['start=/(\(\*\)\@!/ end=/\(\*\)\@<!)/', 'start=/\[/ end=/\]/ fold']
\ }
\ }
\}
" }}
" Mustache {{
let g:mustache_abbreviations = 1
au BufRead,BufNewFile *.hbs,*.handlebars,*.hbs.erb,*.handlebars.erb setl ft=mustache syntax=mustache
" }}
" Emmet {{
let g:user_emmet_install_global = 0
autocmd FileType html,css,html.handlebars EmmetInstall
let g:user_emmet_mode='n'
let g:user_emmet_expandabbr_key = '<Tab>'
" }}
" CtrlP {{
let g:ctrlp_custom_ignore = 'node_modules\|DS_Store\|git\|tmp\|bower_components'
" Do not clear filenames cache, to improve CtrlP startup
let g:ctrlp_clear_cache_on_exit = 0
" Set delay to prevent extra search
let g:ctrlp_lazy_update = 350
" Jump to tab AND buffer if already open
let g:ctrlp_switch_buffer = 'Et'
" Open newly created files in the current window
let g:ctrlp_open_new_file = 'r'
" Open multiple files in hidden buffers, and jump to the first one
let g:ctrlp_open_multiple_files = 'ij'
" }}
" Go {{
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
" }}
" JSX {{
let g:jsx_ext_required = 0
" }}
" Incsearch {{
let g:incsearch#auto_nohlsearch = 1
" }}
" NERDTreeGit {{
let g:NERDTreeIndicatorMapCustom = {
\ "Modified" : "",
\ "Staged" : "",
\ "Untracked" : "",
\ "Renamed" : "",
\ "Unmerged" : "",
\ "Deleted" : "",
\ "Dirty" : "",
\ "Clean" : "✔︎",
\ "Unknown" : "?"
\ }
" }}
" YouCompleteMe {{
let g:ycm_filetype_whitelist = { '*': 1 }
let g:ycm_filetype_blacklist = {
\ 'markdown': 1,
\ 'tagbar': 1,
\ 'tex': 1,
\ 'nerdtree': 1
\}
let g:ycm_show_diagnostics_ui = 0
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
" }}
"===============================================================================
"===
"=== Functions
"===
"===============================================================================
" Strip trailing whitespaces {{
function! StripWhitespace () " {{{
let save_cursor = getpos(".")
let old_query = getreg('/')
:%s/\s\+$//e
call setpos('.', save_cursor)
call setreg('/', old_query)
endfunction " }}}
" }}
"===============================================================================
"===
"=== Key bindings
"===
"===============================================================================
" Remap leader (,) {{
let mapleader=","
" }}
" Toggle NERDTreeToggle (,T) {{
nmap <silent> <leader>T :NERDTreeTabsToggle<CR>
" }}
" Tagbar toggle (Ctrl-B) {{
nmap <silent> <leader>B :TagbarToggle<CR>
" }}
" Go {{
" (,r)
au FileType go nmap <leader>r <Plug>(go-run)
" (,b)
au FileType go nmap <leader>b <Plug>(go-build)
" (,t)
au FileType go nmap <leader>t <Plug>(go-test)
" (,c)
au FileType go nmap <leader>c <Plug>(go-coverage)
" }}
" Incsearch {{
map / <Plug>(incsearch-forward)
map ? <Plug>(incsearch-backward)
map g/ <Plug>(incsearch-stay)
map n <Plug>(incsearch-nohl-n)
map N <Plug>(incsearch-nohl-N)
map * <Plug>(incsearch-nohl-*)
map # <Plug>(incsearch-nohl-#)
map g* <Plug>(incsearch-nohl-g*)
map g# <Plug>(incsearch-nohl-g#)
" }}
" Insert empty line (,Enter) {{
map <leader><Enter> o<ESC>
" }}
" Stripe whitespaces (,ss) {{
noremap <leader>ss :call StripWhitespace ()<CR>
" }}
" Open CtrlP buffers (,bs) {{
nnoremap <leader>bs :CtrlPBuffer<CR>
" }}
" Buffer navigation {{
" (,Ctrl-^)
map <Leader>, <C-^>
" (,ls)
map <Leader>ls :buffers<CR>
" gb
map gb :bnext<CR>
" gB
map gB :bprev<CR>
" }}
" Close QuickFix window (,qq) {{
map <leader>qq :cclose<CR>
" }}
" Pane navigations {{
nnoremap <c-j> <c-w>j
nnoremap <c-k> <c-w>k
nnoremap <c-h> <c-w>h
nnoremap <c-l> <c-w>l
" }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment