2009年3月26日星期四

ubuntu8.10安装vim7.2及使用说明

vim7.2出来好长时间了,ubuntu源里面却一直没有更新。常用软件是我是常新的,今天去vim.org下载了源码编译安装,可惜打开中文的时候,有的中文显示不正常,换了encoding也不解决。换了sourelist下载deb包安装中文显示也不正常,网上搜的方法不奏效。最后,发现了一个deb包最新的源,最近更新是2009年3月16日编译的,很满足我求新的需求。地址:http://trinitum.org/files/vim-7.2.130-ubuntu-8.10/
下载下面三个包依次安装:
vim-runtime_7.2.130-1_all.deb
vim-common_7.2.130-1_i386.deb
vim_7.2.130-1_i386.deb
使用原来的配置文件,正确显示中文。

安装中文帮助:
下载最新的中文帮助文件http://sourceforge.net/project/showfiles.php?group_id=56777
届押后,安装之: ./vimcdoc.sh -i

vim字符编码:
Vim 可以很好的编辑各种字符编码的文件,包括 UCS-2、UTF-8 等流行的 Unicode
编码方式:
Vim
有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding,它们的意义如下:
* encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer
(缓冲区)、菜单文本、消息文本等;
* fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim
保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此);
* fileencodings: Vim
启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将
fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode
编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面;
* termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口)
的字符编码方式。

Vim 的多字符编码的工作方式:
1. Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置
buffer、菜单文本、消息文的字符编码方式;
2. 读取需要编辑的文件,根据 fileencodings
中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding
为探测到的,看起来是正确的 (注1) 字符编码方式;
3. 对比 fileencoding 和 encoding 的值,若不同则调用 iconv
将文件内容转换为 encoding
所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer
里,此时我们就可以开始编辑这个文件了。注意,完成这一步动作需要调用外部的
iconv.dll (注2),你需要保证这个文件存在于 $VIMRUNTIME 或者其他列在 PATH
环境变量中的目录里;
4. 编辑完成后保存文件时,再次对比 fileencoding 和 encoding
的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为
fileencoding 所描述的字符编码方式,并保存到指定的文件中。同样,这需要调用
iconv.dll。

由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8
编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议
encoding 的值设置为 utf-8。这么做的另一个理由是 encoding 设置为 utf-8
时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的
;)。我们在中文 Windows
里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK
比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix
里表示 gb2312,在 Windows 里表示 cp936,也就是 GBK 的代码页)。

注1: 事实上,Vim 的探测准确度并不高,尤其是在 encoding 没有设置为 utf-8
时。因此强烈建议将 encoding 设置为 utf-8,虽然如果你想 Vim
显示中文菜单和提示消息的话这样会带来另一个小问题。


vim插件使用简介
1.tags
1)安装ctags
2)进入源码根目录,输入命令"ctags -R",会在当前目录下生成tags文件
3)用vim打开文件后,先输入命令"set tags=tags文件的路径",最好写在.vimrc中
4)vim中tag命令的使用
ctrl + ] 跳转函数、宏
ctrl + o 回到跳转前的地方
ctrl + T 跳到标签栈中较早的标签

在命令行中输入"vim -t 函数名" 直接打开文件并跳转函数
:tag 函数名(不分大小写) 跳转函数
:tags 显示跳转标签栈
5)vimrc设置
if has("ctags")
if filereadable("tags")
set tags=tags
endif
endif

2.cscope (创建一个数据库索引,用于查找)
1)安装cscope
2)进入源码根目录,输入命令"cscope -Rbq",会在当前目录下生成cscope.out,
cscope.in.out, cscope.po.out三个文件
3)cscope默认情况下不解析c++和java文件,可以把把这些文件的名字和路径保存在cscope.files文件中,当cscope发现在当前目录中存在cscope.files时,就会为cscope.files中列出的所有文件生成索引数据库
cd src
find . -type f > cscope.files
cscope -bq -i cscope.files
4)cscope命令行选项参数
-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件时,不搜索/usr/include目录
-i:
如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用"-",表示由标准输入获得文件列表。
-I dir: 在-I选项指出的目录中查找头文件
-u: 扫描所有文件,重新生成交叉索引文件
-C: 在搜索时忽略大小写
-P path:
在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。
5)输入":cscope add 路径/cscope.out",添加cscope数据库
6)vim中":cscope find"命令的选项参数
s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文件
7)vimrc设置
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
if filereadable("cscope.out")
cs add cscope.out
endif
set csverb
endif

3.taglist
1)到http://www.vim.org/scripts/script.php?script_id=273处下载taglist
2)在根目录下创建.vim目录,把taglist.zip解压到此目录下
plugin/taglist.vim taglist插件
doc/taglist.txt taglist帮助文件
3)vim操作taglsit命令
:Tlist 打开taglsit
:TlistClose 关闭taglist
:TlistToggle 在打开和关闭间切换
(可以在.vimrc中定义一个映射,使用快捷键",tl"来打开或关闭taglist:
let mapleader = ","
map <silent> <leader>tl :TlistToogle<cr>
)
4).vimrc设置
let Tlist_Ctags_Cmd = '/usr/bin/ctags' 设定linux系统中ctags程序的位置
let Tlist_Show_One_File = 1 不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 在右侧窗口中显示taglist窗口
let Tlist_Sort_Type = "name" 使taglist以tag名字进行排序
let Tlist_Use_SingleClick = 1 单击tag就跳转
let Tlist_Auto_Open = 1 启动vim后自动打开taglist窗口
let Tlist_Close_On_Select = 1 选择了tag后自动关闭taglist窗口
let Tlist_WinHeight = "" taglist窗口的高度
let Tlist_WinWidth = "" taglist窗口的宽度
let Tlist_Use_Horiz_Window = 1 taglist窗口横向显示
let Tlist_File_Fold_Auto_Close =1
同时显示多个文件中的tag时使taglist只显示当前文件tag,其它文件的tag都被折叠起来
let Tlist_GainFocus_On_ToggleOpen = 1
TlistToggle打开taglist窗口时,输入焦点在taglist窗口中
let Tlist_Process_File_Always = 1
taglist始终解析文件中的tag,不管taglist窗口有没有打开
5)taglist命令
<CR> 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o 在一个新打开的窗口中显示光标下tag
<Space> 显示光标下tag的原型定义
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出现顺序排序间切换
x taglist窗口放大和缩小,方便查看较长的tag
+ 打开一个折叠,同zo
- 将tag折叠起来,同zc
* 打开所有的折叠,同zR
= 将所有tag折叠起来,同zM
[[ 跳到前一个文件
]] 跳到后一个文件
q 关闭taglist窗口
<F1> 显示帮助

