当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 27 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 用vim替代source insight
帖子发表于 : 2006-10-20 16:01 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
用vim替代source insight
Created 星期五 20/10/2006 14:59

在浏览和修改稍微复杂的程序时候,确实source insight是个非常好的工具。转到Linux以后,我一直在找替代工具。最先是等anjuta,结果苦苦等到了一个鸡肋的2.02。然后,认真配置了下wine,用wine把si跑了起来,只是si的开发有些非常规,就算在win下面,中文注视等都是类似半角汉字的那样,而且,在实际使用中,快速查找参考的功能,有bug,曾经搞得我冒汗。试想下,你在一堆源码里面通篇修改了一个变量的处理方式,等一个星期以后,发现si原来的搜索不全,有2个需要修改的地方漏了,不冒汗才怪。(anjuta也有类似的问题)。

我当初使用vi,纯粹是为了能在任何时候(比如tty下面)都有个熟悉的编辑器而已。偶尔一次看到了别人的vim的截图,发现支持一些函数列表,就赶紧搜索了一下,首先找到了一个中文的vim在线帮助(我已经贴论坛了http://forum.ubuntu.org.cn/about27617.html&sid=0577f1936d33b3cc9b1e34b85233ebc9),有了中文帮助,当然中国人才最能理解其中的命令的确切含义,不想读英文帮助,半懂而已。想起以前,看fvwm的英文帮助,是何等的艰难。这下终于开始了逐篇的阅读。才慢慢熟练了:h查找帮助的方法。通过2天的奋斗,几乎读完了在线帮助,搜索了几个小时的vim.org的插件。才发现vim竟然完全可以达到si的常用的那些非常有特色的功能。虽然界面还是有些简陋。:)

下面列举一下我认为需要实现的si的功能:
1。函数和变量的定义的即时浏览。这个是非常有用的功能。成千的变量,对于C/C++来说,一个类型错误都可能导致极难发现的问题,运行时出现无法预料的结果。vim里面使用taglist实现的。并且多个文件的列表都在一起,还可以按照类型折叠,以便于浏览。

2。变量调用的通篇搜索。涉及到一个全局变量的时候,可能10来个文件包括。排错的时候,需要一个一个的地方去认真确认的。在vim.org搜索的结果是,中文都支持不好,因为多数使用外部的grep。后来憋了很久,仔细研究了别人的插件,自己写个简单的,调用vimgrep,这样中文就显示完美了。

3。函数和类/结构成员的补全。我的结构经常是2到3层的套用,加上经常用到相对地址的宏定义,经常是一个变量一长串的。自己输入真的苦难,有点想碰死的感觉。vim本身就带了全能补全,就是C-x C-o,我把这个绑定到F8就是了。vim.org里面的一些补全的插件,我都试过,发现就本身的这个好。

4。方便的快速查找。一个变量不要输入,光标定位后,按键就可以上下搜索。vim里面直接就是#*索引当前词,我还加了mark插件和设置了incsearch参数和hlsearch参数。就更加直观了。

5。文件内部的函数和变量列表。长长的文件,几十个函数的时候,没有一个列表,会头晕的。这里使用taglist插件实现就是。

6。函数和变量的上下层调用的结构关系图。这个在vim的字符方式下,还是比较不直观的。不好实现。

7。函数和不同变量的颜色定义,包括字体,阴影效果以及定义的继承性能。这个是GUI的强项。vim还作不到这么好。

接着就说说vim的配置。
其实vim的配置很简单,而且规范。插件,比如*.vim文件放到~/.vim/plugins下面;文档放到~/.vim/doc里面;颜色配置放到~/.vim/syntax里面。主配置文件就是~/.vimrc。下面先列出vimrc文件。比较简单。
------------------------------
代码:
$●  cat ~/.vimrc
" 开启语法高亮
syntax on
" 设置文字编码自动识别
set fencs=utf-8,cp936
" 使用鼠标
set mouse=a
" 设置高亮搜索
set hlsearch
" 输入字符串就显示匹配点
set incsearch
" 输入的命令显示出来,看的清楚些。
set showcmd
" Tlist的内部变量。函数列表。
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=1
" 打开当前目录文件列表
map <F3> :Explore<CR>
" 函数和变量列表
map <F4> :TlistToggle<CR>
" 搜索当前词,并打开quickfix窗口
map <F5> :call Search_Word()<CR>
" 全能补全
inoremap <F8> <C-x><C-o>
" 没事,鼠标画线玩的。
" noremap <F9> :call ToggleSketch()<CR>
" 启动函数变量快速浏览的时间设置
set updatetime=100

-------------------------------

列出现在使用的插件。其中AutoExplorer和Search_Word,一个是在线帮助里面的,一个是我自己写的。其他的都是vim.org下的。下载的插件如果是压缩包,把里面的*.vim文件放出来就是,下次启动vim,这些功能就自动被读入并执行了。本身*.vim文件里面就都有用法帮助的。
代码:
$●  l ~/.vim/plugin/
AutoExplorer.vim  EnhancedCommentify.vim  Search_Word.vim  tabbar.vim
bufexplorer.vim   mark.vim                sketch.vim       taglist.vim


我自己写的那个简单得很。
代码:
$●  cat ~/.vim/plugin/Search_Word.vim
" au! QuickFixCmdPre *.[ch] call Search_Word()
func Search_Word()
  let w = expand("<cword>")             " 在当前光标位置抓词
  exe "vimgrep " w " *.c *.h"
  exe 'copen'
endfun

插件说明:

引用:
插件名称 说明 主要按键
-------------------------------------------------
EnhancedCommentify 当前行或者多行可视模式下的注释/反注释 \x
SuperTab 在插入状态使用TAB键补全,现在被自己定义的F8代替了 <TAB>
taglist 函数和变量定义的窗口,并可以双击跳转 :TlistToggle绑定到F4
tabbar 用标签窗口形式,显示打开的文件 Alt-1,2切换
AutoExplorer help里面剔出的快速浏览函数和变量的定义
bufexplorer 浏览打开的缓冲文件 \be \bv \bs
mark 不同颜色标记当前词,支持多次高亮标记 \m
sketch 可切换到鼠标画线,好玩的功能而已 F9绑定
Search_Word 自己写的简单的函数,搜索当前词,在quickfix窗口显示 F5绑定

给出一个截图。

图片

暂时写这么多。有需要再以后补充。


附件:
vim配置插件.png
vim配置插件.png [ 351.52 KiB | 被浏览 7432 次 ]



_________________
● 鸣学


最后由 eexpress 编辑于 2007-08-31 13:20,总共编辑了 1 次
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-10-20 16:03 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
插件说明那里是文本<TAB>,CSS显示不正常了。 :lol:


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-10-20 18:37 
头像

注册: 2005-08-29 14:49
帖子: 1119
地址: 杭州
送出感谢: 0 次
接收感谢: 3
嘿嘿,这些插件俺都用着,不错


_________________
用心×恒 | 豆瓣 | 门户 | Blog


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-10-22 3:13 

注册: 2006-10-10 17:05
帖子: 33
送出感谢: 0 次
接收感谢: 0 次
好象还用一个什么global的东东


_________________
Hi, I am here!


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2006-10-22 9:39 
头像

注册: 2006-02-23 14:46
帖子: 436
地址: 上海
送出感谢: 0 次
接收感谢: 1
我正在向 GTK+-2.0 移值 hypersrc ,一个不错的源代码浏览工具,移值工作已经基本完成,正在添加一些有用的功能,如代码编辑、自动完成等。

做完后通知大家测试 :lol:


_________________
====
dubuntu-6.06-livecd-i386正式版正式完工!
====
*支持LiveCD硬盘启动
*Linux 2.6.15-23-686
*永中Office 2007
*LumaQQ+OpenQ+cycloneQQ
**N 多的编程及调试工具**


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2006-10-26 19:47 
头像

注册: 2005-08-29 14:49
帖子: 1119
地址: 杭州
送出感谢: 0 次
接收感谢: 3
期待中,这个移植是什么概念?


_________________
用心×恒 | 豆瓣 | 门户 | Blog


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2006-10-26 21:42 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
hypersrc is a source code browser written in C and GTK+/GNOME (development has ended).

pypersrc is its successor written in Python, Tkinter, and C++ (actively developed).

如果真是标准的gtk+,那就是好东西。


_________________
● 鸣学


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2006-11-01 15:03 

注册: 2005-07-08 16:37
帖子: 110
地址: ruc
送出感谢: 0 次
接收感谢: 0 次
redhat出过一个阅读原代码的软件source navigator


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2006-11-01 20:12 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
hualala 写道:
redhat出过一个阅读原代码的软件source navigator
及其晦涩的东西。没法用。 :lol:


_________________
● 鸣学


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2006-11-03 18:49 
头像

注册: 2006-02-23 14:46
帖子: 436
地址: 上海
送出感谢: 0 次
接收感谢: 1
eexpress 写道:
hypersrc is a source code browser written in C and GTK+/GNOME (development has ended).

pypersrc is its successor written in Python, Tkinter, and C++ (actively developed).

如果真是标准的gtk+,那就是好东西。

我选择 GtkSourceView 作为文本编辑控件,所以编辑功能同GEdit差不多,用到一点Gnome的控件,现在已经可以使用了,不过由于工作太忙造成进度比较慢,估计这两天能出第一个版本,先贴个图吧:


附件:
文件注释: 颜色什么的都可以改的,不过界面还没有翻译(主要是I18N的部分还没有添加完成,以前的版本是不支持国际化的)。
hypersrc.png
hypersrc.png [ 112.68 KiB | 被浏览 13395 次 ]



_________________
====
dubuntu-6.06-livecd-i386正式版正式完工!
====
*支持LiveCD硬盘启动
*Linux 2.6.15-23-686
*永中Office 2007
*LumaQQ+OpenQ+cycloneQQ
**N 多的编程及调试工具**
页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2006-11-03 21:59 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
似乎不错哦。
带上下层调用分析。左下的是快速定义浏览吗。因为主窗口没看到那个函数名。
期待这个啊。


_________________
● 鸣学


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2006-11-06 9:45 
头像

注册: 2005-06-01 21:32
帖子: 191
送出感谢: 0 次
接收感谢: 0 次
期待lvjinhua的成果。很需要这个代码浏览工具的说!


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2006-11-07 8:36 

注册: 2006-11-04 13:49
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
期待hypersrc
不过似乎好像原作者又弄了个新的叫做pypersrc
有谁可以介绍该怎么安装么?按照他的说明没有装成功
网址:http://www.jimbrooks.org/web/hypersrc/


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2006-11-07 10:22 

注册: 2006-11-04 13:49
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
呵呵,不好意思,原来少装了一个python库libpythonize0
sudo apt-get install libpythonize0就可以了
不过感觉pypersrc目前还不怎么样


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2006-11-10 19:34 
头像

注册: 2006-02-23 14:46
帖子: 436
地址: 上海
送出感谢: 0 次
接收感谢: 1
hypersrc 第一个试用版出来了:
http://forum.ubuntu.org.cn/viewtopic.php?t=30779


_________________
====
dubuntu-6.06-livecd-i386正式版正式完工!
====
*支持LiveCD硬盘启动
*Linux 2.6.15-23-686
*永中Office 2007
*LumaQQ+OpenQ+cycloneQQ
**N 多的编程及调试工具**


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 27 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译