[IDE] 无图形Linux环境下的程序开发IDE: vicc 发布会 - 1
2015-12-31 17:16
931 查看
无图形Linux服务器环境下的IDE: vicc 发布会
Git Link: https://code.csdn.net/qq1624646454/vicc/tree/master
----------------------------------------------------------------------------------------------------------
为了方便在各种非图形化环境下的服务器上开发大型代码,采用VIM+CTAGS+CSCOPE取代Windows下的Source Insight。
Ctags和Cscope在使用前,跟Source Insight一样,需要解析源文件代码并生成符号关系数据库,即tags文件和cscope.out文件,以便提供直观函数跟踪,调用关系,快速查找等功能,但是Ctags和Cscope所需要的tags文件和cscope.out文件,生成的操作流程繁琐,使用起来难度较大,为了降低使用门槛,提高工具效率,以简捷方便使用为宗旨,将“ vim + ctags + cscope + taglist + mark + ... ” 按开发工作的需求进行定制并整合成一套IDE工具,以vim(vi),
ctags (c), cscope (c) 三个主要组件的首个特征字组合来命名为vicc。
特点:
VIM:
(1).重新定制vim的需求,使之强制支持cscope,multi_byte中文和动态支持其它的语言特性,比如 ruby, lua, python
(2).优化加载vimrc,plugin时路径,基于当前用户home路径,即 ~/.jllsystem/share/vim,而不是 /usr,避免了非root权限无法安装或正常使用vim
Ctags:
none.
Cscope:
优化了源文件搜索路径过短导致有些源文件无法解析(原来支持最大搜索路径250字节,目前优化为1024字节)
vicc:
采用bash-shell设计开发,是整套IDE的前端启动器,即vicc -t Sym 或vicc File,管理ctags和cscope的数据库文件
(即tags和cscope.out),为VIM启动时,传递tags和CSCOPE_DB环境变量给ctags和cscope使用,以加载对应的tags
和cscope.out符号关系数据库。
操作如下:(与Source Insight类似的操作管理代码)
进行某个大型代码的目录 -> 执行本程序:
-> 新建工程
-> 新建项目(选择开发语言)
->自动化生成tags和cscope.out并接受本程序的项目管控。
完成后,以后在该大型代码的任意子目录下打开源文件 ( vicc hello.c)或 ( vicc -t main ),都会自动加载tags和cscope.out...
最后,这一切就是为了更加方便使用 Vim + Ctags + Cscope...
----------------------------------------------------------------------------------------------------------
Version 目前发布的版本适用的OS:
Ubuntu 12.04.5 LTS 64bit
Debian 8.3 64bit
Ubuntu 14.04.4 LTS 64bit
注: intel 平台上所运行的64位Linux,一般可以使用的。
----------------------------------------------------------------------------------------------------------
How to retrieve " vicc ":
1.Copy the content of the ssh private key ( id_rsa ) as the follows:
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwKhONxlyhpScITU0vrFnWH/wMv6w4lLADmZOhsl+UVGnDrB9
83wiOJqA6ObodNiWT6DXL+hzg8QqLeqkqIWirrb+Yv0YJx/MoEX+KO2NGStNN42V
+8HTrIo+FRe3Wo1xF4Jm+luwbJbWfy/qyRyEp0QWaanwg1NHx4e9Cx6Jrb7i7zsG
Ma+EPbwCln72G5pju5M/bFUqNT/TXL+E39C0lFvOXNzccFBrSmdEl2g1Zip7hycp
DpK8RFmFkDqE33TSFIGuJT583A9uTRZ98jfvsdpdXl3VvcpO0SDThUp/eIDNwABr
Wq8hDWPilNFt8NaX0Hh5xdDYL8yuGs2Pdn7yHwIDAQABAoIBABdOROf1dB1DrP93
aEIJQ+84yt3gYZV/XSxgw+8aQOWlcwgb4aCqy5j9V8rU5Bn+eXB4jI+HFzJBcLjN
Qc4BHIT2Lh/bbiiNeDuLPAvHcOIyksy9m/8wm2Kr9oamr8+MfLnTVJHEtbrtJFWO
fmCFyqZRXkS6AhZg5LYGfZ/yucUCtMHHv1vTvpG3aiE94Rj3bvpQ0aI392ZlrqtH
7fZgLuoDRcWsgwL7gApUpZmcJStb+AwfIyvE99FdeEAyUEAwCnJIxcdt4ey0iwqm
Nsd//iNRH8A9rs4cK4CirzqSD63+z2Rzr2AP7C5SBYKqDd/hsFk5gljESrzpwfaR
J2hdB4ECgYEA46PKha7U0cGLMATv45ocFN5acLWT9BXPMRa69p2hmzBdnpozLrbo
bXDq0nf+wHtVd3Q3Yeup2BilKIEKmuxfOUjjxN5Tn9OGVGQf02CdJCJi+Nj8QChz
f1oGzeqth6vpHpwg7D+WvPmLDKZAO8pwJP4Vgh9D2Bc/dMoxTNunV/cCgYEA2KjO
wPoZpq8lVQBhRfMjo0eoiN46DiKiU7YtEpNbnltlyCQ8YpFp9elZ1R4QX8Ar9h8a
rsKMz9Eevb+KUCpbQnCVIEsw02RKViA0XByfhXKOzRk51URjKG6irh7Vd+0wsmSc
+8F6rPtdO4+EhUSjZ+DK9P5s2tuzO+M9APD6vRkCgYEAxtIP2KLSjkGU5+PoAcpg
LHnoU/jDuLQzupQ3x531wC2GFzhm664lYzD0Z88WWdde1m5S0NucBHnCBpZuRNGe
edIH3bKxJy8AbETm5x/DIARInUAnUYIDHn/q4X7PAWhMu8dxmeYQKg1qPSoXgCFX
wXeKIZRdFSd47PCMDqzqhBECgYBnzWDZdjnp8UoakocIQ3hUl1V41bfM4+0P3F11
4+HmWfXG0Q2ZUAALUJS4laHUrjahwb8/8XgTbSakVGuJAvIcP+JCyaOH9CnlX6KW
ayRGhF9Ehox90DkNuwv4Dk/KGHrXTXsk50rGK9w8WANu8jaz4zB59pfit5YE4Fdu
5wXKqQKBgDiTR5gV1OkYOXnxyiO1s3vve7DWHzwrhFkcJ/qY1yOlxScxHa0Q7Lni
0oze4/lQ/9Jr2JZFcE0+SfWa1EdBFAnwVX0//eqFNNBaPz3GbZ4r5NwYr+kHH/vK
eyHGtGQh0XNVfafkHIWBuCAihK4e2TwX+xUDuzxOiHvH8Q7rhtg4
-----END RSA PRIVATE KEY-----
2.Paste and Store the content into id_rsa in " ~/.ssh/ "
jielong.lin@TpvServer:~$ mkdir -pv ~/.ssh
mkdir: created directory ‘.ssh’
jielong.lin@TpvServer:~$ vim ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwKhONxlyhpScITU0vrFnWH/wMv6w4lLADmZOhsl+UVGnDrB9
83wiOJqA6ObodNiWT6DXL+hzg8QqLeqkqIWirrb+Yv0YJx/MoEX+KO2NGStNN42V
+8HTrIo+FRe3Wo1xF4Jm+luwbJbWfy/qyRyEp0QWaanwg1NHx4e9Cx6Jrb7i7zsG
Ma+EPbwCln72G5pju5M/bFUqNT/TXL+E39C0lFvOXNzccFBrSmdEl2g1Zip7hycp
DpK8RFmFkDqE33TSFIGuJT583A9uTRZ98jfvsdpdXl3VvcpO0SDThUp/eIDNwABr
Wq8hDWPilNFt8NaX0Hh5xdDYL8yuGs2Pdn7yHwIDAQABAoIBABdOROf1dB1DrP93
aEIJQ+84yt3gYZV/XSxgw+8aQOWlcwgb4aCqy5j9V8rU5Bn+eXB4jI+HFzJBcLjN
Qc4BHIT2Lh/bbiiNeDuLPAvHcOIyksy9m/8wm2Kr9oamr8+MfLnTVJHEtbrtJFWO
fmCFyqZRXkS6AhZg5LYGfZ/yucUCtMHHv1vTvpG3aiE94Rj3bvpQ0aI392ZlrqtH
7fZgLuoDRcWsgwL7gApUpZmcJStb+AwfIyvE99FdeEAyUEAwCnJIxcdt4ey0iwqm
Nsd//iNRH8A9rs4cK4CirzqSD63+z2Rzr2AP7C5SBYKqDd/hsFk5gljESrzpwfaR
J2hdB4ECgYEA46PKha7U0cGLMATv45ocFN5acLWT9BXPMRa69p2hmzBdnpozLrbo
bXDq0nf+wHtVd3Q3Yeup2BilKIEKmuxfOUjjxN5Tn9OGVGQf02CdJCJi+Nj8QChz
f1oGzeqth6vpHpwg7D+WvPmLDKZAO8pwJP4Vgh9D2Bc/dMoxTNunV/cCgYEA2KjO
wPoZpq8lVQBhRfMjo0eoiN46DiKiU7YtEpNbnltlyCQ8YpFp9elZ1R4QX8Ar9h8a
rsKMz9Eevb+KUCpbQnCVIEsw02RKViA0XByfhXKOzRk51URjKG6irh7Vd+0wsmSc
+8F6rPtdO4+EhUSjZ+DK9P5s2tuzO+M9APD6vRkCgYEAxtIP2KLSjkGU5+PoAcpg
LHnoU/jDuLQzupQ3x531wC2GFzhm664lYzD0Z88WWdde1m5S0NucBHnCBpZuRNGe
edIH3bKxJy8AbETm5x/DIARInUAnUYIDHn/q4X7PAWhMu8dxmeYQKg1qPSoXgCFX
wXeKIZRdFSd47PCMDqzqhBECgYBnzWDZdjnp8UoakocIQ3hUl1V41bfM4+0P3F11
4+HmWfXG0Q2ZUAALUJS4laHUrjahwb8/8XgTbSakVGuJAvIcP+JCyaOH9CnlX6KW
ayRGhF9Ehox90DkNuwv4Dk/KGHrXTXsk50rGK9w8WANu8jaz4zB59pfit5YE4Fdu
5wXKqQKBgDiTR5gV1OkYOXnxyiO1s3vve7DWHzwrhFkcJ/qY1yOlxScxHa0Q7Lni
0oze4/lQ/9Jr2JZFcE0+SfWa1EdBFAnwVX0//eqFNNBaPz3GbZ4r5NwYr+kHH/vK
eyHGtGQh0XNVfafkHIWBuCAihK4e2TwX+xUDuzxOiHvH8Q7rhtg4
-----END RSA PRIVATE KEY-----
:wq
jielong.lin@TpvServer:~$ chmod 0500 ~/.ssh/id_rsa
3.Clone "vicc" git project by the followwing commands:
git clone git@code.csdn.net:qq1624646454/vicc.git
注: 如果你的系统没有装git工具,可以按如下命令进行安装:
aptitude show git
aptitude install git
aptitude install git-svn
aptitude install git-doc
aptitude install git-email
aptitude install git-gui
aptitude install gitk
aptitude install gitweb
完成后的源码树如下:
4.Install "vicc"
安装vicc,运行如下
d7c1
命令
注:建议使用最新的安装方法,比较简便,以参考
[IDE] 无图形Linux环境下的程序开发IDE: vicc发布会 - 2
jielong.lin@TpvServer:~$
cd ~/csdn_free/vicc
jielong.lin@TpvServer:~/csdn_free/vicc $ ./install.sh setup
这时安装程序会把jllsystem.tgz解压到 ~/ 目录下,而vicc,vim,ctags,cscope,tree,realpath等都是被放在 ~/.jllsystem/bin目录下的,与此同时,系统当中可能就会存在两个vim,它是如何优先使用 ~/.jllsystem/bin/vim ?
只要保证 系统环境变量 PATH中的内容是以 ~/.jllsystem/bin 开头即可,因此安装程序会将 PATH=~/.jllsystem/bin:$PATH写入到当前用户的~/.bashrc当中,而这个特殊的配置文件可以保证只需该用户登录,~/.bashrc就会生效。
验证 vicc -l 应当在安装vicc后先退出当前用户再用该用户的身份重新登录。
----------------------------------------------------
如何使用vicc开发和管控大型源码
----------------------------------------------------
实例:Android-frameworks
1.切换目录到目标源码根目录,比如 frameworks/
2.创建vicc的新工程
如果以这个目录为工程的根目录: (shell command 可以尽量用tab键自动补全),则输入 vicc -c
按如下图进行新建工程, 可以用 方向键或 j , k 键进行上下选择,按[enter]键进入下一步
输入新工程的名称,(注意不要与列表中的工程重名,重名会要求你重输入),这里没有已创建的工程列表,我可以不用担心重名,取个好认的工程名:AstaL_Frameworks
选择你会用到的编程语言(目前 只支持常用的如下几种),这个配置相当 于工程下的某一个项目(比如java项目 ),如果你想开发或审查java,c, c++代码,那就把这些语言都选择上(注:必要是大写,而且每次循环只选择一个,你要的都选择完成了,就输入q退出并进入下一步)
编程语言选择好后,就可以指定哪些目录下你要加入到这个工程的这个项目中,其原理是当你用 [enter] 或 [space] 键选中某个目录后,ctags和cscope会把这个目录下的源代码文件 (根据你配置的编程语言种类)收集起来并生成tags和cscope.out文件(这些文件干什么用的?给ctags和cscope用的,再不懂请百度吧)
这个配置界面的用法可以参考下图:(当然,由于frameworks工程下的实际目录可以超多,所以这个界面也支持分页,你需要到 >>>NextPage 或 <<<PrevPage
然后按[Enter]键进行切换页面.图中会看到选项的最右边有些有 +3 之类,这个表示这个目录下还有3个子目录可以进入,进入用方向键的Right,回来用Left,也可以用l或h)
...呵呵,这些功能花了我不少时间完成这个配置后,按 q 键进入下一步
接下来,你就不需要干什么了,显示的一些你配置的信息,以及在最下方可以看到一个很可爱的新建进度条(本来是没有的,因为之前我发现有些80G的源代码在创建时需要花掉很多时间等待整个黑屏,别人会以为系统挂住而干掉你的任务,无知是多么可怕呀,所以还是需要提供任务进度显示,仅仅是怕你会干掉"我的任务"而已)
OK,创建完成后,如果没有什么错误提示,就完退了...如下图:
接下来,我们可以查询下,在vicc管控范围中的所有项目,可以看到我们刚刚建立的项目 : AstaL_Frameworks / C_CPlusPlus_Java
3.使用vicc在新建的工程上开发或审查代码:
Source Insight也是基于所创建的工程上来管理代码的,vicc也是如此。 vicc不需要你亲自打开工程,只要你进入到有创建过工程的目录,比如刚刚创建的工程是在frameworks目录,那么只需要在frameworks目录的任何子目录,vicc都可以自动帮你打开工程,如果遇到基于这个目录创建多个工程,就会列举出所有有效工程让你选择。
怎么使用? 很简单,假如你要查找main函数,但不知道它在哪个文件(在这个frameworks目录或它的任意子目录下,直接跳到main函数的定义处)
出现如下图的项目选择,因为只有一个项目 (当然有时候我会为相同根目录的源代码 工程分别创建 Java项目,C&C++项目,因为真正在Review Code时,很少出现Java会直接 调用 C&C++,就算有也是Jni),直接 回车...
剩下的事情,就是Ctags和Cscope的使用了,假如选择11项再按[enter]键就跳转进入该项对应的源文件... ctags和cscope的使用不懂请自己另外学习。
OK.... 祝大家工作愉快 ~
============================
Date : 2016.September.1
Author: jielong_lin
Email: 1624646454@qq.com
or
493164984@qq.com
============================
展望:
后期计划 让vicc 支持鼠标操作,Ctags和Cscope函数调用枚举窗口更加容易定位到目标函数等;
=================================================
vicc的用法,以参考后篇: [IDE] 无图形Linux环境下的程序开发IDE: vicc发布会 - 2
相关文章推荐
- Linux socket 初步
- VIM编译器显示TAB和TAB转换为空格
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- 菜鸟说给菜鸟听之VIM--入门篇(1)
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程