V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jerommix
V2EX  ›  Vim

Android系统级开发者, 喜欢vim, 苦于代码量巨大, 阅读源码和编写不是很方便, 请教大家有什么好的解决方案么?

  •  
  •   jerommix · 2013-03-15 09:42:25 +08:00 · 15743 次点击
    这是一个创建于 4301 天前的主题,其中的信息可能已经有所发展或是发生改变。
    32 条回复    2017-11-28 13:07:12 +08:00
    batfree
        1
    batfree  
       2013-03-15 15:47:11 +08:00
    我也是做android系统开发的,一般配合openGrok来开发。读代码的时间大于写代码的时间。
    jerommix
        2
    jerommix  
    OP
       2013-03-15 16:29:26 +08:00
    @batfree 你的解决方案呢.
    54dev
        3
    54dev  
       2013-03-15 16:31:03 +08:00
    再写一段 时间就会 IDE了
    batfree
        4
    batfree  
       2013-03-15 16:36:39 +08:00
    在opengrok中查看代码,然后在vim里面修改。 基本上是这样。 看opengrok网站说有vim的插件,不过我还没有用过。
    RelativeLayout
        5
    RelativeLayout  
       2013-03-15 16:39:45 +08:00
    RelativeLayout
        6
    RelativeLayout  
       2013-03-15 16:40:08 +08:00
    kidfolk
        7
    kidfolk  
       2013-03-15 17:13:02 +08:00
    应用开发者想做framework开发需要怎么入门
    sumu
        8
    sumu  
       2013-03-16 09:18:59 +08:00
    工作环境觉得ide的选择。最近一年多,我要跟多个代码库打交道 [git+svn] ,多套开发环境 [3套] ,多台硬件设备 [本地有pc*2、mac os*2] 。为提升效率,我走了很多弯路。当前的解决方案:所有环境ssh打通,通过securecrt登录。ide是vim,vim配置taglist+ctags+winmanager插件,解决了ide的问题,供你参考。过程是艰难的,大概用了3天时间来配置各种插件和适应。偶尔用用vim与仅使用差异是巨大的,不过现在已经过去快一年了,感觉很值得,对效率帮助很大
    jerommix
        9
    jerommix  
    OP
       2013-03-16 09:58:08 +08:00
    @batfree 这个有意思,回头试一下。

    @54dev 按google的说法,framework层的开发还是用eclipse


    @RelativeLayout 这个我看过,我经常在ssh的终端下工作,所以还是借助vi来实现,而且UI太丑了。


    @sumu cscope+ctags+global都试过,说实话,跳转和搜索加上代码补全,真的不及source insight,我在想如Linus那些大神是怎么做内核开发的。
    yangxin0
        10
    yangxin0  
       2013-03-16 10:36:15 +08:00   ❤️ 1
    @jerommix linus大神对内核里面的数据结构烂熟于心了,不需要来回跳转。遇到不熟悉的直接cat + grep搞定。我们需要跳转有两种可能1. 我们阅读人家的代码, 这个对于大神来说太easy了, 他们见过很多数据结构和设计模式,所以来回跳转对他们来说是多余的。 2.自己的代码记不住了, 这一点还是提升自己的内功把。
    yangxin0
        11
    yangxin0  
       2013-03-16 10:38:29 +08:00
    @jerommix 开源界的大神可以很轻松的把scope 移植到vim或者emacs里面,再加一个符号管理, 和buffer管理。 可见他们不需要这样的东西。还觉得麻烦。
    jerommix
        12
    jerommix  
    OP
       2013-03-16 10:58:23 +08:00
    @yangxin0 感谢回复,改变了我的一些想法。
    yuelang85
        13
    yuelang85  
       2013-03-16 12:40:13 +08:00
    不知道java是什么样子,我写python,代码层级很分明,模块名字也尽可能清晰。

    一般vim分三列,加上双屏,如果需要看代码,就在小屏幕上sublime直接打开。

    vim中不用tags,不用wm,打开文件直接敲文件名。

    由于是做游戏,所以文件比较多,一般都是几百个文件。。。。
    zhonghua
        14
    zhonghua  
       2013-03-16 13:47:40 +08:00
    @yuelang85 想请教一下,没有需求要查某个关键词么?如果不用tags和cscope的话
    shaobin0604
        15
    shaobin0604  
       2013-03-16 14:02:48 +08:00
    wine + source insight
    xdeng
        16
    xdeng  
       2013-03-16 14:08:33 +08:00
    Source Insight 3.5
    xdeng
        17
    xdeng  
       2013-03-16 14:09:28 +08:00
    Source Insight 3.5 用了你就知道
    yava555
        18
    yava555  
       2013-03-16 14:11:39 +08:00
    windows下用Source Insight,Mac下面 Sublime Text 2
    fengqve
        19
    fengqve  
       2013-03-16 15:41:02 +08:00
    目前我使用的是 Eclipse + Vrapper

    有一点苦恼的是,Vrapper的撤销有时候会撤销多步。
    yuelang85
        20
    yuelang85  
       2013-03-16 17:19:01 +08:00
    @zhonghua 有时候确实有这种情况。比较少见。如果遇到,直接grep解决。

    比较少见的原因是,代码层次非常清晰,一个关键词(结合上下文)往往只会在一层代码层出现,而出现的文件也比较有限,基本都能记住在哪里。
    peizh2006
        21
    peizh2006  
       2013-03-16 21:04:23 +08:00   ❤️ 3
    同样是Android系统开发,大概讲下我的工作环境配置:
    编译和开发都是ssh到服务器,服务器保证了编译速度,byobu+tmux保证了每次ssh到服务器上都保留上次的session和配置,不论从公司或家里的哪台电脑哪种系统;如果服务器关机,Teamocil可以帮我瞬间恢复开发环境,包括envsetup;
    编译后的image目录直接sshfs mount到本地,可通过fastboot刷机;
    编辑器用vim(配置了byobu和vim后,一点也不丑),除了楼上说的taglist、ctags这些基本插件,查关键词用Ack。
    因为我公司的Android平台很多,4.x、2.x,甚至还有1.x上的维护。我上面讲的这种开发模式的开发速度目测可以甩出在自己本地电脑上用eclipse等工具开发的同事N条街。
    不过上面的配置开发快,但vim读代码速度确实不如Source Insight,但是Source Insight收费而且还不跨平台所以一直没用。
    LS有提到OpenGrok,感谢,回头研究下……
    jerommix
        22
    jerommix  
    OP
       2013-03-16 21:32:26 +08:00   ❤️ 1
    @yuelang85 android估计得几十万个文件,各种工程。另外 推荐你一个plugin叫ctrlp,你会爱上她的。

    @zhonghua 轻量的搜索可以用一个叫ack的plugin

    @shaobin0604
    @xdeng
    @yava555
    好多同事这么干,包括做modem的,我的怨念是好好的一个android干嘛要用盗版的wine的win系软件呢。。。


    @yava555 sublime做前端还行,android这种几十万文件级的不适合啊。
    @fengqve 还是经常ssh到服务器编译修改代码,不习惯太重的ide

    @yuelang85 试试ack吧 轻量一些。
    jerommix
        23
    jerommix  
    OP
       2013-03-16 21:36:30 +08:00
    @peizh2006 感谢分享。由于公司还在用win系的office办公,所以离不开win环境,现在我的方案是putty+tmux+vim和一堆plugin,改自己熟悉的代码还好,否则不是很方便。
    快速编译你有什么好的分享么?Android编译那叫一个漫长啊。。。
    yuelang85
        24
    yuelang85  
       2013-03-16 21:39:13 +08:00
    @jerommix 几十万个文件?同一个项目?不包括框架代码?
    jerommix
        25
    jerommix  
    OP
       2013-03-16 21:43:56 +08:00
    @yuelang85 是整个Android源码啊,虽说不可能同时开发所有,但系统级开发,有的时候要改驱动(kernel)有的时候要改框架层。。。so。。。
    yuelang85
        26
    yuelang85  
       2013-03-16 22:23:30 +08:00
    @jerommix 那要这么论。就没法说了。。。。

    我倒是经常看django和python的源码。不过估计比你这个容易。。。。
    jerommix
        27
    jerommix  
    OP
       2013-03-16 23:25:59 +08:00
    @yuelang85 一个Activity.java就上万行代码,所以纠结了好久,其实也没什么好办法来解决。可能还是要调教一个好的IDE吧我想。
    ufo22940268
        28
    ufo22940268  
       2013-03-17 08:02:04 +08:00 via iPhone
    说下我的情况吧:
    两年framwork开发,第二年开始一直vim
    现在转做android app,依然vim
    以后还是vim

    我说的不是哪个更好,而是说一种可行性,毕竟到现在为止我还天天写代码。
    pright
        29
    pright  
       2013-03-17 15:06:45 +08:00
    现在完全依赖fuzzyfinder插件,以前用source insight用得最多的就是f7全局tag和C_o快速打开文件,这两个fuzzyfinder都能做到,所以平移过去没多大困难,就是看函数关联有点麻烦,cctree插件好像有问题,太大的工程读取cscope.out会失败。
    ic
        30
    ic  
       2013-03-28 21:04:58 +08:00
    codesearch 这个搜代码挺好用的,建立索引,搜的比较快。。https://code.google.com/p/codesearch/
    likaci
        31
    likaci  
       2017-04-27 10:15:05 +08:00
    @jerommix
    @batfree
    @peizh2006
    @ufo22940268
    抱歉打扰下各位老板,刚翻到这个帖子
    四年过去了,请教下各位现在用的什么工具?
    还是不做 Android 了? 😂
    jerommix
        32
    jerommix  
    OP
       2017-11-28 13:07:12 +08:00
    @likaci 已经不做好多年 ; )
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1102 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:57 · PVG 02:57 · LAX 10:57 · JFK 13:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.