自动补全神器 YouCompleteMe 在 linux c 和 linux kernel 开发上的使用

2014-09-10 22:56:10 +08:00
 pydog
如题,折腾了几个小时,总算在服务器的上编译安装上了神器,试用了下,没有惊喜!
linux C 开发不能自动补全,更别说linux kernel,是配置文件设置有问题吗?有没有成功用上在linux C 和 linux kernel开发的。
17871 次点击
所在节点    Vim
28 条回复
pydog
2014-09-11 16:58:14 +08:00
@whatot
难道是我的插件影响了吗?我的还是很慢
├── ag.vim
├── ctrlp.vim
├── ctrlsf.vim
├── fencview.vim
├── Marks-Browser
├── mark.vim
├── nerdcommenter
├── nerdtree.vim
├── powerline.vim
├── ShowMarks
├── srcexpl.vim
├── tabular
├── TagHighlight
├── taglist.vim
├── Trinity.vim
├── vim-colors-solarized
├── vim-fugitive
├── vimwiki
└── YouCompleteMe
whatot
2014-09-11 17:44:35 +08:00
@pydog 使用gvim --startuptime 'time.txt' 或者 vim --startuptime 'time.txt'生成详细启动信息,查看到底在哪个步骤耗时过多。
pydog
2014-09-11 19:05:28 +08:00
@whatot
thanks,YouCompleteMe启动用了36.626501s 。。。 要命
pydog
2014-09-11 23:19:01 +08:00
为什么打开需要这么长时间,我的工程有uboot + kernel + app,差不多就两个内核的代码量 。。。
pydog
2014-09-16 23:27:27 +08:00
@whatot
@ChiangDi
@chengdujin
@banbanchs
@tonyluj

最近有时间就折腾,发现是配置文件的问题,YCM打开文件的时候编译出错导致的,不知道YCM是怎么搜索头文件的,比如linux内核根目录下的include/目录下有linux,asm-generic等目录,目录下还有子目录,YCM的配置文件是只要写include目录,还是包括子目录都要写在flag表中,thank you all!
TL
2014-09-26 14:45:16 +08:00
@ChiangDi
@whatot
@pydog
@banbanchs

不想自己写配置了,实在受不了ycm的配置了,每个工程目录都要手写一次,扛不住了。于是有了ycm_conf_add
其实,就是把代码中,有源文件或头文件的目录取出,自动加入ycm配置中,具体见地址:

https://github.com/tlhc/SMK/tree/master/ycm_conf_add

使用简单。根据自己情况修改。(ps:python 初学,代码烂,各位见谅)
whatot
2014-09-26 16:13:27 +08:00
@TL ycm_extra_conf.py配置的重点在于flag段中添加的编译参数与头文件路径,这个办法并没有解决编译参数的问题。
另外添加所有有源文件或头文件的目录,并没有恰当的解决头文件包含的问题,只是提供了所有的可能目录,可能反而减慢补全速度。
并且在一般项目中include的目录应该是非常少的,你应该更加深入地精确理解项目的编译过程,而不是盲目地添加目录。
TL
2014-09-26 17:13:02 +08:00
@whatot 其实,我是觉得,针对ycm,编译参数的设置,由母版提供就行,在ycm设置通用的参数就行,因为ycm只做补全就行了. 毕竟,项目的编译绝不依赖ycm,它只起到补全的作用。所以,ycm的扩充没必要做的那么细致,存在错误也是可以的: 比如不该包含的目录,ycm配置文件中有说明,包含多余的目录不会产生什么影响)至于补全速度,我觉得挺快了。这个小脚本,只是为了解决每次手动配置ycm的问题。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/132788

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX