gvim72 for windows精简版

do_fork 2009-12-06 11:16:47
精简过的特性:
1. 英语之外语言.
2. GUI安装卸载程序.
3. GUI的gvim菜单.
4. 无用的Tool
5. vimtutor启动脚本
6. DOS终端版vim
.........................

添加了的东西:
1. python2x.dll
2. 默认的_vimrc配置文件
3. ctags.exe, cscope.exe
4. taglist,bufferexplorer......
5. 最新的syntax文件
6. NERD_commenter
.....................


官方版本打包4M不到点,但是python版本太低,是2.4的,有点不爽,
于是我svn co了最新稳定版源码,编译了一个支持python2.6的出来。
打包后比整合py2.4的稍微肥了点,所幸没有超过4.5M。

下载和详细说明在这里
http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=246650
...全文
442 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
wengfanfan 2010-07-30
  • 打赏
  • 举报
回复
看看~~~试用下
老邓 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 do_fork 的回复:]
不折腾了,还是接着用vim吧
[/Quote]
^_^
do_fork 2009-12-07
  • 打赏
  • 举报
回复
不折腾了,还是接着用vim吧
老邓 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 do_fork 的回复:]
Linux 2.6.32内核,
trace_sched_process_wait "函数",
看看CDT能不能直接根据这个名字跳转到定义处。
内核 make tags cscope 生成的索引,定位不了
[/Quote]
那是因为Linux内核支持生成ctags。
我没研究过Linux下内核,不过,像我在Windows下这样的代码,Eclipse CDT都可以智能提示的:

// 所有消息响应函数必须以qpEvt开头
#define qpEvt void CALLBACK

#define X_LPARAM(lpa) ((int)(short)LOWORD(lpa))
#define Y_LPARAM(lpa) ((int)(short)HIWORD(lpa))

#define IMPLEMENT_EVENT(EVT) Event<EVT>& qp##EVT() { return RegisterEvent<EVT>(); }
#define IMPLEMENT_EVENT_GET(CLASS) \
template <typename T> \
Event<T>& RegisterEvent() \
{ \
Event<T>* p = NULL; \
WORD id = T::GetEventId<CLASS>(); \
if (m_evtFlag.Size() <= id) m_evtFlag.Resize(m_evtFlag.Size() == 0 ? 8 : id); \
if (!m_evtFlag[id]) \
{ \
do { qpNewPtr(p, Event<T>); } while (p == NULL); \
m_evtFlag.Set(id, true); \
EventObject obj = {p, id}; \
m_evtObj.Add(obj); \
} \
else \
{ \
EventObject obj = {NULL, id}; \
p = static_cast<Event<T>*>(m_evtObj.Find(obj)->obj); \
} \
qpASSERT(p != NULL); \
return *p; \
} enum

#define SEND_EVENT(EVT) SEND_##EVT(EVT)

#define EVENT_GET_ID(EVT) template<typename T> static WORD GetEventId() { return T::Id##EVT; }

#define EVENT_SENDER_BEGIN(EVT) if (m_evtFlag.Size() > Id##EVT && m_evtFlag[Id##EVT]) {

#define EVENT_SENDER_END(EVT, VALUE) \
for (WORD i = 0; i < m_evtObj.Size(); ++i) \
{ \
if (m_evtObj[i].id == Id##EVT) \
{ \
(*static_cast<Event<EVT>*>(m_evtObj[i].obj))(VALUE); \
if (i > Id##EVT) \
{ \
m_evtObj.Swap(i, Id##EVT); \
m_evtObj.Resize(m_evtObj.Size()); \
} \
break; \
} \
} \
}


// WM_CREATE
#define SEND_EvtCreate(EVT) \
case WM_CREATE: \
EVENT_SENDER_BEGIN(EVT) \
EVT evt(m_wnd, this, reinterpret_cast<LPCREATESTRUCT>(lpa), res, user, false); \
EVENT_SENDER_END(EVT, evt); \
break
struct EvtCreate
{
EvtCreate(HWND w, Object* o, LPCREATESTRUCT c, LRESULT& r, bool& u, bool s)
: wnd(w), owner(o), createStruct(c), res(r), user(u), stop(s) {}
HWND wnd;
Object* owner;
LPCREATESTRUCT createStruct;
LRESULT& res;
bool& user;
bool stop;
EVENT_GET_ID(EvtCreate);
};


客户代码:
class Canvas : public Widget
{
public:
void Create();

protected:
bool ProcessEvent(UINT msg, WPARAM wpa, LPARAM lpa, LRESULT& res, bool& user);

public:
IMPLEMENT_EVENT(EvtPaint)
IMPLEMENT_EVENT(EvtTimer)
IMPLEMENT_EVENT_GET(Canvas)
{
IdEvtPaint,
IdEvtTimer,
LastEvtId
};
};
do_fork 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 loaden 的回复:]
引用 5 楼 do_fork 的回复:
那些看上去一团麻的宏搞出来的东西,不知道有什么工具能索引到。

在这点上,Eclise CDT的优势就出来了。
都可以搞定!

Eclipse CDT是我用过的免费开源IDE里,智能提示最强大的!
如果VS不搭档Visual AssistX的话,都敌不过Eclipse CDT的。
缺点当然也很明显:速度慢些。
[/Quote]

Linux 2.6.32内核,
trace_sched_process_wait "函数",
看看CDT能不能直接根据这个名字跳转到定义处。
内核 make tags cscope 生成的索引,定位不了
clouddiscovery 2009-12-06
  • 打赏
  • 举报
回复
现在就在用,出了有一阵了吧
老邓 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 do_fork 的回复:]
那些看上去一团麻的宏搞出来的东西,不知道有什么工具能索引到。
[/Quote]
在这点上,Eclise CDT的优势就出来了。
都可以搞定!

