标签:des style blog http color java 使用 os
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有行号的、语法高亮度显示、智能缩进等功能的。
为了更好的在vim下进行工作,需要手动配置一个配置文件: .vimrc
在启动vim时,当前用户根目录下的 .vimrc 文件会被自动读取,该文件可以包含一些设置甚至脚本,所以,一般情况下把 .vimrc文件创建在当前用户的根目录下比较方便,即创建的命令为:
$vim ~/.vimrc
设置完成后
$:x 或者 $:wq
进行保存退出即可。
下面给出一个例子,已经很详细了,是某位大神的配置文件,这里对其表示敬意。
"双引号开始的行为注释行,下同。
" File: _vimrc " Author: xuleaper<xuleaper@gmail.com> " Description: xuleaper‘s personal vim config file. " Last Modified: $Id: _vimrc 467 2012-09-08 03:49:05Z $ " Blog: http://www.gracecode.com/ " Since:2010-06-15 " History: " 2012-06-08 " +vundle支持,更加灵活的管理插件 " 2012-01-20 " +整理vimrc结构 " 2011-09-08 " +在网络配置文件的基础上,编写自己的vimrc "============================= " vimrc_structure " | " +--Environment setting " | " +--Multi_language setting " | " +--GUI_laguage setting " | " +--AutoCmd " | " +--Plugin configure " | " +--Script‘s function " | " +--Key shortcut " | " ---Bundle setting "============================= if exists("mingcheng") finish endif let g:mingcheng = 1 if v:version < 700 echoerr ‘This _vimrc requires Vim 7 or later.‘ quit endif " ============ " Environment " ============ " Color Scheme if has(‘syntax‘) " 默认编辑器配色 au BufNewFile,BufRead,BufEnter,WinEnter * colo desert " 各不同类型的文件配色不同 au BufNewFile,BufRead,BufEnter,WinEnter *.wiki colo void " 保证语法高亮 syntax on endif " 保留历史记录 set history=500 " 行控制 set linebreak set nocompatible set textwidth=80 set wrap " 标签页 set tabpagemax=9 set showtabline=2 " 控制台响铃 set noerrorbells set novisualbell set t_vb= " 行号和标尺 set number set ruler set rulerformat=%15(%c%V\ %p%%%) " 命令行于状态行 set ch=2 set stl=\ [File]\ %F%m%r%h%y[%{&fileformat},%{&fileencoding}]\ %w\ \ [PWD]\ %r%{GetPWD()}%h\ %=\ [Line]%l/%L\ %=\[%P] set ls=2 " 始终显示状态行 set wildmenu "命令行补全以增强模式运行 " 定义 <Leader> 为逗号 let mapleader = "," let maplocalleader = "," " Search Option set hlsearch " Highlight search things set magic " Set magic on, for regular expressions set showmatch " Show matching bracets when text indicator is over them set mat=2 " How many tenths of a second to blink set noincsearch " 制表符 set tabstop=4 set expandtab set smarttab set shiftwidth=4 set softtabstop=4 " 状态栏显示目前所执行的指令 set showcmd " 缩进 set autoindent set smartindent " 自动重新读入 set autoread " 插入模式下使用 <BS>、<Del> <C-W> <C-U> set backspace=indent,eol,start " 设定在任何模式下鼠标都可用 " 自动改变当前目录 if has(‘netbeans_intg‘) set autochdir endif " 备份和缓存 set nobackup "set noswapfile " 自动完成 set complete=.,w,b,k,t,i set completeopt=longest,menu " 代码折叠 set foldmethod=marker " 共享外部剪贴板 set clipboard+=unnamed "设置快速编辑.vimrc文件 ,e 编辑.vimrc " 快速修改 vimrc 文件 if has("win32") map <silent> <leader>e :e $VIM/_vimrc<cr> else map <silent> <leader>e :e $VIM/.vimrc<cr> endif "保存.vimrc文件后会自动调用新的.vimrc autocmd! bufwritepost _vimrc source $VIM/_vimrc " ====================== " Multi_language setting " default encoding UTF " ====================== if has("multi_byte") set encoding=utf-8 "set fenc=cp936 " English messages only "language messages zh_CN.utf-8 if has(‘win32‘) language chinese let &termencoding=&encoding endif set fencs=utf-8,gbk,chinese,latin1 set formatoptions+=mM set nobomb " 不使用 Unicode 签名 if v:lang =~? ‘^\(zh\)\|\(ja\)\|\(ko\)‘ set ambiwidth=double endif else echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte" endif " 永久撤销,Vim7.3 新特性 if has(‘persistent_undo‘) set undofile " 设置撤销文件的存放的目录 if has("unix") set undodir=/tmp/,~/tmp,~/Temp else set undodir=d:/temp/ endif set undolevels=1000 set undoreload=10000 endif " Diff 模式的时候鼠标同步滚动 for Vim7.3 if has(‘cursorbind‘) set cursorbind end "============ " GUI setting " =========== if has(‘gui_running‘) " 只显示菜单 set guioptions=mcr " 高亮光标所在的行 set cursorline if has("win32") " Windows 兼容配置 source $VIMRUNTIME/mswin.vim source $VIMRUNTIME/menu.vim source $ViMRUnTIME/delmenu.vim " f11 最大化 nmap <f11> :call libcallnr(‘fullscreen.dll‘, ‘ToggleFullScreen‘, 0)<cr> nmap <Leader>ff :call libcallnr(‘fullscreen.dll‘, ‘ToggleFullScreen‘, 0)<cr> " 字体配置 exec ‘set guifont=‘.iconv(‘Consolas‘, &enc, ‘gbk‘).‘:h12:cANSI‘ exec ‘set guifontwide=‘.iconv(‘Microsoft\ YaHei‘, &enc, ‘gbk‘).‘:h12:cGB2312‘ endif " Under Linux/Unix etc. if has("unix") && !has(‘gui_macvim‘) set guifont=Courier\ 10\ Pitch\ 11 endif " Under the Mac(MacVim) if has("mac") || has("gui_macvim") if has("gui_macvim") " MacVim 下的字体配置 set guifont=Courier_New:h14 set guifontwide=YouYuan:h14 " 半透明和窗口大小 set transparency=2 set lines=200 columns=120 " 使用 MacVim 原生的全屏幕功能 let s:lines=&lines let s:columns=&columns func! FullScreenEnter() set lines=999 columns=999 set fu endf func! FullScreenLeave() let &lines=s:lines let &columns=s:columns set nofu endf func! FullScreenToggle() if &fullscreen call FullScreenLeave() else call FullScreenEnter() endif endf set guioptions+=e " Mac 下,按 <Leader>ff 切换全屏 nmap <f11> :call FullScreenToggle()<cr> nmap <Leader>ff :call FullScreenToggle()<cr> " I like TCSH :^) set shell=/bin/tcsh " Set input method off set imdisable " Set QuickTemplatePath let g:QuickTemplatePath = $HOME.‘/.vim/templates/‘ " 如果为空文件,则自动设置当前目录为桌面 lcd ~/Desktop/ endif endif endif " ========= " AutoCmd " ========= if has("autocmd") filetype plugin indent on " 括号自动补全 func! AutoClose() :inoremap ( ()<ESC>i :inoremap " ""<ESC>i :inoremap ‘ ‘‘<ESC>i :inoremap { {}<ESC>i :inoremap [ []<ESC>i :inoremap ) <c-r>=ClosePair(‘)‘)<CR> :inoremap } <c-r>=ClosePair(‘}‘)<CR> :inoremap ] <c-r>=ClosePair(‘]‘)<CR> endf func! ClosePair(char) if getline(‘.‘)[col(‘.‘) - 1] == a:char return "\<Right>" else return a:char endif endf """"""""""""""""""""""""""""""""""""""""""""" augroup vimrcEx au! autocmd FileType text setlocal textwidth=80 autocmd BufReadPost * \ if line("‘\"") > 0 && line("‘\"") <= line("$") | \ exe "normal g`\"" | \ endif augroup END """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Auto close quotation marks for PHP, Javascript, etc, file au FileType php,javascript,c,cpp exe AutoClose() " JavaScript 语法高亮 au FileType html,javascript let g:javascript_enable_domhtmlcss = 1 au BufRead,BufNewFile *.js setf jquery " 给各语言文件添加 Dict if has(‘win32‘) let s:dict_dir = $VIM.‘\vimfiles\dict\‘ else let s:dict_dir = $HOME."/.vim/dict/" endif let s:dict_dir = "setlocal dict+=".s:dict_dir au FileType php exec s:dict_dir."php_funclist.dict" au FileType css exec s:dict_dir."css.dict" au FileType javascript exec s:dict_dir."javascript.dict" " 格式化 JavaScript 文件 au FileType javascript map <f12> :call g:Jsbeautify()<cr> au FileType javascript set omnifunc=javascriptcomplete#CompleteJS " 增加 ActionScript 语法支持 au BufNewFile,BufRead,BufEnter,WinEnter,FileType *.as setf actionscript " CSS3 语法支持 au BufRead,BufNewFile *.css set ft=css syntax=css3 " 增加 Objective-C 语法支持 au BufNewFile,BufRead,BufEnter,WinEnter,FileType *.m,*.h setf objc " 将指定文件的换行符转换成 UNIX 格式 au FileType php,javascript,html,css,python,vim,vimwiki set ff=unix " 自动最大化窗口 if has(‘gui_running‘) if has("win32") au GUIEnter * simalt ~x "elseif has("unix") "au GUIEnter * winpos 0 0 "set lines=999 columns=999 " 给 Win32 下的 gVim 窗口设置透明度 au GUIEnter * call libcallnr("vimtweak.dll", "SetAlpha", 225) endif endif endif " ================= " Plugin Configure " ================= "neocomplcache setting " VIM HTML 插件 let g:no_html_toolbar = ‘yes‘ """"""""""""""""""""""""""""""""""""""""""""""""""""" " VimWiki 配置 if !exists("g:vimwiki_list") let g:vimwiki_list = [ \{"path": "~/Wiki/Default/", "path_html": "~/Sites/wiki/", \ "html_footer": "~/Wiki/Default/footer.tpl", "html_header": "~/Wiki/Default/header.tpl", \ "auto_export": 1}, \{"path": "~/Wiki/WebWW/", "path_html": "~/Sites/webww/", "auto_export": 1} \] let g:vimwiki_auto_checkbox = 0 if has(‘win32‘) " 注意! " 1、如果在 Windows 下,盘符必须大写 " 2、路径末尾最好加上目录分隔符 let s:vimwiki_root = "$VIM/Vimwiki" let g:vimwiki_list = [ \{"path": s:vimwiki_root."/Default/", \ "html_footer": s:vimwiki_root."/Default/footer.html", \ "html_header": s:vimwiki_root."/Default/header.html", \ "path_html": s:vimwiki_root."/Default/_output/", "auto_export": 1}, \{"path": s:vimwiki_root."/WebWW/", \"path_html": s:vimwiki_root."/WebWW/html/", "auto_export": 1} \] let g:vimwiki_w32_dir_enc = ‘cp936‘ endif au FileType vimwiki set ff=unix fenc=utf8 noswapfile nobackup "au FileType vimwiki imap <C-t> <c-r>=TriggerSnippet()<cr> nmap <C-i><C-i> :VimwikiTabGoHome<cr> nmap <Leader>ii :VimwikiTabGoHome<cr> endif " on Windows, default charset is gbk if has("win32") let g:fontsize#encoding = "cp936" endif """""""""""""""""""""""""""""""""""" " PYTHON 相关的设置 "设置= + - * 前后自动空格 "设置,后面自动添加空格 au FileType python inoremap <buffer>= <c-r>=EqualSign(‘=‘)<CR> au FileType python inoremap <buffer>+ <c-r>=EqualSign(‘+‘)<CR> au FileType python inoremap <buffer>- <c-r>=EqualSign(‘-‘)<CR> au FileType python inoremap <buffer>* <c-r>=EqualSign(‘*‘)<CR> au FileType python inoremap <buffer>/ <c-r>=EqualSign(‘/‘)<CR> au FileType python inoremap <buffer>> <c-r>=EqualSign(‘>‘)<CR> au FileType python inoremap <buffer>< <c-r>=EqualSign(‘<‘)<CR> au FileType python inoremap <buffer>: <c-r>=Swap()<CR> au FileType python inoremap <buffer>, ,<space> " ================== " script‘s functions "=================== " 获取当前目录 func! GetPWD() return substitute(getcwd(), "", "", "g") endf " 跳过页头注释,到首行实际代码 func! GotoFirstEffectiveLine() let l:c = 0 while l:c<line("$") && ( \ getline(l:c) =~ ‘^\s*$‘ \ || synIDattr(synID(l:c, 1, 0), "name") =~ ".*Comment.*" \ || synIDattr(synID(l:c, 1, 0), "name") =~ ".*PreProc$" \ ) let l:c = l:c+1 endwhile exe "normal ".l:c."Gz\<CR>" endf " 返回当前时期 func! GetDateStamp() return strftime(‘%Y-%m-%d‘) endfunction " 全选 func! SelectAll() let s:current = line(‘.‘) exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G") endfunc " From an idea by Michael Naumann func! VisualSearch(direction) range let l:saved_reg = @" execute "normal! vgvy" let l:pattern = escape(@", ‘\\/.*$^~[]‘) let l:pattern = substitute(l:pattern, "\n$", "", "") if a:direction == ‘b‘ execute "normal ?" . l:pattern . "^M" elseif a:direction == ‘gv‘ call CmdLine("vimgrep " . ‘/‘. l:pattern . ‘/‘ . ‘ **/*.‘) elseif a:direction == ‘f‘ execute "normal /" . l:pattern . "^M" endif let @/ = l:pattern let @" = l:saved_reg endfunc "函数后面加上!是防止vimrc文件重新载入时报错 "实现光标位置自动交换:) --> ): function! Swap() if getline(‘.‘)[col(‘.‘) - 1] =~ ")" return "\<ESC>la:" else return ":" endif endf """""""""""""""""""""""""""""""""""""""" "实现+-*/前后自动添加空格,逗号后面自动添加空格,适用python "支持+= -+ *= /+格式 function! EqualSign(char) if a:char =~ ‘=‘ && getline(‘.‘) =~ ".*(" return a:char endif let ex1 = getline(‘.‘)[col(‘.‘) - 3] let ex2 = getline(‘.‘)[col(‘.‘) - 2] if ex1 =~ "[-=+><>\/\*]" if ex2 !~ "\s" return "\<ESC>i".a:char."\<SPACE>" else return "\<ESC>xa".a:char."\<SPACE>" endif else if ex2 !~ "\s" return "\<SPACE>".a:char."\<SPACE>\<ESC>a" else return a:char."\<SPACE>\<ESC>a" endif endif endf """"""""""""""""""""""""""""""""""""""""""""""""""""""" "SwitchToBuf()实现它在所有标签页的窗口中查找指定的文件名,如果找到这样一个窗口, "就跳到此窗口中;否则,它新建一个标签页来打开vimrc文件 "上面自动编辑.vimrc文件用到的函数 function! SwitchToBuf(filename) let bufwinnr = bufwinnr(a:filename) if bufwinnr != -1 exec bufwinnr . "wincmd w" return else " find in each tab tabfirst let tab = 1 while tab <= tabpagenr("$") let bufwinnr = bufwinnr(a:filename) if bufwinnr != -1 exec "normal " . tab . "gt" exec bufwinnr . "wincmd w" return endif tabnext let tab = tab + 1 endwhile " not exist, new tab exec "tabnew " . a:filename endif endfunction """""""""""""""""""""""""""""""""""""""""""""""""" "Last change用到的函数,返回时间,能够自动调整位置 function! TimeStamp(...) let sbegin = ‘‘ let send = ‘‘ if a:0 >= 1 let sbegin = a:1.‘\s*‘ endif if a:0 >= 2 let send = ‘ ‘.a:2 endif let pattern = ‘Last Change: .\+‘ \. send let pattern = ‘^\s*‘ . sbegin . pattern . ‘\s*$‘ let now = strftime(‘%Y-%m-%d %H:%M:%S‘, \localtime()) let row = search(pattern, ‘n‘) if row == 0 let now = a:1 . ‘ Last Change: ‘ \. now . send call append(2, now) else let curstr = getline(row) let col = match( curstr , ‘Last‘) let spacestr = repeat(‘ ‘,col - 1) let now = a:1 . spacestr . ‘Last Change: ‘ \. now . send call setline(row, now) endif endfunction " ============= " Key Shortcut " ============= nmap <C-t> :tabnew<cr> nmap <C-p> :tabprevious<cr> nmap <C-n> :tabnext<cr> nmap <C-k> :tabclose<cr> nmap <C-Tab> :tabnext<cr> for i in range(1, &tabpagemax) exec ‘nmap <A-‘.i.‘> ‘.i.‘gt‘ endfor " 插件快捷键 nmap <C-d> :NERDTree<cr> nmap <C-e> :BufExplorer<cr> nmap <F2> :BufExplorer<cr> " 插入模式按 F4 插入当前时间 imap <F4> <C-r>=GetDateStamp()<cr> map <F6> zM " 关闭所有折 map <F7> zR " 打开所有折叠 nmap <F8> :TagbarToggle<cr> map <F12> :!ctags -R<CR> map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR> " 新建 XHTML 、PHP、Javascript 文件的快捷键 nmap <C-c><C-h> :NewQuickTemplateTab xhtml<cr> nmap <C-c><C-p> :NewQuickTemplateTab php<cr> nmap <C-c><C-j> :NewQuickTemplateTab javascript<cr> nmap <C-c><C-c> :NewQuickTemplateTab css<cr> nmap <Leader>ca :Calendar<cr> nmap <Leader>mr :MRU<cr> nmap <Leader>dd :NERDTreeToggle<cr> nmap <Leader>bf :BufExplorer<cr> nmap <Leader>tb :TagbarToggle<cr> " 直接查看第一行生效的代码 nmap <C-g><C-f> :call GotoFirstEffectiveLine()<cr> " 按下 Q 不进入 Ex 模式,而是退出 nmap Q :x<cr> "================== " Bundle setting " ================= set nocompatible " be iMproved filetype off " required! set rtp+=$VIM/vimfiles/bundle/vundle/ "call vundle#rc(‘$VIM/vimfiles/bundle‘) " let Vundle manage Vundle " required! " My Bundles here: " original repos on github "======================================== " non github repos "======================================== "call pathogen#infect("$vim/vimfiles/bundle") filetype plugin indent on " required!
标签:des style blog http color java 使用 os
原文地址:http://www.cnblogs.com/iloveyouforever/p/3919599.html