4.lookupFile (默认使用tags文件查找文件、缓冲区、目录下文件)
1)到http://www.vim.org/scripts/script.php?script_id=1581处下载
2)解压到.vim目录下
3)lookupFile需要genutils的支持,到http://www.vim.org/scripts/script.php?script_id=197处下载,然后也解压在.vim目录下
4)按F5键或输入":LookupFile"打开查找窗口,然后用"ctrl+n"或"ctrl+p"键在列表中选择
5)输入":LUBufs"命令可以在缓冲区中查找
6)输入":LUWalk"命令输入目录名后会在下拉列表中列出这个目录中的所有子目录及文件供选择
7).vimrc设置
let g:LookupFile_MinPatLength = 2 最少输入2个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0 不保存上次查找的字符串
let g:LookupFile_PreservePatternHistory = 1 保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1 回车打开第一个匹配项目
let g:LookupFile_AllowNewFiles = 0 不允许创建不存在的文件

5.colorscheme (vim顔色)
1)到http://www.vim.org/scripts/script.php?script_id=625处下载
2)解压到.vim目录下
3)使用命令"colorscheme .vim/colors/文件名"可以修改vimrc的顔色
4)vimrc设置
colorscheme darkblue

有几个插件强烈推荐
(1) A:在同名的cpp和h文件之间切换
http://www.vim.org/scripts/script.php?script_id=31
(2)
NERD_comments:超强的注释插件,支持很多语言的注释风格,按照上面的设置,只需要",cc"就可以添加注释了
http://www.vim.org/scripts/script.php?script_id=1218
(3) csupport:写C/C++代码必备
http://www.vim.org/scripts/script.php?script_id=213
(4) LargeFile:再也不用担心打开大文件会慢了
http://www.vim.org/scripts/script.php?script_id=1506
(5) TipOfTheDay:多读读vim的tips会有很多收获的,记得要经常更新tips文件啊
http://www.vim.org/scripts/script.php?script_id=88
(6) cppomnicomplete:提供C++中类/对象成员的补全(需要Vim7)
http://www.vim.org/scripts/script.php?script_id=1520
(7)
ColorSamplerPack:提供上百种颜色主题,必有一款适合你,不过大多数都是在GUI下才有相应的效果
http://www.vim.org/scripts/script.php?script_id=625
(8) vimcdoc:汉化的vim帮助 http://vimcdoc.sourceforge.net/

以下是vimrc配置文件,仅供参考:
set nu "显示行号
set background=light
"设定字体顔色模式,light使字体以较暗的顔色显示出来,适用于亮色系的背景;dark使字体以较亮的顔色显示出来,适用于暗色系的背景
set cindent "编程时c语言自动缩进
set cino=j1 "设定c/c++自动缩进的风格
set fileencodings=utf8,gb18030,big5,gb2312 "支持的字符编码
set formatoptions=rotcql "设置Vim中文本和注释的换行方式
set incsearch
"输入查找内容的同时,vim就开始对输入的内容进行匹配,并显示匹配的位置
set hlsearch "对匹配的所有项目进行高亮显示
set ignorecase "在查找时忽略大小写
set nocompatible "去掉有关vi一致性模式,避免以前版本的一些bug和局限
set shiftwidth=4 "反向制表符中的空格数目
set tabstop=4 "指定tab缩进的字符数目
set smarttab "解决shiftwidth和tabstop不等时的麻烦
set wildmenu "自动补全命令时候使用菜单式匹配列表
set mouse=a "使用鼠标

syntax on "开启语法高亮
filetype plugin indent on "打开文件类型检测功能

let mapleader = ","
let g:mapleader = ","

"tags setup
if has("ctags")
if filereadable("tags")
set tags=tags
endif
endif

"Tlist setup
let Tlist_Ctags_Cmd = '/usr/bin/ctags' "设定linux系统中ctags程序的位置
let Tlist_Sort_Type = "name" "使taglist以tag名字进行排序
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
let Tlist_Use_SingleClick = 1 "单击tag就跳转
let Tlist_WinWidth = 15 "taglist窗口的宽度
map <silent> <leader>tl :TlistToogle<cr>

"LookupFile setup
let g:LookupFile_MinPatLength = 2 "最少输入2个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0 "不保存上次查找的字符串
let g:LookupFile_PreservePatternHistory = 1 "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1 "回车打开第一个匹配项目
let g:LookupFile_AllowNewFiles = 0 "不允许创建不存在的文件

"cscope setup
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
if filereadable("cscope.out")
cs add cscope.out
endif
set csverb
endif

没有评论: