[2008-07-08 06:24:51] Vim配置外一篇(中文化、输入法、代码补全等)
Vim不愧是地球上最强的文本编辑器之一(不加之一恐怕Emacs用户会有意见- -),用Vim就像用Foobar一样,必须先调教一番,使之很好的符合自己的习惯才能达到最高的效率。
之前(前情提要:[blog:91|非中文系统下Gvim中文化解决方法])提到了Vim在其他语言Win32平台下的中文化实现,这里再做一些补充修订:
====多语言平台下的中文化实现====
首先是编码设置
"设置内核为UTF-8 set enc=utf-8 "设置解码顺序,这个顺序经测试可以很好的识别UTF-8,JIS,GBK set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936然后设置界面
"设置内核为UTF-8 set enc=utf-8 "设置解码顺序,这个顺序经测试可以很好的识别UTF-8,JIS,GBK set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936注意这里需要下载Vim的[http://vcd.gro.clinux.org|中文文档] ====IME输入法切换设置==== 在Win32环境下,Vim总是会自作聪明的自动切换到IME输入法。如果想要关闭自动切换,只需要设置
set iminsert=0 imsearch=0即可,但由于Vim提供了判断IME输入是否打开的multi_byte_ime,我们就可以更加智能的加一些处理
if has('multi_byte_ime')
"未开启IME时光标背景色
hi Cursor guifg=bg guibg=Orange gui=NONE
"开启IME时光标背景色
hi CursorIM guifg=NONE guibg=Skyblue gui=NONE
" 关闭Vim的自动切换IME输入法(插入模式和检索模式)
set iminsert=0 imsearch=0
" 插入模式输入法状态未被记录时,默认关闭IME
"inoremap <silent> <ESC> <ESC>:set iminsert=0<CR>
endif
以上设置可以记忆IME开启状态,并用不同的光标颜色提示当前输入法
====代码自动补全====
实现代码补全需要插件[http://ctags.sourceforge.net/|Ctags],将下载的Ctags解压到任意文件夹,然后将Ctags目录追加到环境变量里,之后我们进入项目所在根目录,运行Ctags -R,Ctags会解析所有项目文件并生成一个类似索引的tags文件,然后Vim运行补全时会从tags文件中取得数据。
当然如果更新了类函数定义,也要再次运行Ctags重新生成一次索引,这没有Eclipse那样华丽而且智能,但相比较那些专用IDE的体积和启动速度,Vim的表现仍然非常出色。
默认的代码补全快捷键是Ctrl+X Ctrl+O,可以使用插件[http://www.vim.org/scripts/script.php?script_id=1643|SuperTab]将快捷键与Tab键合并
====自定义快捷键====
Normal模式下可以很方便的用nmap设定自定义快捷键,不过可惜的是键盘上的键位也已经被占用的七七八八了。仅列举自己常用的两个作为例子:
nmap mm :%s/\r//g双击m键可以删除Win下生成的多余换行符CR(在Vim中可以看到蓝色的^M)
nmap tt :%s/^\([\s ]\+\)/ /g<cr>:%s/^更新时间.*\d$//g<cr>:%s/<a href.*<\/a>$//g<cr>:%s/\([\s ]*\n\)\+/\r\r/<cr>这个就比较复杂一点,双击t键实现对在起点下载的TXT文本进行排版并删除里面多余的广告等。 最终效果截图 [photo:/picasa/allovince/5220926002522558673/5220926248939178194|Vim of AlloVince] ====至懒人==== 好吧,贴出自己的配置,如果只想复制粘贴的同学可以各取所需,不过注意配置对应的插件
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
"设置工作目录为当前编辑文件的目录
set bsdir=buffer
set autochdir
"编码设置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"语言设置
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
set guifont=NSimSun:h10
set helplang=cn
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"禁止生成临时文件
set nobackup
"搜索忽略大小写
set ignorecase
"搜索逐字符高亮
set incsearch
"行内替换
set gdefault
"始终显示行号
set nu!
"Tab键的宽度
set tabstop=4
"配色方案
colorscheme rainbow_fruit
"输入法设置
if has('multi_byte_ime')
"未开启IME时光标背景色
hi Cursor guifg=bg guibg=Orange gui=NONE
"开启IME时光标背景色
hi CursorIM guifg=NONE guibg=Skyblue gui=NONE
" 关闭Vim的自动切换IME输入法(插入模式和检索模式)
set iminsert=0 imsearch=0
" 插入模式输入法状态未被记录时,默认关闭IME
"inoremap <silent> <ESC> <ESC>:set iminsert=0<CR>
endif
"自动缩进
set ai!
"与Windows共享剪贴板
set clipboard+=unnamed
"Ctags的默认索引(需要插件Ctags)
set tags=$VIMRUNTIME/tags
"添加类型检测
filetype plugin indent on
"智能补全
set completeopt=longest,menu
"快捷键调用WinManager(需要插件WinManager)
let g:winManagerWindowLayout='FileExplorer'
nmap ff :WMToggle<cr>
nmap mm :%s/\r//g<cr>
"规范行首空格<cr>去除多余字符<cr>删除空白行<cr>规范行数
nmap tt :%s/^\([\s ]\+\)/ /g<cr>:%s/^更新时间.*\d$//g<cr>:%s/<a href.*<\/a>$//g<cr>:%s/\([\s ]*\n\)\+/\r\r/<cr>
"通过ctrl+方向键切换窗口(需要插件MiniBufExplorer)
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplMapWindowNavArrows = 1
====至更懒的人====
好吧,我放下载就是了…… [http://cid-01e48df64f8bd957.skydrive.live.com/embedrowdetail.aspx/Soft/Vim.7z|点击我]试试本Blog新增的下载功能吧,下载后解压到D:根目录,将Ctags目录(D:\Vim\vim71\plugin\ctags)加入环境变量即可
Read More
[2008-05-07 08:29:55] 非中文系统下Gvim中文化解决方法
Gvim在安装时会根据操作系统的编码自动选择相应的语言包,但有时候想要强制选择自己指定的语言时就需要进行配置。下面以日文系统下Gvim的中文化为例。
*set encoding=utf-8
*设定Gvim的内部文字编码为utf-8
*set langmenu=zh_CN.UTF-8
*设定Gvim的菜单使用中文表示
*language message zh_CN.UTF-8
*这里将Gvim的指令提示、帮助文档等设定为中文
*set guifont=NSimSun:h10
*其实至第三步为止,Gvim已经可以显示中文了,但由于安装在非中文系统下,Gvim会选择系统默认字体作为自己的GUI字体,所以一般这里仍不能正常显示,所以还需要设置一个包含中文字库的字体
*set fileencodings=ucs-bom,utf-8,chinese,japanese
*这里是设置文件打开的解码顺序,从最严格的ucs-bom开始尝试解码,不成功则转向下一个。
另外为了更好的让Gvim自动识别文件内码,可以使用[http://www.vim.org/scripts/script.php?script_id=1708|FencView插件]
Read More
