我的 VIM 配置 $MYVIMRC
话说各类编辑器我还真用过不少。最好的时候用过 Ultraedit,后来用 Editplus 编辑 html,Topstyle 编辑 css。再后来入了小二黑,发现水果上既好看又好用的编辑器也好多,尝试了 Coda,Espresso, 后来一直用 TextMate。TextMate 除了不能完美支持中文外,它的 blackboard 主题以及各类 bundle 应用真是强大啊。
再后来配了台式机,在 PC 下用上了 Notepad++,它的 QuickText 和 TextMate 里面的 bundle 的快捷键以及激活键都不一样,很别扭。费劲巴拉地把快捷键基本统一之后,Np 要用 Ctrl+P1 激活,而 TextMate 是用 Tab 激活,这两者在用的时候老是会搞混。而且在家用 TextMate,在公司用 Np,这个切换的过程很难受。
鉴于在不通编辑器间移动的痛苦和更换熟悉编辑器的成本,我想找一个跨平台的来保持统一性。Aptana 和 IntellJ IDEA
倒是都满足,而且功能都很强大,但是我觉得它们算是 IDE 了,比较臃肿,而且 Java 的东西,启动速度有点慢。于是我就想到了我一直不间断尝试而未掌握的 VIM。
VIM 的强大自然不用多说了,我之前一直觉得不能掌握的原因大致如此:
- 没有适合的配置
之前都是拿网上所谓的最强大的配置文件来用,虽然确实是强大无比,但是不适合自己,而且那么长的配置文件,看着也晕。这次是慢慢从最基础的解决文字乱码开始,一点一点地增加配置,用来满足自己的一些需求。这样在自己理解的基础上也可以做些调整,不会像以前那样一头雾水。现在的配置文件很短,但是加上几个插件,完全可以满足目前日常的使用和大量关于 Html 和 css 的工作。
- 学而不用。
有句话说的好,VIM 不是学出来的,而是用出来的。以前帮助文件看得多,实际用得少。现在虽然还是只了解一些基础的命令,但是用起来也已经比较熟练了,一些稍微高级点的命令可以慢慢再去摸索。简单命令虽然笨点,但是依然有效。
以下是我目前的配置文件,大部分有注释,应该能看懂,看不懂的话先 Goodu2 再问。
- [1] 最新的 Np + QuickText 已经可以修改激活键。
- [2] Google + Baidu = Goodu
set nocompatiblesource $VIMRUNTIME/vimrc_example.vimsource $VIMRUNTIME/mswin.vimbehave mswinset diffexpr=MyDiff()function MyDiff()let opt = ‘-a –binary ‘if &diffopt =~ ‘icase’ | let opt = opt . ‘-i ‘ | endifif &diffopt =~ ‘iwhite’ | let opt = opt . ‘-b ‘ | endiflet arg1 = v:fname_inif arg1 =~ ‘ ‘ | let arg1 = ‘”‘ . arg1 . ‘”‘ | endiflet arg2 = v:fname_newif arg2 =~ ‘ ‘ | let arg2 = ‘”‘ . arg2 . ‘”‘ | endiflet arg3 = v:fname_outif arg3 =~ ‘ ‘ | let arg3 = ‘”‘ . arg3 . ‘”‘ | endiflet eq = ”if $VIMRUNTIME =~ ‘ ‘if &sh =~ ‘\<cmd’let cmd = ‘”"‘ . $VIMRUNTIME . ‘\diff”‘let eq = ‘”‘elselet cmd = substitute($VIMRUNTIME, ‘ ‘, ‘” ‘, ”) . ‘\diff”‘endifelselet cmd = $VIMRUNTIME . ‘\diff’endifsilent execute ‘!’ . cmd . ‘ ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3 . eqendfunction“处理文本中显示乱码set encoding=utf-8set fileencodings=utf-8,chinese,latin-1if has(“win32″)set fileencoding=chineseelseset fileencoding=utf-8endif“处理菜单及右键菜单乱码source $VIMRUNTIME/delmenu.vimsource $VIMRUNTIME/menu.vim“处理consle输出乱码language messages zh_CN.utf-8“font“set guifont=Monaco:h10:cANSIset guifont=Courier_New:h11:cANSI“set guifontwide=YouYuan:h11:cGB2312“”set guifont=YaHei_Consolas_Hybrid:h11:cANSI“设置tab大小set tabstop=4“隐藏工具栏set guioptions-=Tset guioptions-=m“不产生bak文件()set nobackup“显示行号set nu“自动缩进set autoindent“colo“colo blackboardcolo textmate“NERDTreemap td :NERDTree <CR>“自动识别文件类型,自动匹配对应的文件filetype onfiletype plugin on“高亮显示匹配的括号set showmatch“Calendarlet g:calendar_diary=’d:\diary’map ca :Calendar<cr>“自动闭合各类括号if has(“autocmd”)filetype plugin indent onaugroup vimrcExau!autocmd FileType text setlocal textwidth=78autocmd BufReadPost *\ if line(“‘\”") > 0 && line(“‘\”") <= line(“$”) |\ exe “normal g`\”" |\ endifaugroup ENDfunction! 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>endffunction! ClosePair(char)if getline(‘.’)[col('.') - 1] == a:charreturn “\<Right>”elsereturn a:charendifendf“auto close for PHP and Javascript scriptau FileType php,c,python,javascript,html,css exe AutoClose()endif” 确保语法高亮if exists(“syntax_on”)syntax resetelsesyntax onendif“fullscreenmap <F11> <Esc>:call libcallnr(“gvimfullscreen.dll”, “ToggleFullScreen”, 0)<CR>“opacity“map <F10> <ESC>:call libcallnr(“vimtweak.dll”, “SetAlpha”, 200)<CR>“set mapleaderlet mapleader=”,”“fast reload the .vimrcmap <silent> <leader>ss :source d:\vim\_vimrc<cr>“fast edit the .vimrcmap <silent> <leader>ee :e d:\vim\_vimrc“when .vimrc is edited, auto reloadautocmd! bufwritepost _vimrc source d:\vim\_vimrcset fdm=indentset shiftwidth=4
- February 2010
- 26
- 糖伴西红柿
- 共享资源,经验技巧
- Comments (1)
- Tags: tip, vim —
1 Comment »
-
呃,和自己的比对比对看看哪里还有设置不全的,我现在的配置也是很强大的。
RSS feed for comments on this post. TrackBack URL



























