" change runtime path
set runtimepath = ~ /.config/ vim /runtime/
execute pathogen #infect ( )
execute pathogen #helptags ( )
"we don't want vi compatibility AKA Make Vim more useful
set nocompatible
"color schemes
colorscheme torte
"colorscheme jellybeans
"colorscheme molokai
"colorscheme wombat256i
"colorscheme dragon-energy
"colorscheme patagonia-vim
"colorscheme vim-colors-solarized
"colorscheme vim-obsidian
"colorscheme rdark
"colorscheme ecostation
"colorscheme vilight
"colorscheme vim-tomorrow-theme
"colorscheme monokai
"colorscheme inkpot
"colorscheme CmptrClr
set omnifunc = syntaxcomplete #Complete
set completeopt - = preview
set wildignore = *.png , *.jpg , node_modules , *.min .js , *.txt , *.bak , *.exe , vendor .js
set autochdir
set tags = ./.git/ tags , tags ;$HOME
set noswapfile
set backupcopy = yes
set autoread
set selection = exclusive
set ttimeoutlen = 50
set termguicolors
" Use the OS clipboard by default (on versions compiled with `+clipboard`)
set clipboard = unnamedplus
" Enhance command-line completion
set wildmenu
" Allow cursor keys in insert mode
set esckeys
" Allow backspace in insert mode
set backspace = indent , eol , start
" Optimize for fast terminal connections
set ttyfast
" Add the g flag to search/replace by default
set gdefault
" Use UTF-8 without BOM
set encoding = utf -8 "nobomb
set binary
" Don't add empty newlines at the end of files
set noeol
set history = 500 " Number of things to remember in history.
set t_Co = 256
" Centralize backups, swapfiles and undo history
if exists ( "&backupdir" )
set backupdir = ~ /.config/ vim /backups/
endif
if exists ( "&directory" )
set directory = ~ /.config/ vim /swaps/
endif
if exists ( "&undodir" )
set undodir = ~ /.config/ vim /undo/
endif
" Respect modeline in files
set modeline
set modelines = 4
" Enable per-directory .vimrc files and disable unsafe commands in them
set exrc
set secure
" Enable line numbers
set number
" Enable syntax highlighting
syntax on
" Highlight current line
set cursorline
" Make tabs as wide as four spaces
set tabstop = 4
set expandtab
set shiftwidth = 4
" Show “invisible” characters
set lcs = tab :▸\ , trail :·, eol :¬, nbsp :_
set list
" Highlight searches
set hlsearch
" Ignore case of searches
set ignorecase
" Highlight dynamically as pattern is typed
set incsearch
" Always show status line
set laststatus = 2
" Enable mouse in all modes
set mouse = a
" Disable error bells
set noerrorbells
" Dont reset cursor to start of line when moving around.
set nostartofline
" Show the cursor position
set ruler
" Dont show the intro message when starting Vim
set shortmess = atI
" Show the current mode
set showmode
" Show the filename in the window titlebar
set title
" Show the (partial) command as its being typed
set showcmd
" Start scrolling x lines before the horizontal window border
set scrolloff = 4
autocmd FileType javascript setlocal ts = 4 sts = 4 sw = 4 expandtab
autocmd FileType yaml setlocal ts = 2 sts = 2 sw = 2 expandtab
autocmd Filetype go setlocal ts = 4 sw = 4 sts = 4 noexpandtab
" Change mapleader
let mapleader = ","
map < leader > < Space > :HardTimeToggle < CR >
map < Space > :noh < CR >
"replace
with regular newlines
noremap < leader > c :%s /
// g < CR >
"list buffers
map < leader > w :buffers < CR >
" open erros
map < leader > e :lw 5 < CR >
" mini buffer explorer toggle
map < Leader > b :MBEToggle < cr >
" easymotion mappings
" n character search
map < leader > / < Plug > ( easymotion - tn )
" 2 character search
map < leader > s < Plug > ( easymotion - s2 )
" nerdtree mapppings
nmap < leader > n :NERDTreeToggle %:p :h < CR >
nmap < leader > m :NERDTreeClose < CR > :NERDTreeFind < CR >
" strips whitespace
noremap < leader > ws :call StripWhitespace ( ) < CR >
" Strip trailing whitespace (,ss)
function ! StripWhitespace ( )
let save_cursor = getpos ( "." )
let old_query = getreg ( '/' )
:%s /\s\+$/ /e
call setpos ( '.' , save_cursor )
call setreg ( '/' , old_query )
endfunction
" pane resizing
noremap < C - w > :resize -3 < Cr >
noremap < C - x > :resize + 3 < Cr >
noremap < C - a > :vertical resize + 3 < Cr >
noremap < C - d > :vertical resize -3 < Cr >
"pane movements
noremap < C - h > < C - w > h
noremap < C - j > < C - w > j
noremap < C - k > < C - w > k
noremap < C - l > < C - w > l
map < leader > x :%s /\s\+$/ /< CR > :noh < Cr >
"reload vim config
noremap < leader > rr :so ~ /.vimrc < CR >
"open vimrc in a new tab
map < leader > v :tabedit ~ /.vimrc < CR >
map < F1 > < Nop >
" Save a file as root (,W)
noremap < leader > W :w ! sudo tee % > /dev/ null < CR >
" generate tags
nnoremap < leader > c :! ctags - R - f ./.git/ tags .< CR >
" enable neocomplete
let g :neocomplete #enable_at_startup = 0
" Use smartcase
let g :neocomplete #enable_smart_case = 0
" indent guides
let g :indent_guides_enable_on_vim_startup = 1
let g :indent_guides_guide_size = 1
let g :indent_guides_start_level = 2
" tern
let g :tern_show_argument_hits = 'on_hold'
let g :tern_map_keys = 1
let g :tern_map_prefix = '<leader>'
" vim-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
let g :go_highlight_extra_types = 1
let g :go_fmt_command = "goimports"
let g :go_fmt_autosave = 1
" -b -w -p"
let g :syntastic_go_checkers = ['go' , 'errcheck' , 'gofmt' , 'golint' , 'govet' ]
"let g:syntastic_mode_map = { 'mode': 'active', 'passive_filetypes': ['go'] }
" Automatic commands
if has ( "autocmd" )
" Use relative line numbers
if exists ( "&relativenumber" )
set relativenumber
au BufReadPost * set relativenumber
endif
" rename symbol
au FileType go nmap < Leader > r < Plug > ( go - rename )
" show type info
au FileType go nmap < Leader > ki < Plug > ( go - info )
" go def
au FileType go nmap < Leader > di < Plug > ( go - def - split )
au FileType go nmap < Leader > ds < Plug > ( go - def - vertical )
au FileType go nmap < Leader > dt < Plug > ( go - def - tab )
" go docs
au FileType go nmap < Leader > gd < Plug > ( go - doc )
au FileType go nmap < Leader > gi < Plug > ( go - doc - vertical )
au FileType go nmap < Leader > gb < Plug > ( go - doc - browser )
endif
" ctrl p
let g :ctrlp_map = '<C-P>'
"nnoremap <C-l> :CtrlPTag<cr>
let g :ctrlp_cmd = 'CtrlPLastMode'
let g :ctrlp_extensions = ['line' ]
let g :ctrlp_show_hidden = 1
"'c' - the directory of the current file.
"'a' - the directory of the current file, unless it is a subdirectory of the cwd
"'r' - the nearest ancestor of the current file that contains one of these directories or files: .git .hg .svn .bzr _darcs
"'w' - modifier to "r": start search from the cwd instead of the current file's directory
"0 or '' (empty string) - disable this feature.
let g :ctrlp_working_path_mode = 'ra'
let g :ctrlp_by_filename = 0
let g :ctrlp_max_files = 5000
let g :ctrlp_custom_ignore = {
\ 'dir' : '\v[\/]\.(git|hg|svn)$' ,
\ 'file' : '\v\.(exe|so|dll)$' ,
\ }
let g :go_disable_autoinstall = 0
"airline config
let g :airline #extensions #tabline #enabled = 1
" the separator used on the left side >
"let g:airline_left_sep='>'
" the separator used on the right side >
"let g:airline_right_sep='<'
" enable modified detection >
let g :airline_detect_modified = 1
" enable paste detection >
let g :airline_detect_paste = 1
" enable iminsert detection >
let g :airline_detect_iminsert = 1
" determine whether inactive windows should have the left section collapsed to only the filename of that buffer.
let g :airline_inactive_collapse = 1
" enable/disable csv integration for displaying the current column.
let g :airline #extensions #csv #enabled = 1
" customize the whitespace symbol. >
let g :airline #extensions #whitespace #symbol = '.'
" themes are automatically selected based on the matching colorscheme. this can be overridden by defining a value.
"let g:airline_theme=
" if you want to patch the airline theme before it gets applied, you can supply the name of a function where you can modify the palette.
let g :airline_theme_patch_func = 'AirlineThemePatch'
function ! AirlineThemePatch ( palette )
if g :airline_theme = = 'badwolf'
for colors in values ( a :palette .inactive )
let colors [3 ] = 245
endfor
endif
endfunction
" enable/disable automatic population of the `g:airline_symbols` dictionary with powerline symbols.
let g :airline_powerline_fonts = 1
" define the set of text to display for each mode.
let g :airline_mode_map = {
\ '__' : '-' ,
\ 'n' : 'N' ,
\ 'i' : 'I' ,
\ 'R' : 'R' ,
\ 'c' : 'C' ,
\ 'v' : 'V' ,
\ 'V' : 'V' ,
\ ' ' : 'V' ,
\ 's' : 'S' ,
\ 'S' : 'S' ,
\ ' ' : 'S' ,
\ }
" defines whether the preview window should be excluded from have its window statusline modified (may help with plugins which use the preview window heavily) >
let g :airline_exclude_preview = 0
" change the text for when no branch is detected >
let g :airline #extensions #branch #empty_message = 'No Branch'
" truncate long branch names to a fixed length >
let g :airline #extensions #branch #displayed_head_limit = 15
" enable/disable fugitive/lawrencium integration >
let g :airline #extensions #branch #enabled = 1
" syntastic settings
let g :syntastic_always_populate_loc_list = 1
let g :syntastic_auto_loc_list = 2
let g :syntastic_check_on_open = 1
let g :syntastic_check_on_wq = 1
let g :syntastic_loc_list_height = 1
let g :syntastic_enable_balloons = 1
let g :syntastic_javascript_checkers = ['standard' ]
" YCM
let g :ycm_key_list_select_completion = ['<TAB>' , '<Down>' ]
" Enable file type detection
filetype plugin indent on
augroup myvimrc
au !
au BufWritePost .vimrc so $MYVIMRC
augroup END
" Automatic commands
if has ( "autocmd" )
" Treat .json files as .js
autocmd BufNewFile , BufRead *.json setfiletype json syntax = javascript
" Treat .md files as Markdown
autocmd BufNewFile , BufRead *.md setlocal filetype = markdown
autocmd BufRead , BufNewFile *.html setfiletype html syntax = htmldjango
autocmd BufRead , BufNewFile *.template setfiletype html template syntax = htmldjango
autocmd BufRead , BufNewFile *.go setfiletype golang syntax = go
autocmd BufRead , BufNewFile *.php setfiletype php syntax = go
autocmd BufRead , BufNewFile Dockerfile * setfiletype Dockerfile syntax = go
" Spell check and line wrap just for git commit messages
autocmd Filetype gitcommit setlocal spell textwidth = 72
endif
au GUIEnter * set vb t_vb =
if has ( 'gui_running' )
set go = mt
set guifont = Literation \ Mono \ for \ Powerline :h12 , Literation_Mono_for_Powerline :h12 , Inconsolata \ for \ Powerline :h10 , Ubuntu \ Mono :h26 , Consolas :h12 , Courier :h12
endif