Android系统级开发者, 喜欢vim, 苦于代码量巨大, 阅读源码和编写不是很方便, 请教大家有什么好的解决方案么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
jerommix
V2EX    Vim

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

  •  
  •   jerommix Mar 15, 2013 16518 views
    This topic created in 4794 days ago, the information mentioned may be changed or developed.
    32 replies    2017-11-28 13:07:12 +08:00
    batfree
        1
    batfree  
       Mar 15, 2013
    我也是做android系统开发的,一般配合openGrok来开发。读代码的时间大于写代码的时间。
    jerommix
        2
    jerommix  
    OP
       Mar 15, 2013
    @batfree 你的解决方案呢.
    54dev
        3
    54dev  
       Mar 15, 2013
    再写一段 时间就会 IDE了
    batfree
        4
    batfree  
       Mar 15, 2013
    在opengrok中查看代码,然后在vim里面修改。 基本上是这样。 看opengrok网站说有vim的插件,不过我还没有用过。
    RelativeLayout
        5
    RelativeLayout  
       Mar 15, 2013
    RelativeLayout
        6
    RelativeLayout  
       Mar 15, 2013
    kidfolk
        7
    kidfolk  
       Mar 15, 2013
    应用开发者想做framework开发需要怎么入门
    sumu
        8
    sumu  
       Mar 16, 2013
    工作环境觉得ide的选择。最近一年多,我要跟多个代码库打交道 [git+svn] ,多套开发环境 [3套] ,多台硬件设备 [本地有pc*2、mac os*2] 。为提升效率,我走了很多弯路。当前的解决方案:所有环境ssh打通,通过securecrt登录。ide是vim,vim配置taglist+ctags+winmanager插件,解决了ide的问题,供你参考。过程是艰难的,大概用了3天时间来配置各种插件和适应。偶尔用用vim与仅使用差异是巨大的,不过现在已经过去快一年了,感觉很值得,对效率帮助很大
    jerommix
        9
    jerommix  
    OP
       Mar 16, 2013
    @batfree 这个有意思,回头试一下。

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


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


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

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

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

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

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

    比较少见的原因是,代码层次非常清晰,一个关键词(结合上下文)往往只会在一层代码层出现,而出现的文件也比较有限,基本都能记住在哪里。
    peizh2006
        21
    peizh2006  
       Mar 16, 2013   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
       Mar 16, 2013   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
       Mar 16, 2013
    @peizh2006 感谢分享。由于公司还在用win系的office办公,所以离不开win环境,现在我的方案是putty+tmux+vim和一堆plugin,改自己熟悉的代码还好,否则不是很方便。
    快速编译你有什么好的分享么?Android编译那叫一个漫长啊。。。
    yuelang85
        24
    yuelang85  
       Mar 16, 2013
    @jerommix 几十万个文件?同一个项目?不包括框架代码?
    jerommix
        25
    jerommix  
    OP
       Mar 16, 2013
    @yuelang85 是整个Android源码啊,虽说不可能同时开发所有,但系统级开发,有的时候要改驱动(kernel)有的时候要改框架层。。。so。。。
    yuelang85
        26
    yuelang85  
       Mar 16, 2013
    @jerommix 那要这么论。就没法说了。。。。

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

    我说的不是哪个更好,而是说一种可行性,毕竟到现在为止我还天天写代码。
    pright
        29
    pright  
       Mar 17, 2013
    现在完全依赖fuzzyfinder插件,以前用source insight用得最多的就是f7全局tag和C_o快速打开文件,这两个fuzzyfinder都能做到,所以平移过去没多大困难,就是看函数关联有点麻烦,cctree插件好像有问题,太大的工程读取cscope.out会失败。
    ic
        30
    ic  
       Mar 28, 2013
    codesearch 这个搜代码挺好用的,建立索引,搜的比较快。。https://code.google.com/p/codesearch/
    likaci
        31
    likaci  
       Apr 27, 2017
    @jerommix
    @batfree
    @peizh2006
    @ufo22940268
    抱歉打扰下各位老板,刚翻到这个帖子
    四年过去了,请教下各位现在用的什么工具?
    还是不做 Android 了?
    jerommix
        32
    jerommix  
    OP
       Nov 28, 2017
    @likaci 已经不做好多年 ; )
    About     Help     Advertise     Blog     API     FAQ     Solana     2638 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 76ms UTC 11:56 PVG 19:56 LAX 04:56 JFK 07:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86