Eclipse CDT是我用过的免费开源IDE里,智能提示最强大的!
如果VS不搭档Visual AssistX的话,都敌不过Eclipse CDT的。
缺点当然也很明显:速度慢些。
do_fork 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 loaden 的回复:]
gvim72 for windows 的最大劣势是ctags + cscope的在针对VC的头文件时功能太弱。
否则,我也不会选择Eclipse CDT了。
不过,仍然感谢楼主分享!
[/Quote]

cscope for windows有很多问题,ctags倒是不错.
两个都有搞不定的时候,互补的用最好了,有时还是得祭出grep大刀,
特别是用##拼凑起来的名字,往往索引不到,
那些看上去一团麻的宏搞出来的东西,不知道有什么工具能索引到。
gbb21 2009-12-06
  • 打赏
  • 举报
回复
I do think the "DOS" terminal VIM is very useful. ;0
老邓 2009-12-06
  • 打赏
  • 举报
回复
呵呵,终于知道楼主的大号是谁了?
Vim
老邓 2009-12-06
  • 打赏
  • 举报
回复
gvim72 for windows 的最大劣势是ctags + cscope的在针对VC的头文件时功能太弱。
否则,我也不会选择Eclipse CDT了。
不过,仍然感谢楼主分享!
老邓 2009-12-06
  • 打赏
  • 举报
回复
好啊。我也做过绿色版:CSDN上有下载。
do_fork 2009-12-06
  • 打赏
  • 举报
回复
我喜欢vim的vcscommand插件,
一个插件搞定 vcs,svn,git,bzr,hg,svk 6个版本控制工具,
通过统一的方式使用,感觉不到版本控制软件的差别,
有差别无法通过统一方式实现的功能,又可以使用软件相关的命令
老邓 2009-12-06
  • 打赏
  • 举报
回复
还有一点忘了说:使用Subclipse的感觉真的太爽了!
Subversion与Eclipse的完美结合!
do_fork 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 loaden 的回复:]
引用 33 楼 do_fork 的回复:
怨念啊,300多M的源码,花了5个小时build index

牛人!
别Full Indexer了。
[/Quote]

是机器牛,新买的台式机,编译起来是飞快的
老邓 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 do_fork 的回复:]
怨念啊,300多M的源码,花了5个小时build index
[/Quote]
牛人!
别Full Indexer了。
do_fork 2009-12-06
  • 打赏
  • 举报
回复
怨念啊,300多M的源码,花了5个小时build index
do_fork 2009-12-06
  • 打赏
  • 举报
回复
出现错误了,不知道什么原因,是不是应该把Java的内存限制设置大一些呢?


F2显示的定义也不正确,大部分正确,部分不正确,特别是一个函数多个定义的时候。


有时一个名字有多个定义(通过宏实现),
怎么样才能显示出所有定义的列表,从中选择某个跳转过去呢

有时函数是通过函数指针进行调用的,
如何查找出这个函数指针所有被赋值的地方呢,
或者说怎么查找出这个函数的真实面目

vim里很方便,输入数字从候选列表中选一个即可,CDT里不知道该怎么做
老邓 2009-12-06
  • 打赏
  • 举报
回复
do_fork 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 fallening 的回复:]
把stl和cpp的高亮也放进去吧

[/Quote]

这个容易啊,
直接把要高亮的单词添加到syntax文件的 syn keyword cppType 后面
或者放到独立的文件里,需要的时候载入,网上有现成的,可以下一个下来,各种流行库的高亮都有

因为库很多,添加起来也不麻烦,所以没集成那些库的语法文件了
加载更多回复(20)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