Skip to content

Instantly share code, notes, and snippets.

@kirhgoff
Created January 27, 2017 12:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kirhgoff/b0f1b254ee08dc143eda0c206e551098 to your computer and use it in GitHub Desktop.
Save kirhgoff/b0f1b254ee08dc143eda0c206e551098 to your computer and use it in GitHub Desktop.
kirhgoff's init.vim
call plug#begin('~/.vim/plugged')
"UI
Plug 'scrooloose/nerdtree'
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'ryanoasis/vim-devicons'
Plug 'vim-airline/vim-airline'
Plug 'itchyny/lightline.vim'
"Cursor
"Plug 'junegunn/vim-pseudocl'
"Plug 'junegunn/vim-oblique'
Plug 'jszakmeister/vim-togglecursor'
"Terminal and tmux
Plug 'kassio/neoterm'
Plug 'tpope/vim-dispatch'
Plug 'radenling/vim-dispatch-neovim'
Plug 'benmills/vimux'
Plug 'tmux-plugins/vim-tmux-focus-events'
Plug 'christoomey/vim-tmux-navigator'
"Git
Plug 'airblade/vim-gitgutter'
Plug 'tpope/vim-fugitive'
"Go
Plug 'fatih/vim-go'
Plug 'zchee/deoplete-go', { 'do': 'make'}
"Ruby
Plug 'tpope/vim-rails'
Plug 'vim-ruby/vim-ruby'
Plug 'tpope/vim-bundler'
Plug 'slim-template/vim-slim'
Plug 'ecomba/vim-ruby-refactoring'
"Search
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'rking/ag.vim'
Plug 'tpope/vim-sensible'
"Autocompletion build testing
Plug 'neomake/neomake'
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
Plug 'janko-m/vim-test'
Plug 'tpope/vim-endwise'
Plug 'jgdavey/vim-turbux'
"Code
Plug 'tpope/vim-surround'
Plug 'scrooloose/nerdcommenter'
Plug 'AndrewRadev/splitjoin.vim'
Plug 'tomtom/tcomment_vim'
Plug 'Yggdroot/indentLine'
"Windows
Plug 'jimsei/winresizer'
Plug 'mhinz/vim-sayonara', { 'on': 'Sayonara' }
"Themes
Plug 'kamwitsta/nordisk'
"Plug 'reedes/vim-colors-pencil'
"Plug 'ChrisKempson/Tomorrow-Theme'
"Plug 'chriskempson/base16-vim'
"Plug 'nanotech/jellybeans.vim'
"Plug 'mhartington/oceanic-next'
"Plug 'predawn/dark'
"Plug 'rakr/vim-two-firewatch'
"Plug 'juanedi/predawn.vim'
"Plug 'YorickPeterse/happy_hacking.vim'
"Plug 'jacoborus/tender.vim' "Yellow one
"Plug 'alessandroyorba/despacio'
"Plug 'tssm/fairyfloss.vim' "Violent
"Plug 'zaki/zazen' "Black-black
call plug#end()
set clipboard=unnamed
set number
set hidden
set ic
set autowrite
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set ignorecase
set smartcase
"Presentation and colors
if (has("termguicolors"))
set termguicolors
endif
syntax enable
let base16colorspace=256
"colorscheme slate
"colorscheme base16-default-dark
"colorscheme jellybeans
colorscheme nordisk
let g:gitgutter_sign_modified = ''
let g:gitgutter_sign_added = ''
highlight GitGutterAdd guifg = '#A3E28B'
" Nord scheme tuning: https://github.com/davidklsn/vim-sialoquent
set laststatus=2
let g:lightline = {
\ 'colorscheme': 'nordisk',
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'fugitive', 'readonly', 'filename', 'modified' ] ]
\ },
\ 'component': {
\ 'readonly': '%{&filetype=="help"?"":&readonly?"⭤":""}',
\ 'modified': '%{&filetype=="help"?"":&modified?"+":&modifiable?"":"-"}',
\ 'fugitive': '%{exists("*fugitive#head")?fugitive#head():""}'
\ },
\ 'component_visible_condition': {
\ 'readonly': '(&filetype!="help"&& &readonly)',
\ 'modified': '(&filetype!="help"&&(&modified||!&modifiable))',
\ 'fugitive': '(exists("*fugitive#head") && ""!=fugitive#head())'
\ },
\ 'separator': { 'left': '', 'right': '' },
\ 'subseparator': { 'left': '', 'right': '' }
\ }
"Align blocks of code
vmap < <gv
vmap > >gv
"Toggle cursor
let g:togglecursor_insert='blinking_underscore'
let g:togglecursor_default='blinking_block'
filetype plugin on
" Navigation assistance
noremap H ^
noremap L g_
noremap J 5j
nmap K 5k
autocmd! BufWritePost * Neomake
au FileType go nmap <Leader>gb <Plug>(go-doc-browser)
au FileType go nmap <Leader>gd <Plug>(go-doc)
au FileType go nmap <Leader>gv <Plug>(go-doc-vertical)
au FileType go nmap <Leader>ds <Plug>(go-def-split)
au FileType go nmap <Leader>dv <Plug>(go-def-vertical)
au FileType go nmap <Leader>dt <Plug>(go-def-tab)
au FileType go nmap <Leader>s <Plug>(go-implements)
au FileType go nmap <Leader>i <Plug>(go-info)
au FileType go nmap <Leader>e <Plug>(go-rename)
au FileType go nmap <leader>r <Plug>(go-run)
au FileType go nmap <leader>t <Plug>(go-test)
au FileType go nmap <Leader>c <Plug>(go-coverage-toggle)
au Filetype go command! -bang A call go#alternate#Switch(<bang>0, 'edit')
au Filetype go command! -bang AV call go#alternate#Switch(<bang>0, 'vsplit')
au Filetype go command! -bang AS call go#alternate#Switch(<bang>0, 'split')
au Filetype go command! -bang AT call go#alternate#Switch(<bang>0, 'tabe')
autocmd FileType make setlocal ts=8 sts=8 sw=8 noexpandtab
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
autocmd FileType eruby setlocal ts=2 sts=2 sw=2 expandtab
autocmd FileType coffee setlocal ts=2 sts=2 sw=2 expandtab
autocmd FileType javascript setlocal ts=4 sts=4 sw=4 expandtab
autocmd FileType mustache setlocal ts=2 sts=2 sw=2 expandtab
autocmd FileType ruby setlocal ts=2 sts=2 sw=2 expandtab
"autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
function! <SID>StripTrailingWhitespaces()
" preparation: save last search, and cursor position
let _s=@/
let l = line(".")
let c = col(".")
" do the business
%s/\s\+$//e
" clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
function! s:build_go_files()
let l:file = expand('%')
if l:file =~# '^\f\+_test\.go$'
call go#cmd#Test(0, 1)
elseif l:file =~# '^\f\+\.go$'
call go#cmd#Build(0)
endif
endfunction
au FileType go nmap <leader>b :<C-u>call <SID>build_go_files()<CR>
" NERDTree ------------------------------------------------------------------{{{
autocmd StdinReadPre * let s:std_in=1
" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
let NERDTreeShowHidden=1
let g:NERDTreeWinSize=35
let g:NERDTreeAutoDeleteBuffer=1
autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p
function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg)
exec 'autocmd FileType nerdtree highlight ' . a:extension .' ctermbg='. a:bg .' ctermfg='. a:fg .' guibg='. a:guibg .' guifg='. a:guifg
exec 'autocmd FileType nerdtree syn match ' . a:extension .' #^\s\+.*'. a:extension .'$#'
endfunction
call NERDTreeHighlightFile('jade', 'green', 'none', 'green', 'none')
call NERDTreeHighlightFile('md', 'blue', 'none', '#6699CC', 'none')
call NERDTreeHighlightFile('config', 'yellow', 'none', '#d8a235', 'none')
call NERDTreeHighlightFile('conf', 'yellow', 'none', '#d8a235', 'none')
call NERDTreeHighlightFile('json', 'green', 'none', '#d8a235', 'none')
call NERDTreeHighlightFile('html', 'yellow', 'none', '#d8a235', 'none')
call NERDTreeHighlightFile('css', 'cyan', 'none', '#5486C0', 'none')
call NERDTreeHighlightFile('scss', 'cyan', 'none', '#5486C0', 'none')
call NERDTreeHighlightFile('coffee', 'Red', 'none', '#ec5f67', 'none')
call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', 'none')
call NERDTreeHighlightFile('ts', 'Blue', 'none', '#6699cc', 'none')
call NERDTreeHighlightFile('ds_store', 'Gray', 'none', '#686868', 'none')
call NERDTreeHighlightFile('gitconfig', 'black', 'none', '#686868', 'none')
call NERDTreeHighlightFile('gitignore', 'Gray', 'none', '#7F7F7F', 'none')
"}}}
let test#strategy = "dispatch"
let g:airline_theme='tomorrow'
let g:airline#extensions#tabline#enabled = 1
let g:deoplete#enable_at_startup = 1
let g:test#preserve_screen = 1
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
let g:go_highlight_interfaces = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
let g:go_fmt_command = "goimports"
let g:no_turbux_mappings = 1
let g:turbux_runner = 'vimux'
let g:go_metalinter_autosave = 1
let mapleader=','
nmap <silent> <leader>t :TestNearest<CR>
nmap <silent> <leader>T :TestFile<CR>
nmap <silent> <leader>a :TestSuite<CR>
nmap <silent> <leader>l :TestLast<CR>
nmap <silent> <leader>g :TestVisit<CR>
" Buffers
set splitbelow
set splitright
cnoreabbrev <expr> x getcmdtype() == ":" && getcmdline() == 'x' ? 'Sayonara' : 'x'
nmap <leader>t :vs<cr> :term<cr>
nmap <leader>ts :sp<cr> :term<cr>
nmap <leader>, :bnext<CR>
nmap <leader>. :bprevious<CR>
map <leader>ew :e <C-R>=expand("%:p:h") . "/" <CR>
map <leader>es :sp <C-R>=expand("%:p:h") . "/" <CR>
map <leader>ev :vsp <C-R>=expand("%:p:h") . "/" <CR>
map <leader>et :tabe <C-R>=expand("%:p:h") . "/" <CR>
map <leader>rT <Plug>SendTestToTmux
map <leader>rt <Plug>SendFocusedTestToTmux
" vim-airline ---------------------------------------------------------------{{{
let g:airline#extensions#tabline#enabled = 1
set hidden
let g:airline#extensions#tabline#fnamemod = ':t'
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline_powerline_fonts = 1
"let g:airline_theme='oceanicnext'
let g:airline#extensions#tabline#buffer_idx_mode = 1
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9
let g:airline_section_x = airline#section#create_right(['%{neoterm#test#status("running")}%{neoterm#test#status("success")}%{neoterm#test#status("failed")}', 'tagbar', 'filetype'])
let g:neoterm_test_status_format = "%s"
let g:neoterm_test_status = {
\ "running": "\uf056 Tests Running",
\ "success": "\uf058 Tests Succeeded",
\ "failed": "\uf057 Test Failed"
\ }
"}}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment