适合中文的gvim ultimate配置 January 12, 2012 由于自己本身涉足linux时间较短,没有能够形成自己独具一格的风格,故在网上找到spf13vim</a>的配置文件。 这个主页上的 Automatic Installation (*nix only)</font> 试过,但链接总被重置!后面的 Manual Installation 才能装上。这个是已经下载的linux shell script,linux用户直接copy,sudo执行安装就行了://boot.sh=======================================================================================#!/usr/bin/env shendpath="$HOME/.spf13-vim-3"warn() { echo "$1" >&2}die() { warn "$1" exit 1}echo "thanks for installing spf13-vimn"# Backup existing .vim stuffecho "backing up current vim confign"today=`date +%Y%m%d`for i in $HOME/.vim $HOME/.vimrc $HOME/.gvimrc; do [ -e $i ] && mv $i $i.$today; doneecho "cloning spf13-vimn"git clone --recursive -b 3.0 http://github.com/spf13/spf13-vim.git $endpathmkdir -p $endpath/.vim/bundleln -s $endpath/.vimrc $HOME/.vimrcln -s $endpath/.vim $HOME/.vimecho "Installing Vundle"git clone http://github.com/gmarik/vundle.git $HOME/.vim/bundle/vundleecho "installing plugins using Vundle"vim +BundleInstall! +BundleClean +q============================================================================================== 但毕竟是纯英文版的,对中文编码支持不太好,还有就是html preview没有设置快捷键,复制,粘贴也没有设置,而且他的字体也显得粗大丑陋了点。下面是我修改的文件,完全支持中文编码,C+c,C+v在instert模式下的习惯也保留了下来,html编写后F5就可以浏览了。。。对于我来说,这才是中英兼并,适合新手探索的gvim ultimate: " Modeline and Notes {" Environment { " Basics { set nocompatible " must be first line set background=dark " Assume a dark background " } " Windows Compatible { " On Windows, also use '.vim' instead of 'vimfiles'; this makes synchronization " across (heterogeneous) systems easier. if has('win32') || has('win64') set runtimepath=$HOME/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$HOME/.vim/after endif " } " " Setup Bundle Support { " The next two lines ensure that the ~/.vim/bundle/ system works set rtp+=~/.vim/bundle/vundle call vundle#rc() " }" }" Bundles { " Deps Bundle 'gmarik/vundle' Bundle 'MarcWeber/vim-addon-mw-utils' Bundle 'tomtom/tlib_vim' if executable('ack') Bundle 'mileszs/ack.vim' endif " Use local bundles if available { if filereadable(expand("~/.vimrc.bundles.local")) source ~/.vimrc.bundles.local endif " } " In your .vimrc.bundles.local file" " list only the plugin groups you will use if !exists('g:spf13_bundle_groups') let g:spf13_bundle_groups=['general', 'programming', 'php', 'ruby', 'python', 'javascript', 'html', 'misc'] endif " To override all the included bundles, put " g:override_spf13_bundles = 1 " in your .vimrc.bundles.local file" if !exists("g:override_spf13_bundles") " General if count(g:spf13_bundle_groups, 'general') Bundle 'scrooloose/nerdtree' Bundle 'altercation/vim-colors-solarized' Bundle 'spf13/vim-colors' Bundle 'tpope/vim-surround' Bundle 'AutoClose' Bundle 'kien/ctrlp.vim' Bundle 'vim-scripts/sessionman.vim' Bundle 'matchit.zip' Bundle 'Lokaltog/vim-powerline' Bundle 'Lokaltog/vim-easymotion' Bundle 'godlygeek/csapprox' Bundle 'jistr/vim-nerdtree-tabs' Bundle 'flazz/vim-colorschemes' Bundle 'corntrace/bufexplorer' endif " General Programming if count(g:spf13_bundle_groups, 'programming') " Pick one of the checksyntax, jslint, or syntastic Bundle 'scrooloose/syntastic' Bundle 'garbas/vim-snipmate' Bundle 'spf13/snipmate-snippets' " Source support_function.vim to support snipmate-snippets. if filereadable(expand("~/.vim/bundle/snipmate-snippets/snippets/support_functions.vim")) source ~/.vim/bundle/snipmate-snippets/snippets/support_functions.vim endif Bundle 'tpope/vim-fugitive' Bundle 'scrooloose/nerdcommenter' Bundle 'godlygeek/tabular' if executable('ctags') Bundle 'majutsushi/tagbar' endif Bundle 'Shougo/neocomplcache' endif " PHP if count(g:spf13_bundle_groups, 'php') Bundle 'spf13/PIV' endif " Python if count(g:spf13_bundle_groups, 'python') " Pick either python-mode or pyflakes & pydoc Bundle 'klen/python-mode' Bundle 'python.vim' Bundle 'python_match.vim' Bundle 'pythoncomplete' endif " Javascript if count(g:spf13_bundle_groups, 'javascript') Bundle 'leshill/vim-json' Bundle 'groenewege/vim-less' Bundle 'taxilian/vim-web-indent' endif " HTML if count(g:spf13_bundle_groups, 'html') Bundle 'HTML-AutoCloseTag' Bundle 'ChrisYip/Better-CSS-Syntax-for-Vim' endif " Ruby if count(g:spf13_bundle_groups, 'ruby') Bundle 'rails.vim' endif " Misc if count(g:spf13_bundle_groups, 'misc') Bundle 'spf13/vim-markdown' Bundle 'spf13/vim-preview' Bundle 'tpope/vim-cucumber' Bundle 'Puppet-Syntax-Highlighting' endif endif" }" General { set background=dark " Assume a dark background if !has('gui') set term=$TERM " Make arrow and other keys work endif filetype plugin indent on " Automatically detect file types. set smartindent syntax on " syntax highlighting set mouse=a " automatically enable mouse usage scriptencoding utf-8" u8bbeu7f6eu7f16u7801set encoding=utf-8set fileencodings=utf-8,chinese,latin-1if has("win32")set fileencoding=chineseelseset fileencoding=utf-8endif autocmd BufEnter * if bufname("") !~ "^[A-Za-z0-9]*://" | lcd %:p:h | endif " always switch to the current file directory. " set autowrite " automatically write a file when leaving a modified buffer set shortmess+=filmnrxoOtT " abbrev. of messages (avoids 'hit enter') set viewoptions=folds,options,cursor,unix,slash " better unix / windows compatibility set virtualedit=onemore " allow for cursor beyond last character set history=1000 " Store a ton of history (default is 20) set spell " spell checking on set hidden " allow buffer switching without saving " Setting up the directories { set backup " backups are nice ... if has('persistent_undo') set undofile "so is persistent undo ... set undolevels=1000 "maximum number of changes that can be undone set undoreload=10000 "maximum number lines to save for undo on a buffer reload endif " Could use * rather than *.*, but I prefer to leave .files unsaved au BufWinLeave *.* silent! mkview "make vim save view (state) (folds, cursor, etc) au BufWinEnter *.* silent! loadview "make vim load view (state) (folds, cursor, etc) " }" }" Vim UI { if filereadable(expand("~/.vim/bundle/vim-colors-solarized/colors/solarized.vim")) color solarized " load a colorscheme endif let g:solarized_termtrans=1 let g:solarized_termcolors=256 let g:solarized_contrast="high" let g:solarized_visibility="high" set tabpagemax=15 " only show 15 tabs set showmode " display the current mode set cursorline " highlight current line if has('cmdline_info') set ruler " show the ruler set rulerformat=%30(%=:b%n%y%m%r%w %l,%c%V %P%) " a ruler on steroids set showcmd " show partial commands in status line and " selected characters/lines in visual mode endif if has('statusline') set laststatus=2 " Broken down into easily includeable segments set statusline=%<%f " Filename set statusline+=%w%h%m%r " Options set statusline+=%{fugitive#statusline()} " Git Hotness set statusline+= [%{&ff}/%Y] " filetype set statusline+= [%{getcwd()}] " current dir set statusline+=%=%-14.(%l,%c%V%) %p%% " Right aligned file nav info endif set backspace=indent,eol,start " backspace for dummies set linespace=0 " No extra spaces between rows set nu " Line numbers on set showmatch " show matching brackets/parenthesis set incsearch " find as you type search set hlsearch " highlight search terms set winminheight=0 " windows can be 0 line high set smartindent set ignorecase " case insensitive search set smartcase " case sensitive when uc present set wildmenu " show list instead of just completing set wildmode=list:longest,full " command completion, list matches, then longest common part, then all. set whichwrap=b,s,h,l,<,>,[,] " backspace and cursor keys wrap to set scrolljump=5 " lines to scroll when cursor leaves screen set scrolloff=3 " minimum lines to keep above and below cursor set foldenable " auto fold code set list set listchars=tab:,.,trail:.,extends:#,nbsp:. " Highlight problematic whitespace" }" Formatting { set wrap " wrap long lines set autoindent " indent at the same level of the previous line set shiftwidth=4 " use indents of 4 spaces set expandtab " tabs are spaces, not tabs set tabstop=4 " an indentation every four columns set softtabstop=4 " let backspace delete indent "set matchpairs+=<:> " match, to be used with % set pastetoggle= " pastetoggle (sane indentation on pastes) "set comments=sl:/*,mb:*,elx:*/ " auto format comment blocks " Remove trailing whitespaces and ^M chars autocmd FileType c,cpp,java,php,javascript,python,twig,xml,yml autocmd BufWritePre :call setline(1,map(getline(1,"$"),'substitute(v:val,"\s\+$","","")'))" }" Key (re)Mappings { "The default leader is '', but many people prefer ',' as it's in a standard "location let mapleader = ',' " Making it so ; works like : for commands. Saves typing and eliminates :W style typos due to lazy holding shift. nnoremap ; : " Easier moving in tabs and windows map j_ map k_ map l_ map h_ " Wrapped lines goes down/up to next row, rather than next line in file. nnoremap j gj nnoremap k gk " The following two lines conflict with moving to top and bottom of the " screen " If you prefer that functionality, comment them out. map gT map gt " Stupid shift key fixes cmap W w cmap WQ wq cmap wQ wq cmap Q q cmap Tabe tabe " Yank from the cursor to the end of the line, to be consistent with C and D. nnoremap Y y$ """ Code folding options nmap f0 :set foldlevel=0 nmap f1 :set foldlevel=1 nmap f2 :set foldlevel=2 nmap f3 :set foldlevel=3 nmap f4 :set foldlevel=4 nmap f5 :set foldlevel=5 nmap f6 :set foldlevel=6 nmap f7 :set foldlevel=7 nmap f8 :set foldlevel=8 nmap f9 :set foldlevel=9 "clearing highlighted search nmap / :nohlsearch " Shortcuts " Change Working Directory to that of the current file cmap cwd lcd %:p:h cmap cd. lcd %:p:h " visual shifting (does not exit Visual mode) vnoremap < vnoremap > >gv " Fix home and end keybindings for screen, particularly on mac " - for some reason this fixes the arrow keys too. huh. map [F $ imap [F $ ""This mapping allows you to use a browser to preview the HTML file currently being edited. nnoremap :silent updatesilent !firefox %:p & "cut and copy easily" nmap "+gP imap vmap "+y " For when you forget to sudo.. Really Write the file. cmap w!! w !sudo tee % >/dev/null " Some helpers to edit mode " http://vimcasts.org/e/14 cnoremap %% =expand('%:h').'/' map ew :e %% map es :sp %% map ev :vsp %% map et :tabe %% " Adjust viewports to the same size map = = " Easier horizontal scrolling map zl zL map zh zH" }" Plugins { " PIV { let g:DisableAutoPHPFolding = 0 let g:PIVAutoClose = 0 " } " Misc { let g:NERDShutUp=1 let b:match_ignorecase = 1 " } " OmniComplete { if has("autocmd") && exists("+omnifunc") autocmd Filetype * if &omnifunc == "" | setlocal omnifunc=syntaxcomplete#Complete | endif endif hi Pmenu guifg=#000000 guibg=#F8F8F8 ctermfg=black ctermbg=Lightgray hi PmenuSbar guifg=#8A95A7 guibg=#F8F8F8 gui=NONE ctermfg=darkcyan ctermbg=lightgray cterm=NONE hi PmenuThumb guifg=#F8F8F8 guibg=#8A95A7 gui=NONE ctermfg=lightgray ctermbg=darkcyan cterm=NONE " some convenient mappings inoremap pumvisible() ? "" : "" inoremap pumvisible() ? "" : "" inoremap pumvisible() ? "" : "" inoremap pumvisible() ? "" : "" inoremap pumvisible() ? "" : "" inoremap pumvisible() ? "" : "" " automatically open and close the popup menu / preview window au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif set completeopt=menu,preview,longest " } " Ctags { set tags=./tags;/,~/.vimtags " } " AutoCloseTag { " Make it so AutoCloseTag works for xml and xhtml files as well au FileType xhtml,xml ru ftplugin/html/autoclosetag.vim nmap ac ToggleAutoCloseMappings " } " SnipMate { " Setting the author var " If forking, please overwrite in your .vimrc.local file let g:snips_author = 'Steve Francia ' " } " NerdTree { map :NERDTreeToggle:NERDTreeMirror map e :NERDTreeFind nmap nt :NERDTreeFind let NERDTreeShowBookmarks=1 let NERDTreeIgnore=['.pyc', '~$', '.swo$', '.swp$', '.git', '.hg', '.svn', '.bzr'] let NERDTreeChDirMode=0 let NERDTreeQuitOnOpen=1 let NERDTreeShowHidden=1 let NERDTreeKeepTreeInNewTab=1 " } " Tabularize { if exists(":Tabularize") nmap a= :Tabularize /= vmap a= :Tabularize /= nmap a: :Tabularize /: vmap a: :Tabularize /: nmap a:: :Tabularize /:zs vmap a:: :Tabularize /:zs nmap a, :Tabularize /, vmap a, :Tabularize /, nmap a :Tabularize / vmap a :Tabularize / " The following function automatically aligns when typing a " supported character inoremap :call align()a function! s:align() let p = '^s*|s.*s|s*$' if exists(':Tabularize') && getline('.') =~# '^s*|' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p) let column = strlen(substitute(getline('.')[0:col('.')],'[^|]','','g')) let position = strlen(matchstr(getline('.')[0:col('.')],'.*|s*zs.*')) Tabularize/|/l1 normal! 0 call search(repeat('[^|]*|',column).'s{-}'.repeat('.',position),'ce',line('.')) endif endfunction endif " } " Session List { set sessionoptions=blank,buffers,curdir,folds,tabpages,winsize nmap sl :SessionList nmap ss :SessionSave " } " Buffer explorer { nmap b :BufExplorer " } " JSON { nmap jt :%!python -m json.tool:set filetype=json " } " PyMode { let g:pymode_lint_checker = "pyflakes" " } " ctrlp { let g:ctrlp_working_path_mode = 2 nnoremap :CtrlP nnoremap :CtrlPMRU let g:ctrlp_custom_ignore = { 'dir': '.git$|.hg$|.svn$', 'file': '.exe$|.so$|.dll$' } "} " TagBar { nnoremap tt :TagbarToggle "} " PythonMode { " Disable if python support not present if !has('python') let g:pymode = 1 endif " } " Fugitive { nnoremap gs :Gstatus nnoremap gd :Gdiff nnoremap gc :Gcommit nnoremap gb :Gblame nnoremap gl :Glog nnoremap gp :Git push "} " neocomplcache { let g:neocomplcache_enable_at_startup = 1 let g:neocomplcache_enable_camel_case_completion = 1 let g:neocomplcache_enable_smart_case = 1 let g:neocomplcache_enable_underbar_completion = 1 let g:neocomplcache_min_syntax_length = 3 let g:neocomplcache_enable_auto_delimiter = 1 " AutoComplPop like behavior. let g:neocomplcache_enable_auto_select = 0 " SuperTab like snippets behavior. imap neocomplcache#sources#snippets_complete#expandable() ? "(neocomplcache_snippets_expand)" : pumvisible() ? "" : "" " Plugin key-mappings. imap (neocomplcache_snippets_expand) smap (neocomplcache_snippets_expand) inoremap neocomplcache#undo_completion() inoremap neocomplcache#complete_common_string() " : close popup " : close popup and save indent. inoremap pumvisible() ? neocomplcache#close_popup() : "" inoremap pumvisible() ? neocomplcache#close_popup() "" : "" " : completion. inoremap pumvisible() ? "" : "" " , : close popup and delete backword char. inoremap neocomplcache#smart_close_popup()."" inoremap neocomplcache#smart_close_popup()."" inoremap neocomplcache#close_popup() inoremap neocomplcache#cancel_popup() " 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 " Enable heavy omni completion. if !exists('g:neocomplcache_omni_patterns') let g:neocomplcache_omni_patterns = {} endif let g:neocomplcache_omni_patterns.ruby = '[^. *t].hw*|hw*::' "autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete let g:neocomplcache_omni_patterns.php = '[^. t]->hw*|hw*::' let g:neocomplcache_omni_patterns.c = '%(.|->)hw*' let g:neocomplcache_omni_patterns.cpp = 'hw*%(.|->)hw*|hw*::' " For snippet_complete marker. if has('conceal') set conceallevel=2 concealcursor=i endif " }" }" GUI Settings { " GVIM- (here instead of .gvimrc) if has('gui_running') set guioptions-=T " remove the toolbar set lines=40 " 40 lines of text instead of 24, "set guifont=Andale Mono Regular:h16,Menlo Regular:h15,Consolas Regular:h16,Courier New Regular:h18 if has("gui_gtk2") set guifont=Courier New 11 elseif has("gui_photon") set guifont=Courier New:s11 elseif has("gui_kde") set guifont=Courier New/11/-1/5/50/0/0/0/1/0 elseif has("x11") set guifont=-*-courier-medium-r-normal-*-*-180-*-*-m-*-* else set guifont=Courier_New:h11:cDEFAULT endif if has('gui_macvim') set transparency=5 " Make the window slightly transparent endif else "set term=builtin_ansi " Make arrow and other keys work endif" } " Functions {function! InitializeDirectories() let separator = "." let parent = $HOME let prefix = '.vim' let dir_list = { 'backup': 'backupdir', 'views': 'viewdir', 'swap': 'directory' } if has('persistent_undo') let dir_list['undo'] = 'undodir' endif for [dirname, settingname] in items(dir_list) let directory = parent . '/' . prefix . dirname . "/" if exists("*mkdir") if !isdirectory(directory) call mkdir(directory) endif endif if !isdirectory(directory) echo "Warning: Unable to create backup directory: " . directory echo "Try: mkdir -p " . directory else let directory = substitute(directory, " ", "\\ ", "g") exec "set " . settingname . "=" . directory endif endforendfunctioncall InitializeDirectories()function! NERDTreeInitAsNeeded() redir => bufoutput buffers! redir END let idx = stridx(bufoutput, "NERD_tree") if idx > -1 NERDTreeMirror NERDTreeFind wincmd l endifendfunction" }" Use local vimrc if available { if filereadable(expand("~/.vimrc.local")) source ~/.vimrc.local endif" }" Use local gvimrc if available and gui is running { if has('gui_running') if filereadable(expand("~/.gvimrc.local")) source ~/.gvimrc.local endif endif" }</div> Read More 分析预测模型在机器学习中的应用之线性回归 回归能做任何事情 Continue reading android中的线程与进程模型 Published on June 15, 2016 android内存优化之图片加载 Published on June 11, 2016