openserver下一直没有一个强大的编程工具,自带的vi在编程时实在效率不高,VIM是一个与vi类似的编辑器,这是一个开放源软件,目前最新版本是6.4,最新版的Vim已经具有了非常多的功能, 这些功能使程序员能更加轻松, 便捷地使用它们. 正是这些丰富强大的功能使vim成为无数程序员的至爱,但是vim没有openserver下可用二进制包,那么就让我们用源代码来构建一个吧(本文尽可能详细,预览图就借用一下这张算了 ,目前还不知道怎么实现预览功能,如有哪位知道,告诉一声,谢谢)
环境:sco openserver 5.06, 已装好开发系统, 安装补丁RS506A,OSS651B(可不装), OSS646C(必须装,因为装gcc用得装) 如果是5.05要装rs505a, oss646b 以上补丁可以在 中找到 所需要用到的工具: gwxlibs-1.3.1Ba, 这是装gcc必需要的,custom安装,并且要在装gcc之前就装好,因为我是装5.07的,所以不清楚单独装一个gcc编译器,是否可以不装 下载地址: gcc, 如果你有5.07的系统盘,可以直接装GNU Development Tools (ver 5.0.7Kj)好,如果没有的话,就到 去下载一个, custom安装 ctags-5.5.4, 虽然sco自带了一个,但是不支持taglist插件的参数,所以最好还是重新下载,自已编译一个,下载地址是:,以bin方式上传到sco机器上,假定上传到/tmp, 等下和vim一起编译 bzip2、unzip,gzip, 这三个都是解压工具,它们的源代码地址在下面,如果你有兴趣,也可以用源代码构建。 bzip2: unzip: gzip: 编译虽不复杂,但比较繁琐,建议大家到下面这个网站去下载来用, 下面讲一下在这个网站下载到的这三个工具软件的安装, 以二进制方式把bzip2-0.9.5d-VOLS.tar,gzip.tar,unzip-5.3-VOLS.tar这三个文件传到sco机器的/tmp目录下 以root用户登录, cd /tmp tar xvf bzip2-0.9.5d-VOLS.tar, 然后用custom安装 tar xvf unzip-5.3-VOLS.tar, 用custom安装 tar xvf gzip.tar cp gzip /usr/bin 环境变量:请把/usr/gnu/bin添加到PATH变量中,因为gcc就是装在这里的 我是用ksh,在.profile文件尾增加以下两句话: PATH=$PATH:/usr/gnu/bin export PATH 退出再重新登录,建议用root用户登录, 其它shell参照添加, 好象装准备的都准备好了,请先用gcc编译一个程序试下,看gcc是否工作正常,如果正常的话,就进行下一步的工作 1、到去下载vim的源代码,目前版本6.4,下载地址为: 传到sco机器上,假定为/tmp目录下,请记住,ftp时要用bin模式,因为windows的ftp默认是ascii模式 然后telnet,建议用root用户,执行以下命令 cd /tmp file vim-6.4.tar.bz2 如果输出不是"vim-6.4.tar.bz2: bzip2 compressed data", 而是"vim-6.4.tar.bz2: cannot open for reading", 就说明上传时不是bin模式,删除再传,然后继续下面的步骤 bunzip2 vim-6.4.tar.bz2 tar xvf vim-6.4.tar cd vim64 CC=gcc CFLAGS='-O6 -static -fomit-frame-pointer -march=i586 -mcpu=i586 -DSCO -DMAXPATHLEN=1024' LDFLAGS='-static' export CC CFLAGS LDFLAGS 建议使用静态编译, ./configure --prefix=/usr --host=i586-pc-sco3.2v5.0 --with-view-name=vview --with-ex-name=vex --with-features=huge --enable-cscope --enable-multibyte --with-x=no --enable-gui=no --with-tlib=curses --disable-nls gmake或make gmake install
cd /usr/share/vim cp vim64/vimrc_example.vim vimrc 然后再编译ctags, cd /tmp gzip -d ctags-5.5.4.tar.gz tar xf ctags-5.5.4.tar cd ctags-5.5.4 ./configure --prefix=/usr gmake gmake install
2. 安装taglist, tabbar, SQLUtilities, align这四个插件 taglist: tabbar: SQLUtilities: align: 然后传到sco机器/tmp目录下,telnet后执行如下命令 cd /usr/share/vim mkdir vimfiles cd vimfiles unzip /tmp/taglist_40b3.zip unzip /tmp/sqlutil_141.zip gzip -d /tmp/Align[1].tar.gz tar xf /tmp/Align[1].tar cd plugin cp /tmp/tabbar.vim . cd /usr/share/vim/vimfiles/doc 运行vim, 执行“:helptags .”这个命令,至此vim已经基本安装完毕,至于还有什么好的插件,请大家推荐使用 还有个sql_iabbr插件,是用来在编辑时对sql关键字自动大写替换的,有兴趣可以用一下,不过我觉得有时候会引起误用,所以没有在些例出来,使用方法是在/usr/share/vim/vim64/ftplugin/目录下建一个esqlc目录,然后把sql_iabbr.vim传到这个目录 3、请做以下修改,以便vim能对esqlc文件有更好的支持 使vim能对esql文件自动增加cindent支持(使用C语言的自动缩进) cd /usr/share/vim/vim64/indent cp c.vim esqlc.vim 使taglist插件可以支持esql文件 用vim打开/usr/share/vim/vimfiles/plugin/taglist.vim文件,移到348行,增加以下三行 " esqlc language let s:tlist_def_esqlc_settings = 'c;d:macro;g:enum;s:struct;u:union;t:typedef;' . \ 'v:variable;f:function'
在/usr/share/vim/vimrc文件的末尾增加以下这句话,否则tabbar插件不能正常工作 let g:Tb_ModSelTarget = 1 let g:Tb_ForceSyntaxEnable = 1 /usr/share/vim/vimrc是vim的公共配置文件,私人配置文件在用户起始目录的.vimrc文件中 第一次使用请建立.vimrc,里面的内容可以参照本文最后我现在现在.vimrc的内容 按上面设置好后,如果在root用户下运行正常,而非root不可用,则要检查/usr/share及/usr/share/vim这些目录的权限,要755才可以 4、配置了cscope, 提高开发效率 Cscope 是一个类似 ctags 的工具。 你可以把它想作是超过频的 ctags,因为它功能比ctags 强大很多。在 Vim 里,通过 cscope 查询结果来跳转就象跳转到其他的标签完全一样; 它被保存在标签堆栈里。这样你就可以象使用 |tags| 一样在函数等等之间便捷的跳转。下面举例说明如果配置cscope 假设用户目录下/u/infdev, 该目录下有二个子目录存放有源代码,分别是online,admin, 用以下语句建立cscope数据文件 cd /u/infdev find online -name "*.c" -o -name "*.ec" -o -name "*.h" > cscope.files find admin -name "*.c" -o -name "*.ec" -o -name "*.h" >> cscope.files cscope -b /u/infdev目录下就会生成两个文件,cscope.files, cscope.out 在用户的.vimrc最后增加以下内容 set cst set csto=0 set cscopequickfix=s-,c-,d-,i-,t-,e- cs add /u/infdev/cscope.out /u/infdev set path+=~/include,../incl,../inc
vim中cscope相关命令简介: 所有命令都是通过主命令 ":cscope" 的子项完成的。主命令最短的缩写是 ":cs"。 ":scscope" 完成同样的功能的同时还可以分割窗口 (缩写: "scs"). 可用的子命令有: add : 添加一个新的 cscope 数据库/连接。 用法 :cs add {file|dir} [pre-path] [flags] [pre-path] 用来通知 cscope 使用 -P [pre-path] 选项。 [flags] 可以用来给 cscope 传递额外的选项。 例子 :cscope add /usr/local/cdb/cscope.out :cscope add /projects/vim/cscope.out /usr/local/vim :cscope add cscope.out /usr/local/vim -C
find : 查询 cscope。除了第 5 个之外的所有 cscope 查询功能都 可以使用。第 5 个是 "Change this grep pattern"。 用法 :cs find {querytype} {name} {querytype} 和 cscope 的控制台界面以及 nvi 缺省命令 都是一致的。 0 或 s: 查找 C 符号 1 或 g: 查找定义 2 或 d: 查找本函数调用的函数 3 或 c: 查找调用指定函数的函数 4 或 t: 查找字符串 6 或 e: 查找 egrep 模式 7 或 f: 查找文件 8 或 i: 查找包含指定文件的文件 例如 :cscope find c vim_free :cscope find 3 vim_free 这两个例子执行同样的查询。 kill : 终止一个 cscope 连接 (或终止所有 cscope 连接). 用法 :cs kill {num|partial_name} 要终止一个连接,需要给处连接号或者部分的连接名称。部分名称可以是数据库文件路径的任何一部分。所以要当心使用这个功能! 如果给定的连接号是 -1,那么所有的cscope 连接都会被终止。 reset: 重新初始化所有连接。 用法 :cs reset show : 显示当前的连接。 用法 :cs show 5、插件的基本使用方法 taglist: 用:TlistToggle 打开左边的tag窗口,再输一次自动关闭,按ctrl+w可以在窗口之间进行切换,也可以按照如下方法定义一个快捷键 nnoremap :TlistToggle tabbar: 按ESC+1,ESC+2,ESC+3, ... ESC+0 在十个窗口切换,如果开了tag窗口,则可能要按一下回车,才能回到tabbar的当前编辑窗口 SQLUtilities:这是一个用来格式化sql语言的,\sf 格式化当前行,如果sql语言占3行,则用3\sf
至此,基本工作已经完成了,你已经可以用vim来编辑一个ec文件,用ctrl+]来查找函数定义,用ctrl+t来返回,是不是很方便啊
下面列出我现在所用.vimrc, let Tlist_Enable_Fold_Column = 0 "使taglist插件不显示左边的折叠行, let Tlist_WinWidth = 20 "taglist窗口宽度 let Tlist_Show_One_File = 1 "taglist插件只显示当前文件的tag let g:Tb_ForceSyntaxEnable = 1
colorscheme evening set encoding=euc-cn "vim所使用的字符:euc-cn(simplified Chinese (Unix only)),如果有问题可以删除
set foldmethod=indent "折叠使用indent风格 set foldlevel=10 "多少层才自动折叠?[0m
set tabstop=4 "tab占用4个字符宽度 set softtabstop=4 set shiftwidth=4 set expandtab "不使用tab,使用空格替代tab
set cinoptions=:N "使得自动缩进时swithc和case在同一列上,个人爱好,可以不设 set listchars=tab:>-,trail:- "每个制表符会以 >--- 显示1, 同时行尾空格以 - 显示, set list打开 " set whichwrap=h,l set nobackup " do not keep a backup file, use versions instead
set cst set csto=0 set cscopequickfix=s-,c-,d-,i-,t-,e- cs add /u/infdev/cscope.out /u/infdev set path+=~/include,../incl,../inc
nmap :%s/\s\+$// "删除行末多余空字符 nmap [i "显示当前变量的定义 nmap :TlistToggle "打开tag窗口 nmap gg=G "格式化整个文件,为误用,特意加shift键 nmap =a{ "格式化当前{}之内的文本 nmap :cs find d =expand("") "查找本函数调用的函数 nmap :cs find c =expand("") "查找调用指定函数的函数 nmap :make "make 当前目录的文件 nmap :cnext "跳到下一个编译错误 nmap :cc "看完整的错误信息 nmap :clist "看所有错误信息
下面附上常用的vim功能键
K 跳转到函数的man页
gg=G 按indent缩进格式化整个文件 == 格式化整行 =a{ 格式化当前{}程序块
gf 查找文件,在.vimrc中用set path=/u/infdev/**/**/** 来设置搜索路径
/* 折行功能可以将一节浓缩为一行, 只显示其大概. */ zo 打开折行 zc 关闭折叠 在编辑模式下用ctrl+o可以暂时进行命令模式 [{ 命令跳转到当前代码块的开头, ]} 会跳转到当前代码块的末尾. [[ 向前查找一个函数的开始 ]] 向后查找一个函数的开始 ][ 向前查找一个函数的结尾, [] 向后查找一个函数的结尾, { 到前一个空行上 } 到下一个空行上 # 到与当前单词相同的上一个单词上 * 到与当前单词相同的下一个单词上 % 可以让光标从它当前所在的括号跳转到与它相匹配的括号上去,
CTRL+] 跳转tags定义的地方= ctrl+t返回调用tag的地方
gD 查询变量,只在本文件中 gd 查询变量, 只在本函数中 [i 查询变量的定义 [ 跳到变量定义的地方
set makeprg=nmake 后面nmake可自己定义,一般不用定义 :make 编译程序 :cnext 跳到下一个编译错误 :cc 看完整的错误信息 :clist 看所有错误信息
:e b 在命令行用tab可以补全 按ctrl+d列出所有匹配 q: 列出命令窗口 Vim有一种记录宏的机制。你键入"qa"开始把一段宏记录入寄存器变量`a'中。按下来你可以象平常一样键入你要的操作, 只是这些操作都会被Vim记录进它命名为`a'的宏中, 再次再下"q"键, 就结束了宏`a'的录制。当你要重复执行你刚才记录的那些操作时只要使用"@a"命令。共有26个可用的寄存器供你记录宏。
| | |