把VIM打造成一个真正的IDE(3)
好了,接着前面的两篇,我们今天来写《把VIM打造成一个真正的IDE》系列的终结篇。
我们之前已经让在VIM下看代码变得方便与简单,现在我们来让用Vim写代码也一样方便~看完本篇之后,你就可以完全抛弃sourceinsight之类的工具啦~
3)omnicppcomplete.vim 实现写C/C++语言时自动补全 下载插件
惯例,先截图:
其实使用很简单,下载 omnicppcomplete
然后按照说明将插件安装到vimfiles下面,目录结构如下:
after\ftplugin\cpp.vim
after\ftplugin\c.vim
autoload\omni\common\debug.vim
\utils.vim
autoload\omni\cpp\complete.vim
\includes.vim
\items.vim
\maycomplete.vim
\namespaces.vim
\settings.vim
\tokenizer.vim
\utils.vim
doc\omnicppcomplete.txt然后需要生成tags,哈哈,记得我们之前用F12映射的命令吧(把Vim打造成真正的IDE(2)),按下F12然后去享受吧~~
顺便说一下:omnicppcomplete会打开一个预览窗口来提示变量定义,如果不想要看到详细的信息的话,在vimrc中这样配置:
1 | set completeopt=menu |
4)NERD_commenter.vim 注释插件 下载插件
也是程序员非常实用的一款插件,支持各种语言的补全,只要你能想到的,放心他绝对注释的了,而且还支持单行注释,批量注释,等各种命令映射,在这里,我把最常用的键映射在vimrc中配置了一下。
1 2 | "对NERD_commenter的设置 let NERDShutUp=1 |
这样的话,在光标所在行上,按下一次ctrl+h是注释,再按下一次是取消注释。
而其内建的指令,cm是多行注释,类似C++的/**/,,cu是取消注释。
5)DoxygenToolkit.vim 由注释生成文档,并且能够快速生成函数标准注释 下载地址
这个插件使得vim能够生成标准的函数注释,如图:
1 2 3 4 5 6 7 8 9 | map fg : Dox<cr> let g:DoxygenToolkit_authorName="dantezhu" let g:DoxygenToolkit_licenseTag="My own license\<enter>" let g:DoxygenToolkit_undocTag="DOXIGEN_SKIP_BLOCK" let g:DoxygenToolkit_briefTag_pre = "@brief\t" let g:DoxygenToolkit_paramTag_pre = "@param\t" let g:DoxygenToolkit_returnTag = "@return\t" let g:DoxygenToolkit_briefTag_funcName = "no" let g:DoxygenToolkit_maxFunctionProtoLines = 30 |
读者可以需要将 DoxygenToolkit_authorName设置成为自己的名字,OK,这样标准格式的代码注释就出来啦。
5)a.vim .cpp和.h文件快速切换 下载地址
把下载的a.vim放到plugin下,不需要配置。
直接可以:A,打开.cpp和.h对应的文件,:AV,打开.cpp和.h对应的文件,并且分屏,截图如下:
OK,如果你按照我的说明将vim配置了下来,那么你的vim应该已经是一个超级强悍的IDE啦,快去写写代码试试吧,是不是和之前很是不同了啊,哈哈。
版权所有,转载请注明出处。http://www.vimer.cn
原创文章,版权所有。转载请注明:转载自Vimer的程序世界 [ http://www.vimer.cn ]
本文链接地址: http://www.vimer.cn/?p=150



3篇文章都看完了,但还是有些问题,showfunc.vim插件完全没有效果,omnicppcomplete.vim插件也有问题,提示” — 全能补全 (^O^N^P) 找不到模式”,a.vim插件,使用”:AV”命令时新窗口出现在左侧.
只有注释插件能正常使用.
我在用户变量里是这么写的path=D:\ConsoleTools;D:\MinGW\bin;
ConsoleTools目录里有ctags.exe和cscope.exe
cscope是在http://sourceforge.net/projects/mslk/下载的.有3个文件(cscope.exe和regex2.dll和curses2.dll)
[回复]
Dante 回复:
十一月 3rd, 2009 at 10:59 下午
嗯啊,关于omnicppcomplete的问题应该是没有生成tags……一定要按照我给的那个命令生成啊,直接!ctags -R 生成的是没有用的。a.vim是默认在左侧分屏哦,好像有配置是可以改的,具体我没有去看,感觉应该够用了,你可以看一下它的官方介绍~ 环境变量应该配置的没有问题,按F12没有效果吗?
[回复]
你好
能晒晒你的vimrc吗?
[回复]
Dante 回复:
十一月 9th, 2009 at 7:31 下午
哇咔咔,当然啦,最近就打算写出来啦~~应该就这几天啦~嘿嘿
[回复]
在Vim里面编译和调试的功能啥时候介绍阿,还有svn等等,期待ing
[回复]
Dante 回复:
二月 5th, 2010 at 8:21 下午
哈哈,感谢支持啊,vim中编译调试已经有一篇文章哦:
http://www.vimer.cn/2009/10/11.html
关于调试和svn两个功能实际上我之前都有用过相关的插件,但是当时插件还不成熟,所以就没有再细究,这一点倒是提醒了我哦,我一定会安排时间梳理下这些相关功能滴~~ 嘿嘿
[回复]
你好,我是vim新手。我看到你的这篇文章,讲的
omnicppcomplete的插件,我下了插件,里面只有3个目录doc autoload after,没有你说的那个目录结构里的文件啊。
/////////////
after\ftplugin\cpp.vim
after\ftplugin\c.vim
autoload\omni\common\debug.vim
\utils.vim
autoload\omni\cpp\complete.vim
\includes.vim
\items.vim
\maycomplete.vim
\namespaces.vim
\settings.vim
\tokenizer.vim
\utils.vim
doc\omnicppcomplete.txt
//////////////
[回复]
iam070 回复:
四月 2nd, 2010 at 10:47 下午
我知道了,你这个没有正确缩进=.=
不过我的omnicppcomplete的插件依旧没有正常工作, 难道跟supertab插件有关?
[回复]
Dante 回复:
四月 2nd, 2010 at 11:19 下午
呃,没有尝试过supertab,我觉得c-x c-o挺好的……,你确定tags正确生成了吗?
[回复]
iam070 回复:
四月 3rd, 2010 at 8:02 上午
昨天晚上再弄了一下,弄好了,原先功能已经生效了的,但我没有意识到是oni—的作用=.=
对了,你在 打造 IDE(2)那篇文章里提供的 showfunc.vim 有点问题,怎么弄都不可以使用,最后下了原版的echofunc.vim 才可以的。
[回复]
iam070 回复:
四月 3rd, 2010 at 8:03 上午
还有 map fg ,这个fg到底是指那个功能键?
[回复]
Dante 回复:
四月 3rd, 2010 at 10:41 上午
汗,没法再嵌套了,fg就是普通模式下,按fg两个字母……
[回复]
我想自动补全c语言标准库函数,补全插件已经装好了,现在就是需要添加标准库函数的tags,不过我一直没弄好。
到include执行ctags -r *.*,把得到的tag,挪动到VIM目录下的tags/stdlib中,然后在_vimrc文件末尾添加 set tags+=/$VIM/tags/stdlib
不过这样不行。
不知道哪里错了,你有什么教程吗?
[回复]
iam070 回复:
四月 4th, 2010 at 8:27 下午
原先的步骤已经有错误,不过参照你的让C++支持STL自动补全,可以显示STL,但C语言标准库还是不行
[回复]
Dante 回复:
四月 4th, 2010 at 10:14 下午
呵呵,这个本来就是补全C++ STL库的,不知道C补全的具体意思是指?
[回复]
iam070 回复:
四月 5th, 2010 at 9:40 上午
我知道是你的那篇文章是针对C++STL的,不过我只使用c,所以想针对c语言的标准函数库做一个补全tag,结果没有成功,不知道为什么。
[回复]
问题出错在我原先给的include文件补全,所以没法生成正确的tags.
现在好了,哈。
对于自动补全,现在试验了几个插件,感觉
autocomplpop+code_complete不错,原先的supertab会跟code_complete冲突。。
可以看看这个链接http://hi.baidu.com/timeless/blog/item/cb4478f09a1563ca7931aa5d.html
现在还有几个问题,
1、跟code_complete的tab还是有冲突,我想把链接中设定的 按Tab键在补全菜单中选择 改为按SHIFT键,不知道为何貌似不存在,只有这样的。。
2、在插入模式下,如何快速的移动光标?比如到行首和行尾。是不是需要自己绑定,比如<c- 移动到行首
[回复]
omnicppcomplete.vim
只是复制文件就够了么?不用设置别的?我复制了文件。然后怎么使用?
NERD_commenter.vim
我放在$VIMRUNTIME\plugin 下了,vimrc也编辑了可是使用起来没效果……Ctrl + H无用 cm也不行
难道有其他设置么?
望博主答复~谢谢~
[回复]
MadPer 回复:
五月 28th, 2010 at 9:01 上午
NERD_commenter.vim的话,是不是要在vimrc里加上
“对NERD_commenter的设置
let NERDShutUp=1
“支持单行和多行的选择,//格式
map ,c
上面四行?博主有提到,是不是您忘了?
如果还是不行,不妨试试comments.vim 这款插件,直接复制到插件目录就行,ctrl+c是注释,ctrl+x是取消注释,支持多种文件,支持批量注释~
[回复]
Dante 回复:
五月 28th, 2010 at 10:01 上午
突然想起来,你是不是文件类型检查没有打开呢?
filetype plugin on
[回复]
ideepblue 回复:
五月 28th, 2010 at 3:43 下午
没开这个……单行注释解决了,可是多行注释cm不行……
[回复]
Dante 回复:
五月 28th, 2010 at 9:04 下午
呵呵,需要你打开的文件类型支持多行注释才行哦,比如C++,但是python的话就不支持的~~~
[回复]
ideepblue 回复:
五月 28th, 2010 at 11:02 下午
C不支持多行?
python不支持有点遗憾
[回复]
Dante 回复:
五月 29th, 2010 at 12:18 上午
C肯定支持呀……
你是不是没有输入对命令?
,cm
[回复]
ideepblue 回复:
五月 29th, 2010 at 7:26 下午
,cm 晕 我直接cm的…… 博主你应该加一下引号
[回复]
iMadper 回复:
五月 29th, 2010 at 11:25 上午
python不支持这个是python自己的问题…想多行注释python的话就ctrl + v,选种你要注释的那些行,然后shift+i,然后输入#,然后安两下esc…更简单的就是用comment.vim插件,直接在普通模式下,输入数字(你要注释的行数)然后ctrl+c,当然了,也可以选中你要注释的文字,然后再ctrl + c. 不过这个只不过是把那些语句都用单行注释给注释了罢了…不算是多行注释…不过用这个插件注释c的时候用的是多行注释的说~
[回复]
博主又有新问题了……
omnicppcomplete.vim这个
filetype plugin on
set nocp
也有写在vimrc中
omnicppcomplete压缩包中三个目录,放在~/.vim/ 下,放在 ~/.vim/vimfiles 都试过了 ^X^O的结果就是找不到模式
是说omnicppcomplete只能匹配 “.” 或者 “->” 或者 Class 的东西么?不能匹配函数?
[回复]
Dante 回复:
五月 29th, 2010 at 8:42 下午
呃,我也只匹配类内部的函数,单独的C函数的话,好像确实匹配不了。
[回复]
ideepblue 回复:
五月 29th, 2010 at 8:51 下午
有个问题很诡异 同一套配置文件vimrc 在win gvim下c++的public private protected关键词都能正常高亮
但是在linux vim下 只要public加了”:”冒号,高亮就消失了,win下没消失
何解?博主碰到过么?
[回复]
Dante 回复:
五月 29th, 2010 at 9:12 下午
呃,会这样吗?从来没有遇到过呢,是不是vim的版本不一样?
[回复]
ideepblue 回复:
五月 29th, 2010 at 9:14 下午
呃 我知道了 配色方案的问题……杯具
[回复]
能否再介绍一下怎么把gdb揉进去?
[回复]
Dante 回复:
六月 2nd, 2010 at 10:17 下午
嗯啊,因为自己一直没有用过集成gdb的需求,所以一直没有试过,已经好多朋友问过我这个问题了,还有集成svn操作,呵呵,我一定抽时间写一下~
[回复]
iMadper 回复:
六月 2nd, 2010 at 10:47 下午
有个vimgdb插件的,不过要在编译前加上个补丁.看你嫌不嫌麻烦了.
[回复]
Dante 回复:
六月 3rd, 2010 at 11:08 上午
呃,其实我真的觉得,用Conque Shell更简单一些……
[回复]
博主啊,,最近刚开始在Linux下用vim,有个很郁闷的问题想请教一下你哈、
关于那个set mapleader = “,”,我的vimrc是完全按照那位史上最牛的vimrc做的,为什么我这个 功能好像失效了。
就是在普通模式下按任何与有关的mapping都不行,例如e: e ~/.vimrc中,按“,e” 进入不了.vimrc,很郁闷啊。。。
博主有什么建议吗??
[回复]
Nelson 回复:
六月 20th, 2010 at 5:42 下午
补充一下刚才的帖子,
按任何与有关的mapping都不行,例如e: e ~/.vimrc中
[回复]
Nelson 回复:
六月 20th, 2010 at 5:43 下午
哇,,,为什么我写的“ ” 都不见了,,奇怪
[回复]
Nelson 回复:
六月 20th, 2010 at 6:41 下午
博主,我终于找到问题了,原来我装了两个VIM,我一直在修改的是另外一个VIM的vimrc,囧
[回复]
Dante 回复:
六月 20th, 2010 at 6:52 下午
呵呵,我出去刚回来……
找到问题就好啊,wordpress会自动转义”,是挺奇怪~~
[回复]
楼主你好,我想问一下在windows下用VIM能够断点运行么?能的话能否告之?谢谢了
[回复]
Dante 回复:
七月 19th, 2010 at 9:34 下午
呃,好像是有一个和gdb结合的插件,不过我没用过,可以goolge一下看看~~
[回复]
Lees 回复:
七月 20th, 2010 at 12:51 下午
哦,谢了,我去找找看
[回复]
三篇看完了 感觉没啥帮助啊。
vim能不能直接调用一个tcl文件,或者是do文件,或者批处理文件?
并且把cmd返回的信息显示出来?
[回复]
Dante 回复:
八月 14th, 2010 at 6:44 下午
呃,我遇到需要命令回显的情况都会直接在vim脚本中使用python(vim原生支持python脚本),用纯vim脚本调用命令还要抓取回显的数据还真没试过。
[回复]
Dante 回复:
八月 14th, 2010 at 6:44 下午
呃,没说完,python中用popen,呵呵
[回复]
请问omnicppcomplete能否对自定义的类在::后补全类成员,比如自定义Class A,然后在输入A::的时候补全A中的成员。我已经设了let OminiCpp_MayCompleteScope=1,对于STL中的类如string::均有补全提示,自定义的不行。
[回复]
Dante 回复:
十月 12th, 2010 at 9:49 下午
肯定可以啊,我一直是这样用啊,只要生成一下tags就可以了。
[回复]
渡水的疯子 回复:
十月 13th, 2010 at 9:31 下午
.和->都可以,但是在Myclass::后就是提示找不到模式
[回复]
Dante 回复:
十月 13th, 2010 at 10:22 下午
我试了一下没问题。
#include
#include
#include
#include
你忘记写static了吧
[回复]
渡水的疯子 回复:
十月 13th, 2010 at 10:44 下午
嗯!帮助文档中中漏看了这一项,默认是根据当前域决定补全那些内容,类定义外确实要static的,不过设了DisplayMode=1就搞定了,多谢指教!
[回复]
[...] 把VIM打造成一个真正的IDE(3) [...]
楼主你好:
安装了omnicppcomplete后,为什么不能自动弹出匹配窗口呢?命令窗口中提示“用户自定义补全(^U^N^P)找不到模式”,必须按下才能弹出匹配窗口。
[回复]
补充:
按下ctrl-x ctrl-o才能弹出匹配窗口,不自动弹出。
[回复]
Dante 回复:
十一月 27th, 2010 at 8:24 下午
其实我倒是觉得不自动弹出比较好哦,自动弹出的话会感觉比较卡。
如果要实时匹配的话,建议试一下NeoComplCache,对输入速度的影响比较小。不过即使这样我也不太喜欢自动匹配。。。
[回复]
patience 回复:
十二月 4th, 2010 at 4:16 下午
确实如此,现在设置好了自动弹出,感觉挺烦的~~~
[回复]
为什么我装了omnicppcomplete.vim后,出现如下错误:
处理 /home/king/.vim/plugin/after/ftplugin/c.vim 时发生错误:
第 2 行:
E117: 未定义的函数: omni#cpp#complete#Init
处理 /home/king/.vim/plugin/after/ftplugin/cpp.vim 时发生错误:
第 2 行:
E117: 未定义的函数: omni#cpp#complete#Init
处理 /home/king/.vim/plugin/autoload/omni/cpp/complete.vim 时发生错误:
第 12 行:
E117: 未定义的函数: omni#cpp#settings#Init
第 13 行:
E121: 未定义的变量: g:OmniCpp_ShowScopeInAbbr
E15: 无效的表达式: g:OmniCpp_ShowScopeInAbbr
第 14 行:
E121: 未定义的变量: g:OmniCpp_ShowPrototypeInAbbr
E15: 无效的表达式: g:OmniCpp_ShowPrototypeInAbbr
第 15 行:
E121: 未定义的变量: g:OmniCpp_ShowAccess
E15: 无效的表达式: g:OmniCpp_ShowAccess
请按 ENTER 或其它命令继续
望博主指点下,谢谢:)
[回复]
Dante 回复:
十一月 28th, 2010 at 8:17 下午
不可能呀?能说下操作系统,vim版本?
[回复]
zybest 回复:
十一月 28th, 2010 at 10:42 下午
ubuntu 10.10
vim 7.2.330
[回复]
Dante 回复:
十一月 28th, 2010 at 10:52 下午
。。7.2应该也没问题的,我之前一直在用。。
你是全部解压到.vim目录吗?不会少cp了文件吧?
[回复]
zybest 回复:
十二月 1st, 2010 at 8:26 下午
我是在.vim中解压的,应该没有吧,不过我想问下
after\ftplugin\cpp.vim
after\ftplugin\c.vim
autoload\omni\common\debug.vim
\utils.vim
autoload\omni\cpp\complete.vim
\includes.vim
\items.vim
\maycomplete.vim
\namespaces.vim
\settings.vim
\tokenizer.vim
\utils.vim
doc\omnicppcomplete.txt
这个目录里的.vim文件是要自己从网上下了放进去吗,我解压完omnicppcomplete后,每个目录里就已经有对应的vim了,但是都是只有几行简单的代码,我怀疑是不是这里我没弄明白
[回复]
博主请指教,在xp, vim73下:
配置了filetype plugin on
也按照你的配置做了:
let NERDShutUp=1
“支持单行和多行的选择,//格式
map ,c
但是NERD_Commenter仍旧完全不起作用,在visual模式里无法输入逗号这个命令,这是为什么呢?
[回复]
Dante 回复:
一月 5th, 2011 at 11:02 下午
不好意思,这个插件现在已经更新了。。不能这样映射了。。
你直接用,cc之类就可以进行注释了。
[回复]
blindsniper 回复:
一月 6th, 2011 at 10:48 上午
悲剧,原来是我没有设置let mapleader = “,”,所以逗号一直不起作用,谢谢啦
[回复]
Hi,您好,那个vim注释插件的快捷健需要如何映射的,我按照默认的配置,注释不起作用,请指教!
[回复]
Dante 回复:
一月 8th, 2011 at 9:33 下午
默认,cc就是可以用的,你尝试打开一个.c的文件试一下?
[回复]
想问问通过ssh链接主机的方式
代码提示能出现么?是不是必须得是GUI界面的才行啊?
[回复]
Dante 回复:
一月 25th, 2011 at 11:08 上午
可以,我一直是这样用的。
[回复]
只对于C/C++而言,omnicppcomplete插件与vim自带的new-omin-complete的区别大吗?
[回复]
Dante 回复:
三月 3rd, 2011 at 10:49 下午
new-omin-complete?
vim的万能补全是要自己写函数的吧?所以有了omnicppcomplete,我的理解是这样,不知道对不对。。
[回复]
照着本文使用ctags,发现用F12键来生成tags文件要等很久很久很久。后来才突然发现,我直接在家目录上按F12,于是,ctags要为整个家目录下所有文件生成tags,一个tags文件32M……
[回复]
依云 回复:
三月 13th, 2011 at 9:16 下午
不得不说,你很有耐心。。。。我不止一次没注意当前目录,等了几秒不耐烦了才发现不对,Ctrl-C!
[回复]
如果java的omnicomplete能像omnicppcomplete一样强大就好了
[回复]
Dante 回复:
三月 28th, 2011 at 9:36 上午
我记得大学学java的时候,用过一个windows下的插件,对java补全的支持很好,不过后来不用java,就都删掉了。。。我找找看还能想起啥名字不。。
[回复]
依云 回复:
三月 28th, 2011 at 1:32 下午
vjde 或者 javacomplete?
[回复]
Dante 回复:
三月 28th, 2011 at 1:47 下午
想起来啦,貌似是
Vim Intellisense
印象中对java的支持还不错。。
[回复]
[...] “把VIM打造成一个真正的IDE”系列贴,感觉不错:分为篇1、篇2、篇3 [...]
博主,我想问下我把omnicppcomplete装好后运行CTAGS后,那里只能自动弹出 struct的。像vector之类的都弹不出,是不是我装的不对呀~
[回复]
yjjlyyj 回复:
六月 6th, 2011 at 5:43 下午
可以了,看了博主另一篇文章~~
[回复]
你好,请教个问题?不知你的cscope功能用得怎样?我在使用时始终不是很顺手
[回复]
Dante 回复:
六月 26th, 2011 at 10:45 下午
你好,2年前是有用过的。
后台觉得很多功能上有缺陷,所以只是用ctags了。
如果需要查找调用方,就直接vimgrep了。。
[回复]
感谢你的答复,确如你所说,我在使用时,也遭遇了很多不便,ctags倒是不错,能自动更新,不过毕竟功能有限,用vimgrep代替csope查找函数引用貌似不能实现准确搜索吧?你是直接把函数名当作简单的字符串来处理的吗
[回复]
fanhe 回复:
六月 29th, 2011 at 10:16 上午
cscope 对c++的支持不怎么样, 我一般用cscope直接搜索符号的.
[回复]
Dante 回复:
六月 29th, 2011 at 7:13 下午
嗯……搜索的时候实在不行就用上正则…,基本还是够用的。
[回复]
IDE, 我写了一个, 现在刚好能用, 暂时支持 Linux, 后续慢慢完善功能啥的. http://www.vim.org/scripts/script.php?script_id=3647
[回复]
Dante 回复:
六月 29th, 2011 at 7:12 下午
不错~~加油!
[回复]
omnicppcomplete目录下的.vim不知道往哪丢, 是全部丢:usr/share/vim/vim72/目录下与之目录名相同的目录, 还是.vim文件全丢usr/share/vim/vim72/plugin下啊, 搞晕了…不过按F12当前文件目录下有tags生成…?!先谢了, 大侠…
[回复]
Dante 回复:
八月 19th, 2011 at 12:16 上午
.vim相当于windows下的vimfiles哈。这样应该就能理解了吧?
[回复]
小杨 回复:
八月 23rd, 2011 at 1:29 上午
用的是ubuntu, 那ominicppcomplete下的目录放:
“/home/user/.vim/“, 这样对吧….?!
不过这样放了以后, 没看到效果啊…TnT
[回复]
为什么在gvim下打开某目录下的文件时, 没有路径自动补全呢?!
例如要找开:/home/username/index.cpp
在gvim下:
/home/username/inde(此时按Tab, 目录下以inde前辍开头的文件只有index.cpp), 没有补全, 什么原因啊..?!
[回复]
Dante 回复:
八月 19th, 2011 at 12:05 上午
使用 :e xxx 吗?
[回复]
小杨 回复:
八月 23rd, 2011 at 1:31 上午
呵呵,前加e:/home/…这样就可以了, 还是经验不够哇…^^
[回复]
HI,VIMER,最近又在弄VIM,看了你的VIM打造IDE系列,大部分功能都做出来了,不过现在有个缺陷, 就是“自动补全功能”没全部弄好。 我现在可以自动提示当前文档中定义过的字符串或者函数,但是我想加上更多的自动提示, 例如ASCII C中的东西,就比如我键入prin时,能够提示出printf这样的功能,我用ctags在VC的include 目录下生成了tags文件,拷贝到了vimfiles下的tags目录,并且在vim配置文件中添加了这段: set tags+=D:\Program\Vim\tags\c_tag,但依然无法提示。 另外,我将WDK的头文件也生成了tags文件(28M貌似有点太大),同样的,加了这个配置:set tags+=D:\Program\Vim\tags\wdktags,比如我键入Rtl时,必须按Ctrl+P,才会提示所有包含这个关键字的函数,却不能自动提示。但同时也表明了我某些地方已经配置对了是吗? 我按照你配置的F12快捷键生成,貌似生成的是当前文档的tags文件么?那么这样的话,岂不是每写一会就要按F12生成一下么?而且,直接在项目的目录下生成这玩意儿,岂不是在源文件中多了几个对非VIM用户来说毫无用处的文件么,可否将这些文件归类呢? 问题有点多,麻烦VIMER了。。[回复]
Dante 回复:
九月 15th, 2011 at 9:29 上午
先说一下F12的问题,vim生成tags一般是为那些常用不变的库来用的。。如果想要实时生成,可以做一个定时器,cronttab就可以解决。
对于补全这里,看一下这篇文章:
http://www.vimer.cn/?p=768
[回复]
你好,请教个问题
公司用的是pro*c的程序,扩展名是pc文件,使用下面方法将pc文件映射为了esqlc类型的文件
autocmd BufEnter *.pc set filetype=esqlc
我修改了taglist.vim和生成tags的配置,确实可以生成配置和taglist了,但是在使用自动补全插件的时候,如果无法找到成员,根据网上搜到的结果,增加了下面这一句
autocmd FileType esqlc set omnifunc=ccomplete#Complete
但是似乎还是没有效果
但是.c文件可以正常识别和查找到结构体成员
[回复]
noark9 回复:
九月 14th, 2011 at 9:06 上午
补充一点,再试了下,发现使用映射的F12第一次生成tags文件后,可以正确找到结构体的成员,但是关了vi再开,就找不到了
[回复]
Dante 回复:
九月 15th, 2011 at 9:25 上午
pro*c补全没有研究过,我觉得你还不如就直接 setf c 简单些。
关了vi再开找不到,你确定是在统一目录打开的文件吗?或者手工设置:
set tags+=xxx/tags
[回复]
noark9 回复:
九月 16th, 2011 at 9:10 上午
设置过tags了,似乎用可以把所有的符号搜索出来,就失败了
设置为c类型确实补全什么的都有了,但是有的关键字是esqlc里面有的,这样语法着色就没了
额,虽然想过改c的语法着色的文件,但是,觉得这种不是比较完美的解决方法
[回复]
关于autochdir和pwd的问题:
当直接点击位于e:\\homework\\hell\test.cpp用Vim打开时,用pwd命令显示的是目录e:\\homework\\hell\,没有问题。但是。。当我直接点击快速启动栏运行vim,输入:e e:\\homework\hell\test.cpp后在接着输入pwd检查当前工作目录是竟然现实的只是E:\\,
(_vimrc中已经有set autochdir,filetype indent plugin on等设置),实在搞不清楚,如果有时间的话,希望博主可以帮忙,谢谢
[回复]
啊,终于解决了!!!原来需要把”e:\\”改成”e:\”,Vim才 会认为该文件是从文件管理器启动,并把当前目录(可用
:lcd 命令查看)切换到文件所在目录
[回复]
Dante 回复:
九月 22nd, 2011 at 12:21 上午
解决了就好呀~
其实可以尝试一下用/,即使在windows下,vim也会认为可用的~~
[回复]
关于自动补全的,tags文件在哪里生成?写完类之后生成吗,我生成了,但是还是找不到模式。
[回复]
Dante 回复:
九月 27th, 2011 at 9:52 上午
一般是生成在当前目录。你看一下是否有tags文件。
[回复]
松暮囧 回复:
九月 27th, 2011 at 7:22 下午
谢谢,已经解决了
[回复]
你好,我想实现LUA语言的自动补全功能
请问能用你说的方法实现吗?
又能生成LUA语言tags的工具吗?
仅仅做代码补全的话,Cscope还是必须的吗?
望解答下,多谢!!
[回复]
LZ问下,那个omnicppcomplete安装是怎么装的额,哪些文件放在哪些目录下,木有看太明白的说。。
[回复]
博主,你好。你的文中写到“然后需要生成tags,哈哈,记得我们之前用F12映射的命令吧(把Vim打造成真正的IDE(2))”。可是我的(把Vim打造成真正的IED2)中并没有看到介绍F12映射的命令。所以请问如何生成tags
[回复]
Dante 回复:
十一月 16th, 2011 at 9:42 上午
嗯?就是这一段呀:
首先确认安装了ctags和cscope,并且确认这两个可执行程序所在的目录已经放进环境变量里面。(必须做,否则后边都无法操作)
在vimrc中配置如下:
[回复]
fcb 回复:
十一月 16th, 2011 at 12:19 下午
哦,看到了,谢谢!
[回复]
hi,关于a.vim的跳转,博主有没有遇到过这种情况:
src/A.cpp
inc/A.h
——-这样OK,但是
src/dir/A.cpp
inc/dir/A.h
多了一层(或者若干层)目录,这样就切不过去了(表现为跳转到一个空文件)
[回复]
Dante 回复:
十一月 25th, 2011 at 12:20 上午
嗯,多了一层之后确实就不行了。
这个恐怕只能通过改代码解决了。
[回复]
请问是在omni的那些*.vim里面吗?
[回复]
Likecer 回复:
一月 29th, 2012 at 1:30 下午
说错了~应该是:
请问是在omni的那些*.vim里面吗?
homepath是指的用户文件夹吧,还是VIm安装目录?
[回复]
Dante 回复:
一月 29th, 2012 at 11:57 下午
呃,我不太明白你的意思。。
你说$HOME 吗?
[回复]
Likecer 回复:
一月 30th, 2012 at 1:49 下午
《F12》这个发不上去……
请问是在omni的那些*.vim文件里面《F12》生成Tags吗?
还有就是%HOMEPATH%是指用户文件夹吧
谢谢了
[回复]
Dante 回复:
一月 30th, 2012 at 9:21 下午
tags是为源代码文件生成哈,比如cpp文件
至于homepath我有用到这个变量吗?
[回复]
Likecer 回复:
二月 2nd, 2012 at 1:53 下午
但是请问,我安装了ctags,设置好了path环境变量指向exe,cspose也是,但是在*.vim里面,《F12》一下木有反应呢?
[回复]
Dante 回复:
二月 3rd, 2012 at 3:32 下午
呃,当前目录下得有源码文件才行。。
[回复]
你好,多项目引用时,我在tags文件中已经看到了其他项目的函数,可是在我自己的项目中却没有办法自动补全该函数。
请求帮助,谢谢
[回复]
Dante 回复:
二月 2nd, 2012 at 9:48 上午
嗯?如果命令和我写的一样的话,那就不知道是啥问题了。。并没有深入研究过tags的格式。。
[回复]
一个类,两文件,一头一实现,怎么跳到实现文件里包含的其他头呢…?!
[回复]
Dante 回复:
二月 29th, 2012 at 7:06 下午
:ts 可以选择
[回复]
小杨 回复:
三月 1st, 2012 at 1:04 上午
可选择的都是当前目录及子目录下的匹配的文件列表.
如果是系统下的头就跳不过去了…像/usr/local/include下的…TnT
[回复]
[...] 把VIM打造成一个真正的IDE(3) [...]
[...] [1] 把VIM打造成一个真正的IDE(1) [2] 把VIM打造成一个真正的IDE(2) [3] 把VIM打造成一个真正的IDE(3). [4] Vim的快速注释插件NerdCommenter 此条目由 fumin 发表在 Linux [...]