GaoWhen高H温

I just want to live while I am alive. 2009 守得云开见月明。2010 Plenilune.

我的 VIM 配置 $MYVIMRC

$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. [1] 最新的 Np + QuickText 已经可以修改激活键。
  2. [2] Google + Baidu = Goodu
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set diffexpr=MyDiff()
function MyDiff()
let opt = ‘-a –binary ‘
if &diffopt =~ ‘icase’ | let opt = opt . ‘-i ‘ | endif
if &diffopt =~ ‘iwhite’ | let opt = opt . ‘-b ‘ | endif
let arg1 = v:fname_in
if arg1 =~ ‘ ‘ | let arg1 = ‘”‘ . arg1 . ‘”‘ | endif
let arg2 = v:fname_new
if arg2 =~ ‘ ‘ | let arg2 = ‘”‘ . arg2 . ‘”‘ | endif
let arg3 = v:fname_out
if arg3 =~ ‘ ‘ | let arg3 = ‘”‘ . arg3 . ‘”‘ | endif
let eq = ”
if $VIMRUNTIME =~ ‘ ‘
if &sh =~ ‘\<cmd’
let cmd = ‘”"‘ . $VIMRUNTIME . ‘\diff”‘
let eq = ‘”‘
else
let cmd = substitute($VIMRUNTIME, ‘ ‘, ‘” ‘, ”) . ‘\diff”‘
endif
else
let cmd = $VIMRUNTIME . ‘\diff’
endif
silent execute ‘!’ . cmd . ‘ ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3 . eq
endfunction
“处理文本中显示乱码
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has(“win32″)
set fileencoding=chinese
else
set fileencoding=utf-8
endif
“处理菜单及右键菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
“处理consle输出乱码
language messages zh_CN.utf-8
“font
“set guifont=Monaco:h10:cANSI
set guifont=Courier_New:h11:cANSI
“set guifontwide=YouYuan:h11:cGB2312
“”set guifont=YaHei_Consolas_Hybrid:h11:cANSI
“设置tab大小
set tabstop=4
“隐藏工具栏
set guioptions-=T
set guioptions-=m
“不产生bak文件()
set nobackup
“显示行号
set nu
“自动缩进
set autoindent
“colo
“colo blackboard
colo textmate
“NERDTree
map td :NERDTree <CR>
“自动识别文件类型,自动匹配对应的文件
filetype on
filetype plugin on
“高亮显示匹配的括号
set showmatch
“Calendar
let g:calendar_diary=’d:\diary’
map ca :Calendar<cr>
“自动闭合各类括号
if has(“autocmd”)
filetype plugin indent on
augroup vimrcEx
au!
autocmd FileType text setlocal textwidth=78
autocmd BufReadPost *
\ if line(“‘\”") > 0 && line(“‘\”") <= line(“$”) |
\   exe “normal g`\”" |
\ endif
augroup END
function! 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
function! ClosePair(char)
if getline(‘.’)[col('.') - 1] == a:char
return “\<Right>”
else
return a:char
endif
endf
“auto close for PHP and Javascript script
au FileType php,c,python,javascript,html,css exe AutoClose()
endif
” 确保语法高亮
if exists(“syntax_on”)
syntax reset
else
syntax on
endif
“fullscreen
map <F11> <Esc>:call libcallnr(“gvimfullscreen.dll”, “ToggleFullScreen”, 0)<CR>
“opacity
“map <F10> <ESC>:call libcallnr(“vimtweak.dll”, “SetAlpha”, 200)<CR>
“set mapleader
let mapleader=”,”
“fast reload the .vimrc
map <silent> <leader>ss :source d:\vim\_vimrc<cr>
“fast edit the .vimrc
map <silent> <leader>ee :e d:\vim\_vimrc
“when .vimrc is edited, auto reload
autocmd! bufwritepost _vimrc source d:\vim\_vimrc
set fdm=indent
set shiftwidth=4

1 Comment »

  1. 呃,和自己的比对比对看看哪里还有设置不全的,我现在的配置也是很强大的。

RSS feed for comments on this post. TrackBack URL

Leave a comment