Last active
December 20, 2017 07:38
-
-
Save jetsanix/29c054895fdcb512b9b7870f8dd74704 to your computer and use it in GitHub Desktop.
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
set nocompatible " be iMproved, required | |
set background=dark | |
set dir=$HOME/.vim_tmp/swap | |
if !isdirectory(&dir) | call mkdir(&dir, 'p', 0700) | endif | |
"filetype off " required | |
" set the runtime path to include Vundle and initialize | |
set rtp+=~/.vim/bundle/Vundle.vim | |
call vundle#begin() | |
" alternatively, pass a path where Vundle should install plugins | |
"call vundle#begin('~/some/path/here') | |
" let Vundle manage Vundle, required | |
Plugin 'VundleVim/Vundle.vim' | |
" The following are examples of different formats supported. | |
" Keep Plugin commands between vundle#begin/end. | |
" plugin on GitHub repo | |
Plugin 'tpope/vim-fugitive' | |
" plugin from http://vim-scripts.org/vim/scripts.html | |
" Plugin 'L9' | |
" Git plugin not hosted on GitHub | |
" git repos on your local machine (i.e. when working on your own plugin) | |
" Pass the path to set the runtimepath properly. | |
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} | |
" Install L9 and avoid a Naming conflict if you've already installed a | |
" different version somewhere else. | |
" Plugin 'ascenator/L9', {'name': 'newL9'} | |
Plugin 'fatih/vim-go' | |
Plugin 'Valloric/YouCompleteMe' | |
Plugin 'tmhedberg/SimpylFold' | |
Plugin 'scrooloose/nerdtree' | |
Plugin 'Xuyuanp/nerdtree-git-plugin' | |
Plugin 'kien/ctrlp.vim' | |
Plugin 'vim-airline/vim-airline' | |
Plugin 'vim-airline/vim-airline-themes' | |
" Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'} | |
Plugin 'posva/vim-vue' | |
Plugin 'scrooloose/syntastic' | |
Plugin 'Chiel92/vim-autoformat' | |
Plugin 'eugen0329/vim-esearch' | |
Plugin 'majutsushi/tagbar' | |
Plugin 'dgryski/vim-godef' | |
Plugin 'tpope/vim-surround' | |
Bundle 'sudar/comments.vim' | |
" Plugin 'Raimondi/delimitMate' | |
" All of your Plugins must be added before the following line | |
call vundle#end() " required | |
filetype plugin indent on " required | |
" To ignore plugin indent changes, instead use: | |
"filetype plugin on | |
" | |
" Brief help | |
" :PluginList - lists configured plugins | |
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate | |
" :PluginSearch foo - searches for foo; append `!` to refresh local cache | |
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal | |
" | |
" see :h vundle for more details or wiki for FAQ | |
" Put your non-Plugin stuff after this line | |
syntax enable | |
let g:airline#extensions#tabline#enabled = 1 | |
filetype plugin indent on | |
map <C-n> :NERDTreeToggle<CR> | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif | |
" let NERDTreeIgnore=['\.pyc$', '\~$', 'node_modules'] "ignore files in | |
" NERDTree | |
let NERDTreeMinimalUI=1 | |
let NERDTreeShowHidden=1 | |
let g:ctrlp_working_path_mode = 'ra' | |
set wildignore+=*/tmp/*,*/node_modules/*,*.so,*.swp,*.zip | |
let g:ctrlp_custom_ignore = {'dir': '\v[\/]\.(git|hg|svn)$', 'file': '\v\.(exe|so|dll)$'} | |
set encoding=utf-8 | |
set t_Co=256 | |
"set fillchars+=stl:\ ,stlnc:\ | |
set term=xterm-256color | |
set termencoding=utf-8 | |
" set clipboard+=unnamed | |
let g:syntastic_javascript_checkers = ['eslint'] | |
let g:syntastic_always_populate_loc_list = 1 | |
let g:formatters_javascript = ['eslint'] | |
let g:formatters_vue = ['eslint'] | |
noremap <F3> :Autoformat<CR> | |
" auto-formatter | |
function! ESlintJSFormatter() | |
let l:npm_bin = '' | |
let l:eslint = 'eslint' | |
if executable('npm') | |
let l:npm_bin = split(system('npm bin'), '\n')[0] | |
endif | |
if strlen(l:npm_bin) && executable(l:npm_bin . '/eslint') | |
let l:eslint = l:npm_bin . '/eslint' | |
endif | |
let g:formatdef_eslint = '"SRC=eslint-temp-${RANDOM}.js; cat - >$SRC; ' . l:eslint . ' --fix $SRC >/dev/null 2>&1; cat $SRC | perl -pe \"chomp if eof\"; rm -f $SRC"' | |
endfunction | |
function! ESlintVueFormatter() | |
let l:npm_bin = '' | |
let l:eslint = 'eslint' | |
if executable('npm') | |
let l:npm_bin = split(system('npm bin'), '\n')[0] | |
endif | |
if strlen(l:npm_bin) && executable(l:npm_bin . '/eslint') | |
let l:eslint = l:npm_bin . '/eslint' | |
endif | |
let g:formatdef_eslint = '"SRC=eslint-temp-${RANDOM}.vue; cat - >$SRC; ' . l:eslint . ' --fix $SRC >/dev/null 2>&1; cat $SRC | perl -pe \"chomp if eof\"; rm -f $SRC"' | |
endfunction | |
" YCM settings | |
let g:ycm_key_list_select_completion = ['', ''] | |
let g:ycm_key_list_previous_completion = [''] | |
let g:ycm_key_invoke_completion = '<A-Space>' | |
" go | |
let g:go_fmt_command = "goimports" | |
" for clipboard | |
" map "+y :w !pbcopy<CR><CR> | |
" map "+p :r !pbpaste<CR><CR> | |
" ctrl-x for cut | |
vmap <C-x> :!pbcopy<cr> | |
" ctrl-c for copy | |
vmap <C-c> :w !pbcopy<cr><cr> | |
" ctrl-v for paste | |
"nmap <C-v> :set paste<CR>:r !pbpaste<CR>:set nopaste<CR> | |
" imap <C-v> <Esc>:set paste<CR>:r !pbpaste<CR>:set nopaste<CR> | |
nmap <F8> :TagbarToggle<CR> | |
" for golang | |
let g:tagbar_type_go = { | |
\ 'ctagstype' : 'go', | |
\ 'kinds' : [ | |
\ 'p:package', | |
\ 'i:imports:1', | |
\ 'c:constants', | |
\ 'v:variables', | |
\ 't:types', | |
\ 'n:interfaces', | |
\ 'w:fields', | |
\ 'e:embedded', | |
\ 'm:methods', | |
\ 'r:constructor', | |
\ 'f:functions' | |
\ ], | |
\ 'sro' : '.', | |
\ 'kind2scope' : { | |
\ 't' : 'ctype', | |
\ 'n' : 'ntype' | |
\ }, | |
\ 'scope2kind' : { | |
\ 'ctype' : 't', | |
\ 'ntype' : 'n' | |
\ }, | |
\ 'ctagsbin' : 'gotags', | |
\ 'ctagsargs' : '-sort -silent' | |
\ } | |
let g:godef_split=2 | |
set nowrap | |
" vue | |
let g:ft = '' | |
function! NERDCommenter_before() | |
if &ft == 'vue' | |
let g:ft = 'vue' | |
let stack = synstack(line('.'), col('.')) | |
if len(stack) > 0 | |
let syn = synIDattr((stack)[0], 'name') | |
if len(syn) > 0 | |
exe 'setf ' . substitute(tolower(syn), '^vue_', '', '') | |
endif | |
endif | |
endif | |
endfunction | |
function! NERDCommenter_after() | |
if g:ft == 'vue' | |
setf vue | |
let g:ft = '' | |
endif | |
endfunction | |
autocmd BufNewFile,BufRead *.vue set ft=vue | |
autocmd Filetype yaml setlocal tabstop=4 | |
autocmd Filetype go setlocal tabstop=4 | |
autocmd FileType vue :call ESlintVueFormatter() | |
autocmd FileType javascript :call ESlintJSFormatter() | |
autocmd FileType javascript nnoremap <buffer> <localleader>c I//<esc> | |
autocmd FileType python nnoremap <buffer> <localleader>c I#<esc> | |
set ts=4 | |
set expandtab | |
set autoindent | |
set mouse=a | |
set pastetoggle=<F2> | |
" for comment plugin | |
let g:comments_map_keys = 0 | |
" key-mappings for comment line in normal mode | |
noremap <silent> <C-k> :call CommentLine()<CR> | |
" key-mappings for range comment lines in visual <Shift-V> mode | |
vnoremap <silent> <C-k> :call RangeCommentLine()<CR> | |
" key-mappings for un-comment line in normal mode | |
noremap <silent> <C-l> :call UnCommentLine()<CR> | |
" key-mappings for range un-comment lines in visual <Shift-V> mode | |
vnoremap <silent> <C-l> :call RangeUnCommentLine()<CR> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment