set nocompatible " be iMproved, required filetype off " required syntax on " 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 " let path = '~/some/path/here' " call vundle#rc(path) " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' " The following are examples of different formats supported. " Keep Plugin commands between here and filetype plugin indent on. " scripts on GitHub repos Plugin 'tpope/vim-fugitive' Plugin 'easymotion/vim-easymotion' Plugin 'tpope/vim-rails.git' " The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " fuzzy finder Plugin 'Yggdroot/LeaderF' " git repos on your local machine (i.e. when working on your own plugin) " Plugin 'file:///home/gmarik/path/to/plugin' " Distraction-free writing in Vim Plugin 'junegunn/goyo.vim' " Provide easy code formatting in Vim by integrating existing code formatters. Plugin 'Chiel92/vim-autoformat' " quoting/parenthesizing made simple Plugin 'tpope/vim-surround' " Defaults everyone can agree on Plugin 'tpope/vim-sensible' " comment stuff out Plugin 'tpope/vim-commentary' " enable repeating supported plugin maps with "." Plugin 'tpope/vim-repeat' " helpers for UNIX Plugin 'tpope/vim-eunuch' " Bash IDE Plugin 'vim-scripts/bash-support.vim' " tree explorer plugin for vim Plugin 'scrooloose/nerdtree' Plugin 'tiagofumo/vim-nerdtree-syntax-highlight' " lean & mean status/tabline for vim that's light as air Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' " Better whitespace highlighting for Vim Plugin 'ntpeters/vim-better-whitespace' " Next generation completion framework after neocomplcache Plugin 'Shougo/neocomplete.vim' " One colorscheme pack to rule them all! Plugin 'michaelHL/awesome-vim-colorschemes' " Vim plugin, provides insert mode auto-completion for " quotes, parens, brackets, etc. Plugin 'Raimondi/delimitMate' " A Vim alignment plugin Plugin 'junegunn/vim-easy-align' " rainbow parenthese improved, shorter code Plugin 'luochen1990/rainbow' " eliminating the buff!! Plugin 'qpkorr/vim-bufkill' " vimscript for gist Plugin 'mattn/gist-vim' " vim interface to Web API Plugin 'mattn/webapi-vim' " Perform all your vim insert mode completions with TAB!! Plugin 'ervandew/supertab' " gtags Plugin 'aceofall/gtags.vim' " Markdown Vim Mode Plugin 'plasticboy/vim-markdown' " Auto close tags Plugin 'alvan/vim-closetag' " Add file type glyphs/icons " Plugin 'ryanoasis/vim-devicons' call vundle#end() filetype plugin indent on " required " To ignore plugin indent changes, instead use: " filetype plugin on " " Brief help " :PluginList - list configured plugins " :PluginInstall(!) - install (update) plugins " :PluginSearch(!) foo - search (or refresh cache first) for foo " :PluginClean(!) - confirm (or auto-approve) removal of unused plugins " " see :h vundle for more details or wiki for FAQ " NOTE: comments after Plugin commands are not allowed. set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8 set t_Co=256 color meta5 set colorcolumn=80 set cursorline set shortmess=aoOtI set ai set nu set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab " set list listchars=tab:\ \ " trainling space -_|| set list listchars=tab:»\ " smartindent refuse to indent with # " set smartindent " set cindent " set cinkeys-=0# " set indentkeys-=0# set autoindent set nowrap set wildmenu set ignorecase set showmatch set vb t_vb= set t_md= set ruler set scrolloff=5 set laststatus=2 set virtualedit=block set backspace=indent,eol,start set showmode set cmdheight=1 set showcmd set nohls set hidden set splitbelow set splitright set guicursor= set autoread set timeoutlen=200 ttimeoutlen=0 set mouse= " 打开自动定位到最后编辑的位置, 需要确认.viminfo当前用户可写 if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif " F2 行号切换 nnoremap :set number! " F3 粘贴模式 set pastetoggle= " F4 换行开关 nnoremap :set wrap! wrap? " http://stackoverflow.com/questions/13194428/is-better-way-to-zoom-windows-in-vim-than-zoomwin " Zoom / Restore window. function! s:ZoomToggle() abort if exists('t:zoomed') && t:zoomed execute t:zoom_winrestcmd let t:zoomed = 0 else let t:zoom_winrestcmd = winrestcmd() resize vertical resize let t:zoomed = 1 endif endfunction command! ZoomToggle call s:ZoomToggle() " disbale paste mode when leaving insert mode au InsertLeave * set nopaste " F10 语法开关,关闭语法可以加快大文件的展示 nnoremap :exec exists('syntax_on') ? 'syn off' : 'syn on' " F8 简易编译 map :call CompileRun() func! CompileRun() exec "w" if &filetype == 'c' :!clear; gcc -std=c11 -Wall % -o %<; time ./%< elseif &filetype == 'cpp' :!clear; g++ -std=c++11 -Wall % -o %<; time ./%< elseif &filetype == 'perl' :!clear; perl % elseif &filetype == 'sh' :!clear; sh % elseif &filetype == 'python' :!clear; time python3 % endif endfunc """ vim-autoformat let g:formatdef_michael_c = '"astyle --style=java --indent=spaces=4 --indent-switches --align-pointer=name --remove-braces --pad-oper --pad-comma --pad-header --unpad-paren"' let g:formatters_c = ['michael_c'] let g:formatters_cpp = ['michael_c'] let g:formatters_java = ['michael_c'] let g:autoformat_autoindent = 0 let g:autoformat_retab = 0 let g:autoformat_remove_trailing_spaces = 0 """ goyo " let g:goyo_height = 90 let g:goyo_margin_top = 4 let g:goyo_margin_bottom = 4 """ key map let mapleader = "\ " nnoremap U nnoremap n nzz nnoremap N Nzz nnoremap { {zz nnoremap } }zz nnoremap * *zz nnoremap # #zz nnoremap g* g*zz nnoremap J mzJ`z nnoremap nnoremap Q nnoremap K nnoremap k gk nnoremap j gj nnoremap gk k nnoremap gj j nnoremap 0 g0 nnoremap $ g$ nnoremap nnoremap nnoremap nnoremap nnoremap 2 nnoremap 2 nnoremap v v nnoremap 3 vs inoremap -> imap s nmap s (easymotion-s) nnoremap + :resize +4 nnoremap _ :resize -4 nnoremap ++ :vertical resize +6 nnoremap __ :vertical resize -6 nnoremap :bn nnoremap :bp nnoremap w :w nnoremap p :q! nnoremap q :BD! nnoremap qa :qa! nnoremap n :enew nnoremap nh :new nnoremap nv :vnew nnoremap e :e! nnoremap wa :wa! nnoremap wq :wq! nnoremap wqa :wqa! nnoremap l :StripWhitespace nnoremap z :ZoomToggle nnoremap :Goyo nnoremap :NERDTreeToggle nnoremap == :Autoformat """ vim-commentary autocmd FileType python,shell,coffee set commentstring=#\ %s autocmd FileType java,c,cpp set commentstring=//\ %s """ air-line let g:airline_theme="behelit" let g:airline_powerline_fonts = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#buffer_nr_show = 1 let g:airline#extensions#whitespace#enabled = 1 if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_symbols.dirty = '✘' let g:airline_symbols.spell = '✠' let g:airline_symbols.notexists = '◌' " let g:airline_section_c = '%{strftime("❦ %H:%M:%S ❦")}' let g:airline#extensions#whitespace#symbol = '!' """ nerd-tree " autocmd Vimenter * NERDTree " autocmd VimEnter * wincmd p " autocmd StdinReadPre * let s:std_in=1 " autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif autocmd StdinReadPre * let s:std_in=1 autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif let g:NERDTreeWinSize = 27 let g:NERDTreeDirArrowExpandable = '•' let g:NERDTreeDirArrowCollapsible = '➤' """ nerdtree-syntax-highlight let g:NERDTreeFileExtensionHighlightFullName = 1 let g:NERDTreeExactMatchHighlightFullName = 1 let g:NERDTreePatternMatchHighlightFullName = 1 let g:NERDTreeHighlightFolders = 1 " enables folder icon highlighting using exact match let g:NERDTreeHighlightFoldersFullName = 1 " highlights the folder name let g:NERDTreeExtensionHighlightColor = {} "this line is needed to avoid error let g:NERDTreeExtensionHighlightColor['css'] = '' "assigning it to an empty string will skip highlight let g:NERDTreeLimitedSyntax = 1 """ LeaderF let g:Lf_StlSeparator = { 'left': '', 'right': '' } """ easy-align xmap ga (EasyAlign) nmap ga (EasyAlign) """ easy-motion hi EasyMotionTarget ctermbg=none ctermfg=87 hi EasyMotionTarget2First ctermbg=none ctermfg=75 hi EasyMotionTarget2Second ctermbg=none ctermfg=lightred """vim-better-whitespace hi ExtraWhitespace ctermbg=237 """ rainbow let g:rainbow_active = 1 """ supertab let g:SuperTabDefaultCompletionType = "" """ gist-vim let g:gist_detect_filetype = 1 let g:gist_show_privates = 1 let g:gist_get_multiplefile = 1 """ vim-markdown let g:vim_markdown_folding_disabled = 1 let g:vim_markdown_new_list_item_indent = 0 """ gtags set cscopetag set cscopeprg='gtags-cscope' let GtagsCscope_Auto_Load = 1 let CtagsCscope_Auto_Map = 1 let GtagsCscope_Quiet = 1 """ vim-closetag let g:closetag_filenames = '*.html,*.xhtml,*.phtml,*.md' let g:closetag_xhtml_filenames = '*.xhtml,*.jsx' let g:closetag_emptyTags_caseSensitive = 1 """ neocomplete let g:acp_enableAtStartup = 0 let g:neocomplete#enable_at_startup = 1 let g:neocomplete#enable_smart_case = 1 let g:neocomplete#sources#syntax#min_keyword_length = 3 """ delimitMate let g:delimitMate_autoclose = 1 let g:delimitMate_matchpairs = "(:),[:],{:}" let delimitMate_quotes = "\" '" let g:delimitMate_jump_expansion = 0 let g:delimitMate_expand_space = 1 let g:delimitMate_expand_cr = 1 let g:delimitMate_expand_inside_quotes = 1