Skip to content

Instantly share code, notes, and snippets.

@jeffling
Created February 2, 2017 03:32
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeffling/b6576a50e11fd20652e747fcfc4016d6 to your computer and use it in GitHub Desktop.
Save jeffling/b6576a50e11fd20652e747fcfc4016d6 to your computer and use it in GitHub Desktop.
my vimrc
let mapleader = ','
let g:plug_timeout = 1000
call plug#begin('~/.vim/bundle')
" My Plugs
Plug 'airblade/vim-gitgutter'
Plug 'altercation/vim-colors-solarized'
Plug 'bling/vim-airline'
Plug 'chrisbra/SudoEdit.vim'
Plug 'christoomey/vim-tmux-navigator'
Plug 'derekwyatt/vim-scala', {'for': 'scala'}
Plug 'dhruvasagar/vim-vinegar'
Plug 'elixir-lang/vim-elixir', {'for': 'elixir'}
Plug 'elzr/vim-json', {'for': 'json'}
Plug 'fatih/vim-go', {'for': 'go'}
Plug 'gregsexton/MatchTag', {'for': ['html', 'xml']}
Plug 'int3/vim-extradite'
Plug 'jaxbot/github-issues.vim'
Plug 'jelera/vim-javascript-syntax', {'for': 'javascript'}
Plug 'jiangmiao/auto-pairs'
Plug 'junegunn/vim-easy-align'
Plug 'justinmk/vim-sneak'
Plug 'kchmck/vim-coffee-script', {'for': 'coffee'}
Plug 'kien/ctrlp.vim'
Plug 'leafgarland/typescript-vim', {'for': 'typescript'}
Plug 'lukaszkorecki/coffeetags', {'for': 'coffee'}
Plug 'majutsushi/tagbar'
Plug 'moll/vim-node', {'for': ['coffee', 'javascript']}
Plug 'mtth/scratch.vim'
Plug 'nathanaelkane/vim-indent-guides'
Plug 'pangloss/vim-javascript', {'for': 'javascript'}
Plug 'Quramy/tsuquyomi', {'for': 'typescript'}
Plug 'rking/ag.vim'
Plug 'scrooloose/nerdtree'
Plug 'scrooloose/syntastic'
Plug 'Shougo/vimproc.vim', {'do': 'make'}
Plug 'terryma/vim-multiple-cursors'
Plug 'tmhedberg/matchit', {'for': ['html', 'xml']}
Plug 'tomtom/tcomment_vim'
Plug 'tpope/vim-endwise'
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-sensible'
Plug 'tpope/vim-sleuth'
Plug 'tpope/vim-surround'
Plug 'Valloric/YouCompleteMe', {'do': './install.sh'}
Plug 'vim-scripts/Greplace.vim'
" All of your Plugins must be added before the following line
call plug#end() " required
" basic visual stuff
syntax on " enable syntax highlighting
filetype plugin indent on " required
set background=dark
color solarized
let g:solarized_termcolors=16
set guifont=Sauce\ Code\ Powerline:h13
set modelines=0
set clipboard=unnamed
set synmaxcol=128
set ttyscroll=10
set encoding=utf-8
set tabstop=2
set number
set nowritebackup
set noswapfile
set nobackup
set hlsearch
set ignorecase
set smartcase
set nocp
set title
set nocompatible " disregard vi compatibility:
set dir=~/.vim/swap,/tmp " keep swap files in one place
set bdir=~/.vim/backup,/tmp " keep backups in one place
set undodir=~/.vim/undo,/tmp " keep undos in one place
set encoding=utf-8 " UTF-8 encoding for all new files
set termencoding=utf-8 " force terminal encoding
set mouse=a " allow mouse input in all modes
set ttymouse=xterm2 " enable scrolling within screen sessions (MUST HAVE)
set backspace=2 " full backspacing capabilities (indent,eol,start)
set history=100 " 100 lines of command line history
set number " show line numbers
set numberwidth=1 " minimum num of cols to reserve for line numbers
set nobackup " disable backup files (filename~)
set showmatch " show matching brackets (),{DF}
set ww=h,l,<,>,[,] " whichwrap -- left/right keys can traverse up/down
set wrap " wrap long lines to fit terminal width
set ttyfast " tell vim we're using a fast terminal for redraws
set autoread " reload file if vim detects it changed elsewhere
set wildmenu " enhanced tab-completion shows all matching cmds
set splitbelow " place the new split below the current file
set autowrite " write file if modified on each :next, :make, etc.
set shell=/bin/sh " default shell type
set previewheight=9 " default height for a preview window (def:12)
set grepprg=grep\ -nH\ $*
set wildmode=longest,list:longest
set hidden " un-saved buffers in the background
set cc=80
set laststatus=2 " show the status bar even when editing one file.
set lazyredraw
set cul! " disavle highlighting current line
" Automatic formatting
autocmd BufWritePre *.rb :%s/\s\+$//e
autocmd BufWritePre *.go :%s/\s\+$//e
autocmd BufWritePre *.haml :%s/\s\+$//e
autocmd BufWritePre *.html :%s/\s\+$//e
autocmd BufWritePre *.scss :%s/\s\+$//e
autocmd BufWritePre *.slim :%s/\s\+$//e
" makefile
autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0
" set filetypes
au BufNewFile * set noeol
au BufRead,BufNewFile *.go set filetype=go
au BufRead,BufNewFile *.scala set filetype=scala
au BufRead,BufNewFile *.coffee set filetype=coffee
au BufRead,BufNewFile *.json set filetype=json
au BufRead,BufNewFile *.ejs set filetype=javascript
" No show command
autocmd VimEnter * set nosc
" spell checking
autocmd BufRead,BufNewFile *.md setlocal spell
autocmd FileType gitcommit setlocal spell
" Quick ESC
imap jj <ESC>
" Jump to the next row on long lines
map <Down> gj
map <Up> gk
nnoremap j gj
nnoremap k gk
" format the entire file
nmap <leader>fef ggVG=
" Open new buffers
nmap <leader>s<left> :leftabove vnew<cr>
nmap <leader>s<right> :rightbelow vnew<cr>
nmap <leader>s<up> :leftabove new<cr>
nmap <leader>s<down> :rightbelow new<cr>
" Tab between buffers
noremap <tab> <c-w><c-w>
" Switch between last two buffers
nnoremap <leader><leader> <C-^>
" NERDTree
" let NERDTreeHijackNetrw = 1
nmap <leader>e :NERDTreeToggle<CR>
nmap <leader>f :NERDTreeFind<CR>
let NERDTreeHighlightCursorline=1
let NERDTreeIgnore = ['tmp', '.yardoc', 'pkg']
" Syntastic
let g:syntastic_mode_map = {
\ "mode": "active",
\ "active_filetypes": ["ruby", "coffee", "javascript", "scala"] }
let g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.0.0-p0/bin/ruby'
" disable quickfix
let g:syntastic_auto_loc_list = 0
let g:syntastic_always_populate_loc_list = 0
" Use tsuquyomi for syntax
let g:tsuquyomi_disable_quickfix = 1
let g:syntastic_typescript_checkers = ['tsuquyomi']
" Tsuquyomi
autocmd FileType typescript nmap <buffer> <Leader>t : <C-u>echo tsuquyomi#hint()<CR>
" Tagbar
nmap <F8> :TagbarToggle<CR>
" CtrlP
nmap <D-p> :CtrlP<CR>
let g:ctrlp_working_path_mode = 'ra'
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,bower_components/,node_modules/, " MacOSX/Linux
let g:ctrlp_custom_ignore = '\v[\/](node_modules|bower_components|target|dist)|(\.(swp|ico|git|svn))$'
" disable sounds >.<
set noeb vb t_vb=
" so GitGutter works with solarize
highlight clear SignColumn
highlight GitGutterAdd ctermfg=green guifg=darkgreen
highlight GitGutterChange ctermfg=yellow guifg=darkyellow
highlight GitGutterDelete ctermfg=red guifg=darkred
highlight GitGutterChangeDelete ctermfg=yellow guifg=darkyellow
" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>:<backspace>
nnoremap <esc>^[ <esc>^[
" semantic highlight
" autocmd BufNewFile,BufReadPost * :SemanticHighlight
" persistent NERDtree buffer
" autocmd BufEnter * if &modifiable | NERDTreeFind | wincmd p | endif
" coffeescript Setup
let coffee_compile_vert = 1
let coffee_watch_vert = 1
autocmd BufWritePre *.coffee :%s/\s\+$//e
autocmd BufWritePre *.js :%s/\s\+$//e
" Go setup
au FileType go nmap <Leader>s <Plug>(go-implements)
au FileType go nmap <leader>r <Plug>(go-run)
au FileType go nmap <leader>b <Plug>(go-build)
au FileType go nmap <leader>t <Plug>(go-test)
au FileType go nmap <leader>c <Plug>(go-coverage)
au FileType go nmap <Leader>n <Plug>(go-rename)
au FileType go nmap <Leader>gd <Plug>(go-doc)
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
let g:go_auto_type_info = 1
let g:go_fmt_command = "goimports"
let $GOPATH = $HOME."/Code/go"
let $GOROOT = "/usr/local/opt/go/libexec"
" Javascript setup
" tern
" au FileType javascript nmap <Leader>gd :TernDef<CR>
" au FileType javascript nmap <Leader>n :TernRename<CR>
" let g:tern_show_argument_hints = 'on_move'
" let g:tern_show_signature_in_pum = 1
au FileType javascript set tabstop=2
au FileType javascript set shiftwidth=2
let g:syntastic_javascript_checkers = ['eslint']
let g:syntastic_javascript_jshint_exec='/Users/jeff/.nvm-fish/v0.10.26/bin/jshint'
" clojure setup
au FileType javascript set tabstop=2
au FileType javascript set shiftwidth=2
" commenting hotkey
map <D-/> :TComment<CR>
imap <D-/> <ESC>:TComment<CR>
map <leader>/ :TComment<CR>
" vimrc autoreload
augroup reload_vimrc
autocmd!
autocmd BufWritePost $MYVIMRC :so $MYVIMRC
augroup END
" restore cursor position on buffer load
function! ResCur()
if line("'\"") <= line("$")
normal! g`"
return 1
endif
endfunction
augroup resCur
autocmd!
autocmd BufWinEnter * call ResCur()
augroup END
" Start interactive EasyAlign in visual mode (e.g. vip<Enter>)
vmap <Enter> <Plug>(EasyAlign)
" YouCompleteMe
let g:ycm_autoclose_preview_window_after_completion = 1
if !exists("g:ycm_semantic_triggers")
let g:ycm_semantic_triggers = {}
endif
let g:ycm_semantic_triggers['typescript'] = ['.']
" vim github issues
let g:github_access_token = "f2f3b62a157f9f985ab363780841567edfddcca9"
" Allow saving of files as sudo when I forgot to start vim using sudo.
cmap w!! w !sudo tee > /dev/null %
let g:netrw_liststyle = 3
" format json using python
command! FormatJSON execute "%!python -m json.tool”
" easier split nav
nnoremap <C-J> :TmuxNavigateDown<cr>
nnoremap <C-K> :TmuxNavigateUp<cr>
nnoremap <C-L> :TmuxNavigateRight<cr>
nnoremap <C-H> :TmuxNavigateLeft<cr>
" whitespace hungry delete
imap <BS> <Esc>d?\S?e1<CR>i
" s and S to insert single char
nnoremap s :exec "normal i".nr2char(getchar())."\e"<CR>
nnoremap S :exec "normal a".nr2char(getchar())."\e"<CR>
" I don't need vim help, I'm the best
nmap <F1> <nop>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment