Created
February 2, 2017 03:32
-
-
Save jeffling/b6576a50e11fd20652e747fcfc4016d6 to your computer and use it in GitHub Desktop.
my vimrc
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
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