Created
September 12, 2017 05:44
-
-
Save v1k45/2e41d976266821332c76009fd625a83b to your computer and use it in GitHub Desktop.
My VIM config file
This file contains 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
"***************************************************************************** | |
"" Vim-PLug core | |
"***************************************************************************** | |
if has('vim_starting') | |
set nocompatible " Be iMproved | |
endif | |
let vimplug_exists=expand('~/.vim/autoload/plug.vim') | |
let g:vim_bootstrap_langs = "javascript,python" | |
let g:vim_bootstrap_editor = "vim" " nvim or vim | |
if !filereadable(vimplug_exists) | |
echo "Installing Vim-Plug..." | |
echo "" | |
silent !\curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim | |
let g:not_finish_vimplug = "yes" | |
" Run shell script if exist on custom select language | |
autocmd VimEnter * PlugInstall | |
endif | |
" Required: | |
call plug#begin(expand('~/.vim/plugged')) | |
"***************************************************************************** | |
"" Plug install packages | |
"***************************************************************************** | |
Plug 'scrooloose/nerdtree' | |
Plug 'jistr/vim-nerdtree-tabs' | |
Plug 'tpope/vim-commentary' | |
Plug 'tpope/vim-fugitive' | |
Plug 'ctrlpvim/ctrlp.vim' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'sheerun/vim-polyglot' | |
Plug 'vim-scripts/grep.vim' | |
Plug 'vim-scripts/CSApprox' | |
Plug 'bronson/vim-trailing-whitespace' | |
Plug 'Raimondi/delimitMate' | |
Plug 'majutsushi/tagbar' | |
Plug 'scrooloose/syntastic' | |
Plug 'Yggdroot/indentLine' | |
Plug 'avelino/vim-bootstrap-updater' | |
Plug 'ervandew/supertab' | |
Plug 'mattn/emmet-vim' | |
Plug 'tmhedberg/SimpylFold' | |
let g:make = 'gmake' | |
if system('uname -o') =~ '^GNU/' | |
let g:make = 'make' | |
endif | |
Plug 'Shougo/vimproc.vim', {'do': g:make} | |
"" Vim-Session | |
Plug 'xolox/vim-misc' | |
Plug 'xolox/vim-session' | |
if v:version >= 703 | |
Plug 'Shougo/vimshell.vim' | |
endif | |
if v:version >= 704 | |
"" Snippets | |
Plug 'SirVer/ultisnips' | |
Plug 'FelikZ/ctrlp-py-matcher' | |
endif | |
Plug 'honza/vim-snippets' | |
"" Color | |
Plug 'tomasr/molokai' | |
"" Custom bundles | |
"" Python Bundle | |
Plug 'davidhalter/jedi-vim' | |
"" Javascript Bundle | |
Plug 'jelera/vim-javascript-syntax' | |
Plug 'pangloss/vim-javascript' | |
Plug 'ternjs/tern_for_vim' | |
"" Include user's extra bundle | |
if filereadable(expand("~/.vimrc.local.bundles")) | |
source ~/.vimrc.local.bundles | |
endif | |
call plug#end() | |
" Required: | |
filetype plugin indent on | |
"***************************************************************************** | |
"" Basic Setup | |
"*****************************************************************************" | |
"" Encoding | |
set encoding=utf-8 | |
set fileencoding=utf-8 | |
set fileencodings=utf-8 | |
"" Fix backspace indent | |
set backspace=indent,eol,start | |
"" Tabs. May be overriten by autocmd rules | |
set tabstop=4 | |
set softtabstop=0 | |
set shiftwidth=4 | |
set expandtab | |
"" Map leader to , | |
let mapleader=',' | |
"" Enable hidden buffers | |
set hidden | |
"" Searching | |
set hlsearch | |
set incsearch | |
set ignorecase | |
set smartcase | |
"" Encoding | |
set bomb | |
set binary | |
set ttyfast | |
"" Directories for swp files | |
set nobackup | |
set noswapfile | |
set fileformats=unix,dos,mac | |
set showcmd | |
set shell=/bin/sh | |
" session management | |
let g:session_directory = "~/.vim/session" | |
let g:session_autoload = "no" | |
let g:session_autosave = "no" | |
let g:session_command_aliases = 1 | |
"***************************************************************************** | |
"" Visual Settings | |
"***************************************************************************** | |
syntax on | |
set ruler | |
set number | |
set cursorline | |
set foldenable | |
set foldlevelstart=10 | |
set foldnestmax=10 | |
set foldmethod=indent | |
nnoremap <space> za | |
let no_buffers_menu=1 | |
if !exists('g:not_finish_vimplug') | |
colorscheme molokai | |
endif | |
set mousemodel=popup | |
set t_Co=256 | |
set guioptions=egmrti | |
set gfn=Monospace\ 10 | |
if has("gui_running") | |
if has("gui_mac") || has("gui_macvim") | |
set guifont=Menlo:h12 | |
set transparency=7 | |
endif | |
else | |
let g:CSApprox_loaded = 1 | |
" IndentLine | |
let g:indentLine_enabled = 1 | |
let g:indentLine_concealcursor = 0 | |
let g:indentLine_char = '┆' | |
let g:indentLine_faster = 1 | |
if $COLORTERM == 'gnome-terminal' | |
set term=gnome-256color | |
else | |
if $TERM == 'xterm' | |
set term=xterm-256color | |
endif | |
endif | |
endif | |
if &term =~ '256color' | |
set t_ut= | |
endif | |
"" Disable the blinking cursor. | |
set gcr=a:blinkon0 | |
set scrolloff=3 | |
"" Status bar | |
set laststatus=2 | |
"" Use modeline overrides | |
set modeline | |
set modelines=10 | |
set title | |
set titleold="Terminal" | |
set titlestring=%F | |
set statusline=%F%m%r%h%w%=(%{&ff}/%Y)\ (line\ %l\/%L,\ col\ %c)\ | |
if exists("*fugitive#statusline") | |
set statusline+=%{fugitive#statusline()} | |
endif | |
" vim-airline | |
let g:airline_theme = 'powerlineish' | |
let g:airline#extensions#syntastic#enabled = 1 | |
let g:airline#extensions#branch#enabled = 1 | |
let g:airline#extensions#tabline#enabled = 1 | |
let g:airline#extensions#tagbar#enabled = 1 | |
"***************************************************************************** | |
"" Abbreviations | |
"***************************************************************************** | |
"" no one is really happy until you have this shortcuts | |
cnoreabbrev W! w! | |
cnoreabbrev Q! q! | |
cnoreabbrev Qall! qall! | |
cnoreabbrev Wq wq | |
cnoreabbrev Wa wa | |
cnoreabbrev wQ wq | |
cnoreabbrev WQ wq | |
cnoreabbrev W w | |
cnoreabbrev Q q | |
cnoreabbrev Qall qall | |
"" NERDTree configuration | |
let g:NERDTreeChDirMode=2 | |
let g:NERDTreeIgnore=['\.rbc$', '\~$', '\.pyc$', '\.db$', '\.sqlite$', '__pycache__'] | |
let g:NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\.bak$', '\~$'] | |
let g:NERDTreeShowBookmarks=1 | |
let g:nerdtree_tabs_focus_on_files=1 | |
let g:NERDTreeMapOpenInTabSilent = '<RightMouse>' | |
let g:NERDTreeWinSize = 50 | |
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.pyc,*.db,*.sqlite | |
nnoremap <silent> <F2> :NERDTreeFind<CR> | |
noremap <F3> :NERDTreeToggle<CR> | |
" grep.vim | |
nnoremap <silent> <leader>f :Rgrep<CR> | |
let Grep_Default_Options = '-IR' | |
let Grep_Skip_Files = '*.log *.db' | |
let Grep_Skip_Dirs = '.git node_modules' | |
" vimshell.vim | |
let g:vimshell_user_prompt = 'fnamemodify(getcwd(), ":~")' | |
let g:vimshell_prompt = '$ ' | |
" terminal emulation | |
if g:vim_bootstrap_editor == 'nvim' | |
nnoremap <silent> <leader>sh :terminal<CR> | |
else | |
nnoremap <silent> <leader>sh :VimShellCreate<CR> | |
endif | |
"***************************************************************************** | |
"" Functions | |
"***************************************************************************** | |
if !exists('*s:setupWrapping') | |
function s:setupWrapping() | |
set wrap | |
set wm=2 | |
set textwidth=79 | |
endfunction | |
endif | |
"***************************************************************************** | |
"" Autocmd Rules | |
"***************************************************************************** | |
"" The PC is fast enough, do syntax highlight syncing from start | |
augroup vimrc-sync-fromstart | |
autocmd! | |
autocmd BufEnter * :syntax sync fromstart | |
augroup END | |
"" Remember cursor position | |
augroup vimrc-remember-cursor-position | |
autocmd! | |
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif | |
augroup END | |
"" txt | |
augroup vimrc-wrapping | |
autocmd! | |
autocmd BufRead,BufNewFile *.txt call s:setupWrapping() | |
augroup END | |
"" make/cmake | |
augroup vimrc-make-cmake | |
autocmd! | |
autocmd FileType make setlocal noexpandtab | |
autocmd BufNewFile,BufRead CMakeLists.txt setlocal filetype=cmake | |
augroup END | |
set autoread | |
"***************************************************************************** | |
"" Mappings | |
"***************************************************************************** | |
"" Split | |
noremap <Leader>h :<C-u>split<CR> | |
noremap <Leader>v :<C-u>vsplit<CR> | |
"" Git | |
noremap <Leader>ga :Gwrite<CR> | |
noremap <Leader>gc :Gcommit<CR> | |
noremap <Leader>gsh :Gpush<CR> | |
noremap <Leader>gll :Gpull<CR> | |
noremap <Leader>gs :Gstatus<CR> | |
noremap <Leader>gb :Gblame<CR> | |
noremap <Leader>gd :Gvdiff<CR> | |
noremap <Leader>gr :Gremove<CR> | |
" session management | |
nnoremap <leader>so :OpenSession<Space> | |
nnoremap <leader>ss :SaveSession<Space> | |
nnoremap <leader>sd :DeleteSession<CR> | |
nnoremap <leader>sc :CloseSession<CR> | |
"" Tabs | |
nnoremap <Tab> gt | |
nnoremap <S-Tab> gT | |
nnoremap <silent> <S-t> :tabnew<CR> | |
"" Set working directory | |
nnoremap <leader>. :lcd %:p:h<CR> | |
"" Opens an edit command with the path of the currently edited file filled in | |
noremap <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR> | |
"" Opens a tab edit command with the path of the currently edited file filled | |
noremap <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR> | |
"" ctrlp.vim | |
set wildmode=list:longest,list:full | |
set wildignore+=*.o,*.obj,.git,*.rbc,*.pyc,__pycache__ | |
let g:ctrlp_custom_ignore = '\v[\/](node_modules|target|dist)|(\.(swp|tox|ico|git|hg|svn))$' | |
let g:ctrlp_user_command = "find %s -type f | grep -Ev '"+ g:ctrlp_custom_ignore +"'" | |
let g:ctrlp_use_caching = 1 | |
" The Silver Searcher | |
if executable('ag') | |
set grepprg=ag\ --nogroup\ --nocolor | |
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' | |
let g:ctrlp_use_caching = 0 | |
endif | |
cnoremap <C-P> <C-R>=expand("%:p:h") . "/" <CR> | |
noremap <leader>b :CtrlPBuffer<CR> | |
" let g:ctrlp_map = '<leader>e' | |
let g:ctrlp_map = '<c-p>' | |
let g:ctrlp_cmd = 'CtrlP' | |
let g:ctrlp_open_new_file = 'r' | |
let g:ctrlp_cache_dir = $HOME . '/.cache/ctrlp' | |
" snippets | |
let g:UltiSnipsExpandTrigger="<tab>" | |
let g:UltiSnipsJumpForwardTrigger="<tab>" | |
let g:UltiSnipsJumpBackwardTrigger="<c-b>" | |
let g:UltiSnipsEditSplit="vertical" | |
" syntastic | |
let g:syntastic_always_populate_loc_list=1 | |
let g:syntastic_error_symbol='✗' | |
let g:syntastic_warning_symbol='⚠' | |
let g:syntastic_style_error_symbol = '✗' | |
let g:syntastic_style_warning_symbol = '⚠' | |
let g:syntastic_auto_loc_list=1 | |
let g:syntastic_aggregate_errors = 1 | |
let g:syntastic_python_flake8_args='--ignore=E501,F403,F405' | |
" Tagbar | |
nmap <silent> <F4> :TagbarToggle<CR> | |
let g:tagbar_autofocus = 1 | |
" Disable visualbell | |
set novisualbell t_vb= | |
"" Copy/Paste/Cut | |
if has('unnamedplus') | |
set clipboard=unnamed,unnamedplus | |
endif | |
noremap YY "+y<CR> | |
noremap <leader>p "+gP<CR> | |
noremap XX "+x<CR> | |
if has('macunix') | |
" pbcopy for OSX copy/paste | |
vmap <C-x> :!pbcopy<CR> | |
vmap <C-c> :w !pbcopy<CR><CR> | |
endif | |
"" Buffer nav | |
noremap <leader>z :bp<CR> | |
noremap <leader>q :bp<CR> | |
noremap <leader>x :bn<CR> | |
noremap <leader>w :bn<CR> | |
"" Close buffer | |
noremap <leader>c :bd<CR> | |
"" Clean search (highlight) | |
nnoremap <silent> <leader><space> :noh<cr> | |
"" Switching windows | |
noremap <C-j> <C-w>j | |
noremap <C-k> <C-w>k | |
noremap <C-l> <C-w>l | |
noremap <C-h> <C-w>h | |
"" Vmap for maintain Visual Mode after shifting > and < | |
vmap < <gv | |
vmap > >gv | |
"" Move visual block | |
vnoremap J :m '>+1<CR>gv=gv | |
vnoremap K :m '<-2<CR>gv=gv | |
"" Open current line on GitHub | |
nnoremap <Leader>o :.Gbrowse<CR> | |
"" Custom configs | |
" vim-python | |
augroup vimrc-python | |
autocmd! | |
autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8 colorcolumn=89 | |
\ formatoptions+=croq softtabstop=4 smartindent | |
\ cinwords=if,elif,else,for,while,try,except,finally,def,class,with | |
augroup END | |
" jedi-vim | |
let g:jedi#popup_on_dot = 0 | |
let g:jedi#goto_assignments_command = "<leader>g" | |
let g:jedi#goto_definitions_command = "<leader>d" | |
let g:jedi#documentation_command = "K" | |
let g:jedi#usages_command = "<leader>n" | |
let g:jedi#rename_command = "<leader>r" | |
let g:jedi#show_call_signatures = "0" | |
let g:jedi#completions_command = "<C-Space>" | |
let g:jedi#smart_auto_mappings = 0 | |
" syntastic | |
let g:syntastic_python_checkers=['python', 'flake8'] | |
" vim-airline | |
let g:airline#extensions#virtualenv#enabled = 1 | |
let g:javascript_enable_domhtmlcss = 1 | |
" vim-javascript | |
augroup vimrc-javascript | |
autocmd! | |
autocmd FileType javascript set tabstop=4|set shiftwidth=4|set expandtab softtabstop=4 smartindent | |
augroup END | |
" vim-html | |
augroup vimrc-html | |
autocmd! | |
autocmd FileType html set tabstop=2|set shiftwidth=2|set expandtab softtabstop=2 smartindent | |
augroup END | |
"" Include user's local vim config | |
if filereadable(expand("~/.vimrc.local")) | |
source ~/.vimrc.local | |
endif | |
"***************************************************************************** | |
"" Convenience variables | |
"***************************************************************************** | |
" vim-airline | |
if !exists('g:airline_symbols') | |
let g:airline_symbols = {} | |
endif | |
if !exists('g:airline_powerline_fonts') | |
let g:airline#extensions#tabline#left_sep = ' ' | |
let g:airline#extensions#tabline#left_alt_sep = '|' | |
let g:airline_left_sep = '▶' | |
let g:airline_left_alt_sep = '»' | |
let g:airline_right_sep = '◀' | |
let g:airline_right_alt_sep = '«' | |
let g:airline#extensions#branch#prefix = '⤴' "➔, ➥, ⎇ | |
let g:airline#extensions#readonly#symbol = '⊘' | |
let g:airline#extensions#linecolumn#prefix = '¶' | |
let g:airline#extensions#paste#symbol = 'ρ' | |
let g:airline_symbols.linenr = '␊' | |
let g:airline_symbols.branch = '⎇' | |
let g:airline_symbols.paste = 'ρ' | |
let g:airline_symbols.paste = 'Þ' | |
let g:airline_symbols.paste = '∥' | |
let g:airline_symbols.whitespace = 'Ξ' | |
else | |
let g:airline#extensions#tabline#left_sep = '' | |
let g:airline#extensions#tabline#left_alt_sep = '' | |
" powerline symbols | |
let g:airline_left_sep = '' | |
let g:airline_left_alt_sep = '' | |
let g:airline_right_sep = '' | |
let g:airline_right_alt_sep = '' | |
let g:airline_symbols.branch = '' | |
let g:airline_symbols.readonly = '' | |
let g:airline_symbols.linenr = '' | |
endif | |
let virtualenv=$VIRTUAL_ENV | |
" By default pick python3 for any python file | |
let pyVersion = 'py3' | |
" Switch version based on virtualenv names | |
if virtualenv =~ 'qpk-backend' | |
let pyVersion = 'py2' | |
endif | |
" *********** VIRTUAL ENV SUPPORT | |
" Add the virtualenv's site-packages to vim path (for python3) | |
if pyVersion == 'py3' | |
python3 << EOF | |
import os.path | |
import sys | |
import vim | |
if 'VIRTUAL_ENV' in os.environ: | |
project_base_dir = os.environ['VIRTUAL_ENV'] | |
sys.path.insert(0, project_base_dir) | |
# activate_this = os.path.join(project_base_dir, 'bin/activate_this.py') | |
# execfile(activate_this, dict(__file__=activate_this)) | |
EOF | |
"endif | |
" *********** VIRTUAL ENV SUPPORT END | |
" *********** VIRTUAL ENV SUPPORT | |
" Add the virtualenv's site-packages to vim path | |
elseif pyVersion == 'py2' | |
python << EOF | |
import os | |
import os.path | |
import sys | |
import vim | |
if 'VIRTUAL_ENV' in os.environ: | |
project_base_dir = os.environ['VIRTUAL_ENV'] | |
sys.path.insert(0, project_base_dir) | |
activate_this = os.path.join(project_base_dir, 'bin/activate_this.py') | |
execfile(activate_this, dict(__file__=activate_this)) | |
EOF | |
endif | |
" *********** VIRTUAL ENV SUPPORT END | |
" Autocompletion related config | |
set omnifunc=syntaxcomplete#Complete | |
let g:tern_map_keys=1 | |
let g:tern_show_argument_hints="on_hold" | |
let g:SuperTabDefaultCompletionType = "<c-x><c-o>" | |
inoremap <S-TAB> <C-X><C-O> | |
" Disable arrow keys in normal mode | |
map <up> <nop> | |
map <down> <nop> | |
map <right> <nop> | |
map <left> <nop> | |
" Disable arrow keys in insert mode | |
imap <up> <nop> | |
imap <down> <nop> | |
imap <right> <nop> | |
imap <left> <nop> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment