折腾了一天 在https://keelii.github.io/2016/06/13/awsome-window-vimrc/的基础上进行了一些改动
" ------------------------------ " Name: vimrc for windows " Author: hanhao " Email: keeliizhou@gmail.com " ------------------------------ " Startup {{{ filetype indent plugin on augroup vimrcEx au! autocmd FileType text setlocal textwidth=78 augroup END " vim 文件折叠方式为 marker augroup ft_vim au! autocmd FileType vim setlocal foldmethod=marker " 打开文件总是定位到上次编辑的位置 autocmd BufReadPost * \ if line("'\"") > 1 && line("'\"") <= line("$") | \ exe "normal! g`\"" | \ endif augroup END augroup END " }}} " General {{{ "实时搜索 set incsearch set ignorecase set cul set nocompatible set nobackup set noswapfile set history=1024 set tags=tags; set autochdir set whichwrap=b,s,<,>,[,] set nobomb set backspace=indent,eol,start whichwrap+=<,>,[,] " Vim 的默认寄存器和系统剪贴板共享 set clipboard+=unnamed " 设置 alt 键不映射到菜单栏 set winaltkeys=no " }}} " Lang & Encoding {{{ set fileencodings=utf-8,gbk2312,gbk,gb18030,cp936 set encoding=utf-8 set langmenu=zh_CN let $LANG = 'en_US.UTF-8' "language messages zh_CN.UTF-8 " }}} " GUI {{{ colorscheme Tomorrow-Night source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim "set cursorline set hlsearch set number " 窗口大小 set lines=35 columns=140 " 分割出来的窗口位于当前窗口下边/右边 set splitbelow set splitright "不显示工具/菜单栏 set guioptions-=T set guioptions-=m set guioptions-=L set guioptions-=r set guioptions-=b "使用内置 tab 样式而不是 gui set guioptions-=e " set nolist set listchars=trail:.,extends:>,precedes:< set guifont=Inconsolata:h12:cANSI set statusline=%f set statusline+=%m set statusline+=\ %{fugitive#head()} set statusline+=%= set statusline+=%{''.(&fenc!=''?&fenc:&enc).''} set statusline+=/ set statusline +=%{&ff} "file format set statusline+=\ -\ " Separator set statusline+=%l/%L set statusline+=[%p%%] set statusline+=\ -\ " Separator set statusline +=%1*\ %y\ %* " }}} " Format {{{ set autoindent set smartindent set tabstop=4 set shiftwidth=4 set softtabstop=4 set expandtab set foldmethod=indent syntax on " }}} " Keymap {{{ let mapleader="," nmap <leader>s :source $MYVIMRC<cr> nmap <leader>e :e $MYVIMRC<cr> nmap <leader>tn :tabnew<cr> nmap <leader>tc :tabclose<cr> nmap <leader>th :tabp<cr> nmap <leader>tl :tabn<cr> " 移动分割窗口 nmap <C-j> <C-W>j nmap <C-k> <C-W>k nmap <C-h> <C-W>h nmap <C-l> <C-W>l "tab => space nmap tt :%s/\t/ /g<CR> " 正常模式下 alt+j,k,h,l 调整分割窗口大小 nnoremap <M-j> :resize +5<cr> nnoremap <M-k> :resize -5<cr> nnoremap <M-h> :vertical resize -5<cr> nnoremap <M-l> :vertical resize +5<cr> " 插入模式移动光标 alt + 方向键 inoremap <M-j> <Down> inoremap <M-k> <Up> inoremap <M-h> <left> inoremap <M-l> <Right> " IDE like delete inoremap <C-BS> <Esc>bdei nnoremap vv ^vg_ " 命令模式下的行首尾 cnoremap <C-a> <home> cnoremap <C-e> <end> imap <C-v> "+gP vmap <C-c> "+y vnoremap <BS> d vnoremap <C-C> "+y vnoremap <C-Insert> "+y imap <C-V> "+gP map <S-Insert> "+gP cmap <C-V> <C-R>+ cmap <S-Insert> <C-R>+ exe 'inoremap <script> <C-V>' paste#paste_cmd['i'] exe 'vnoremap <script> <C-V>' paste#paste_cmd['v'] " 打开当前目录 windows nmap <silent> <leader>ex :!start explorer %:p:h<CR> " 打开当前目录CMD nmap <silent> <leader>cmd :!start cmd /k cd %:p:h<cr> let NERDTreeBookmarksFile = $VIM . '/NERDTreeBookmarks' " 复制当前文件/路径到剪贴板 nmap ,fn :let @*=substitute(expand("%"), "/", "\\", "g")<CR> nmap ,fp :let @*=substitute(expand("%:p"), "/", "\\", "g")<CR> "设置切换Buffer快捷键" nnoremap <C-left> :bn<CR> nnoremap <C-right> :bp<CR> map <Esc><Esc> :w<CR> map <F3> :NERDTreeToggle<CR> map <F5> :call CompileRun()<CR> map <F6> :call Run()<CR> map <C-F5> :call Debug()<CR> "map <F9> :Tlist<CR> map <F9> :WMToggle<cr> " Define compile & run {{{ func CompileRun() exec "w" "C program if &filetype == 'c' exec "!gcc % -o %<" exec "! %<" "c++ program elseif &filetype == 'cpp' exec "!g++ % -o %<" exec "! %<" "Java program elseif &filetype == 'java' exec "!javac %" endif endfunc "End Defind CompileRun " }}} "Define Run Function {{{ func Run() if &filetype == 'c' || &filetype == 'cpp' exec "!%<.exe" elseif &filetype == 'java' exec "!java %<" endif endfunc "End Define Run Function "}}} "Define Debug Function,To Debug program {{{ func Debug() exec "w" "C program if &filetype == 'c' exec "!gcc % -g -o %<.exe" exec "!gdb %<.exe" elseif &filetype == 'cpp' exec "!g++ % -g -o %<.exe" exec "!gdb %<.exe" "Java program elseif &filetype == 'java' exec "!javac %" exec "!jdb %<" endif endfunc "End Defind Debug "}}} " }}} " Plugin {{{ filetype off set rtp+=$VIM/vimfiles/bundle/Vundle.vim call vundle#begin('$VIM/vimfiles/bundle') " ----- Vundle ----- {{{ Plugin 'VundleVim/Vundle.vim' " }}} " ----- NerdTree ----- {{{ Plugin 'scrooloose/nerdtree' let NERDTreeIgnore=['.idea', '.vscode', 'node_modules', '*.pyc'] let NERDTreeBookmarksFile = $VIM . '/NERDTreeBookmarks' let NERDTreeMinimalUI = 1 let NERDTreeBookmarksSort = 1 let NERDTreeShowLineNumbers = 0 let NERDTreeShowBookmarks = 1 let g:NERDTreeWinPos = 'right' let g:NERDTreeDirArrowExpandable = ' ' let g:NERDTreeDirArrowCollapsible = ' ' nmap <leader>n :NERDTreeToggle <cr> if exists('g:NERDTreeWinPos') autocmd vimenter * NERDTree C:\repo endif " }}} " ----- Multiple-cursors ----- {{{ Plugin 'terryma/vim-multiple-cursors' " }}} " ----- Tabular ----- {{{ Plugin 'godlygeek/tabular' " }}} " ----- Markdown ----- {{{ Plugin 'plasticboy/vim-markdown' " }}} " ----- Airline ----- {{{ "Plugin 'vim-airline/vim-airline' "Plugin 'vim-airline/vim-airline-themes' "set laststatus=2 "if !exists('g:airline_symbols') "let g:airline_symbols = {} "endif "let g:airline_theme='tomorrow' "let g:airline_powerline_fonts = 1 "let g:Powerline_symbols='fancy' "let g:airline_symbols.branch = '' "let g:airline_left_sep = '?' "let g:airline_right_sep = '?' "let g:airline#extensions#branch#enabled = 1 "let g:airline#extensions#branch#vcs_priority = ["git", "mercurial"] "let g:airline_mode_map = { "\ 'n' : 'N', "\ 'i' : 'I', "\ 'v' : 'V', "\ } "let g:airline#extensions#tabline#enabled = 1 " }}} " ----- Ctrlp ----- {{{ Plugin 'kien/ctrlp.vim' "let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:10,results:10' "set wildignore+=*\\.git\\*,*\\tmp\\*,*.swp,*.zip,*.exe,*.pyc let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$' let g:ctrlp_custom_ignore = '\v\.(exe|so|dll)$' let g:ctrlp_extensions = ['funky'] " }}} " ----- Nerdcommenter ----- {{{ Plugin 'scrooloose/nerdcommenter' " }}} " ----- last_edit_marker ----- {{{ Plugin 'last_edit_marker.vim' " }}} " ----- Emmet ----- {{{ Plugin 'mattn/emmet-vim' " }}} " ----- SnipMate ----- {{{ Plugin 'MarcWeber/vim-addon-mw-utils' Plugin 'tomtom/tlib_vim' Plugin 'garbas/vim-snipmate' " Replace your repo Plugin 'keelii/vim-snippets' " Allow for vimrc re-sourcing let g:snipMate = get(g:, 'snipMate', {}) " }}} " ----- Fugitive ----- {{{ Plugin 'tpope/vim-fugitive' " }}} " ----- Neocomplete ----- {{{ Plugin 'Shougo/neocomplete.vim' let g:acp_enableAtStartup = 0 " Use neocomplete. let g:neocomplete#enable_at_startup = 1 " Use smartcase. let g:neocomplete#enable_smart_case = 1 let g:neocomplete#enable_auto_select = 1 " Enable snipMate compatibility feature. let g:neosnippet#enable_snipmate_compatibility = 1 " Tell Neosnippet about the other snippets let g:neosnippet#snippets_directory=$VIM . '/vimfiles/bundle/vim-snippets/snippets' " Enable omni completion. autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS autocmd FileType python setlocal omnifunc=pythoncomplete#Complete autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags if !exists('g:neocomplete#sources#omni#input_patterns') let g:neocomplete#sources#omni#input_patterns = {} endif " }}} " ----- Auto-Pairs ----- {{{ Plugin 'Auto-Pairs' " }}} "----- WinManager ----- {{{ let g:winManagerWindowLayout='FileExplorer|TagList' nmap wm :WMToggle<cr> " }}} filetype on call vundle#end() " }}} " Function {{{ " Remove trailing whitespace when writing a buffer, but not for diff files. " From: Vigil " @see http://blog.bs2.to/post/EdwardLee/17961 function! RemoveTrailingWhitespace() if &ft != "diff" let b:curcol = col(".") let b:curline = line(".") silent! %s/\s\+$// silent! %s/\(\s*\n\)\+\%$// call cursor(b:curline, b:curcol) endif endfunction autocmd BufWritePre * call RemoveTrailingWhitespace() " }}}
浙公网安备 33010602011771号