Last active
August 24, 2017 09:37
-
-
Save hemc4/baa9553f1b4ad820ba68b19e89b5907f to your computer and use it in GitHub Desktop.
vimrc configuration
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
""""""""""""""""" | |
"Vundle | |
"""""""""""""""" | |
set nocompatible " be iMproved, required | |
filetype off " required | |
" set the runtime path to include Vundle and initialize | |
set rtp+=$HOME/.vim/bundle/Vundle.vim | |
call vundle#begin() | |
Plugin 'VundleVim/Vundle.vim' | |
Bundle 'Powerline/powerline', {'rtp': 'powerline/bindings/vim/'} | |
Plugin 'scrooloose/nerdtree' | |
Plugin 'vim-syntastic/syntastic' | |
Plugin 'airblade/vim-gitgutter' | |
Plugin 'fatih/vim-go' | |
call vundle#end() " required | |
filetype plugin indent on " required | |
"""""""""""""" | |
" Settings | |
"""""""""""""" | |
syntax on | |
set ttyfast " Indicate fast terminal conn for faster redraw | |
set ttymouse=xterm2 " Indicate terminal type for mouse codes | |
set ttyscroll=3 " Speedup scrolling | |
set laststatus=2 " Show status line always | |
set encoding=utf-8 " Set default encoding to UTF-8 | |
set autoread " Automatically read changed files | |
set autoindent " Enabile Autoindent | |
set backspace=indent,eol,start " Makes backspace key more powerful. | |
set incsearch " Shows the match while typing | |
set hlsearch " Highlight found searches | |
set noerrorbells " No beeps | |
set number " Show line numbers | |
set showcmd " Show me what I'm typing | |
set noswapfile " Don't use swapfile | |
set nobackup " Don't create annoying backup files | |
set splitright " Vertical windows should be split to right | |
set splitbelow " Horizontal windows should split to bottom | |
set autowrite " Automatically save before :next, :make etc. | |
set hidden " Buffer should still exist if window is closed | |
set fileformats=unix,dos,mac " Prefer Unix over Windows over OS 9 formats | |
set noshowmatch " Do not show matching brackets by flickering | |
set noshowmode " We show the mode with airline or lightline | |
set ignorecase " Search case insensitive... | |
set smartcase " ... but not it begins with upper case | |
set completeopt=menu,menuone " Show popup menu, even if there is one entry | |
set pumheight=10 " Completion window max size | |
set nocursorcolumn " Do not highlight column (speeds up highlighting) | |
set nocursorline " Do not highlight cursor (speeds up highlighting) | |
set lazyredraw " Wait to redraw | |
""""""""""""""""""""""" | |
"powerline | |
""""""""""""""""""""""" | |
set guifont=Inconsolata\ for\ Powerline:h15 | |
let g:Powerline_symbols = 'fancy' | |
set encoding=utf-8 | |
set t_Co=256 | |
set fillchars+=stl:\ ,stlnc:\ | |
set term=xterm-256color | |
set termencoding=utf-8 | |
"""""""""""""" | |
"MACVIM | |
"""""""""""""" | |
if has("gui_running") | |
let s:uname = system("uname") | |
if s:uname == "Darwin\n" | |
set guifont=Inconsolata\ for\ Powerline:h15 | |
endif | |
endif | |
""""""""" | |
"undo/ redo | |
""""""""" | |
" This enables us to undo files even if you exit Vim. | |
if has('persistent_undo') | |
set undofile | |
set undodir=~/.config/vim/tmp/undo// | |
endif | |
"""""""""" | |
" Map Leader | |
"""""""""""" | |
" With a map leader it's possible to do extra key combinations | |
" " like <leader>w saves the current file | |
" | |
let mapleader = "," | |
let g:mapleader = "," | |
" Fast saves | |
nmap <leader>w :w!<cr> | |
" " Down is really the next line | |
nnoremap j gj | |
nnoremap k gk | |
" "Easy escaping to normal model | |
imap jj <esc> | |
" "Auto change directory to match current file ,cd | |
nnoremap ,cd :cd %:p:h<CR>:pwd<CR> | |
" "Resize vsplit | |
nmap <C-v> :vertical resize +5<cr> | |
nmap 25 :vertical resize 40<cr> | |
nmap 50 <c-w>= | |
nmap 75 :vertical resize 120<cr> | |
nmap <C-b> :NERDTreeToggle<cr> | |
" "Load the current buffer in Chrome | |
nmap ,c :!open -a Google\ Chrome<cr> | |
" "Show (partial) command in the status line | |
set showcmd | |
" " Create split below | |
nmap :sp :rightbelow sp<cr> | |
" " Quickly go forward or backward to buffer | |
nmap :bp :BufSurfBack<cr> | |
nmap :bn :BufSurfForward<cr> | |
highlight Search cterm=underline | |
nmap <C-l> :tabn<CR> | |
nmap <C-h> :tabp<CR> | |
nmap <C-n> :tabnew<CR> | |
"""""" | |
"vim-go | |
""""""" | |
" vim-go | |
let g:go_fmt_command = "goimports" | |
let g:go_autodetect_gopath = 1 | |
let g:go_list_type = "quickfix" | |
let g:go_highlight_types = 1 | |
let g:go_highlight_fields = 1 | |
let g:go_highlight_functions = 1 | |
let g:go_highlight_methods = 1 | |
let g:go_highlight_extra_types = 1 | |
let g:go_highlight_generate_tags = 1 | |
" Open :GoDeclsDir with ctrl-g | |
nmap <C-g> :GoDeclsDir<cr> | |
imap <C-g> <esc>:<C-u>GoDeclsDir<cr> | |
augroup go | |
autocmd! | |
" Show by default 4 spaces for a tab | |
autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4 | |
" :GoBuild and :GoTestCompile | |
autocmd FileType go nmap <leader>b :<C-u>call <SID>build_go_files()<CR> | |
" :GoTest | |
autocmd FileType go nmap <leader>t <Plug>(go-test) | |
" :GoRun | |
autocmd FileType go nmap <leader>r <Plug>(go-run) | |
" :GoDoc | |
autocmd FileType go nmap <Leader>d <Plug>(go-doc) | |
" :GoCoverageToggle | |
autocmd FileType go nmap <Leader>c <Plug>(go-coverage-toggle) | |
" :GoInfo | |
autocmd FileType go nmap <Leader>i <Plug>(go-info) | |
" :GoMetaLinter | |
autocmd FileType go nmap <Leader>l <Plug>(go-metalinter) | |
" :GoDef but opens in a vertical split | |
autocmd FileType go nmap <Leader>v <Plug>(go-def-vertical) | |
" :GoDef but opens in a horizontal split | |
autocmd FileType go nmap <Leader>s <Plug>(go-def-split) | |
" :GoAlternate commands :A, :AV, :AS and :AT | |
autocmd Filetype go command! -bang A call go#alternate#Switch(<bang>0, 'edit') | |
autocmd Filetype go command! -bang AV call go#alternate#Switch(<bang>0, 'vsplit') | |
autocmd Filetype go command! -bang AS call go#alternate#Switch(<bang>0, 'split') | |
autocmd Filetype go command! -bang AT call go#alternate#Switch(<bang>0, 'tabe') | |
augroup END | |
" build_go_files is a custom function that builds or compiles the test file. | |
" It calls :GoBuild if its a Go file, or :GoTestCompile if it's a test file | |
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 | |
"""""""""""" | |
"copy/paste | |
"""""""""'" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment