大家在 Linux(命令行)上用什么写 c++? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
harry890829
V2EX    C

大家在 Linux(命令行)上用什么写 c++?

  •  
  •   harry890829 2015-08-19 14:04:01 +08:00 3277 次点击
    这是一个创建于 3718 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在是一直都在用 vim ,其他都挺好的,就是 vim 的函数跳转很蛋疼, ctags 和 cscope 都用了,但是感觉 cscope 在很多类都有同一个函数名的情况下,无法很好的定位,是我使用不当么?
    看到很多人也用 emacs ,不知道哪个好点,现在很多代码并不是我自己写的,经常需要用函数跳转,有时逼得我只能退到命令行下 grep ……

    第 1 条附言    2015-08-21 10:03:21 +08:00
    多谢各位的讨论,大家说的好多软件我都没有听说过,但是我都一一百度看了下介绍,但是好多前辈都没有看到重点啊……我只能在 shell 下使用,没有图形界面的……所以也是很蛋疼,我会先去研究 youcompleteme ,如果没达到预期的话,再挨个尝试各位命令行下的建议,再次感谢
    第 2 条附言    2015-08-25 09:58:32 +08:00
    youcompleteme 我弄好看了下,有个致命伤啊,还是想问下, vim 怎么查看函数的调用情况,难道我只能用 grep 么?现在用的是 cscope ,但是 cscope 有个蛋疼的地方,如果有文件变动,就要重新生成他的库,而且, cscope 很容易跑歪啊,不同类下的同名函数也过滤不出……大家还有别的解决方案么…… emacs 可以么? Linux 命令行啊…… shell 下啊……图形界面的就先等等(其实用图形界面的话,我就直接上 vs 了)……
    70 条回复    2015-08-25 10:19:41 +08:00
    rock_cloud
        1
    rock_cloud  
       2015-08-19 14:08:35 +08:00
    JetBrains Clion
    luoqeng
        2
    luoqeng  
       2015-08-19 14:11:22 +08:00
    Source Insight 3 看, vim 写。
    aszxqw
        3
    aszxqw  
       2015-08-19 14:13:10 +08:00
    纯 vim
    andyhuzhill
        4
    andyhuzhill  
       2015-08-19 14:17:53 +08:00
    Qt Creator
    focux
        5
    focux  
       2015-08-19 14:19:43 +08:00
    YouCompleteMe
    Nicksxs
        6
    Nicksxs  
       2015-08-19 14:27:03 +08:00
    @rock_cloud 打开个 PHP 源码就挂了的渣渣
    harry890829
        7
    harry890829  
    OP
       2015-08-19 14:27:20 +08:00
    @rock_cloud 这个确实是个好东西啊……我研究研究
    harry890829
        8
    harry890829  
    OP
       2015-08-19 14:27:48 +08:00
    @luoqeng 这……看的话我直接用 vs 不好了……
    harry890829
        9
    harry890829  
    OP
       2015-08-19 14:28:04 +08:00
    @aszxqw 这……大神啊……插件都不用的么……
    harry890829
        10
    harry890829  
    OP
       2015-08-19 14:28:30 +08:00
    @andyhuzhill qt creator 有命令行下的?
    harry890829
        11
    harry890829  
    OP
       2015-08-19 14:29:19 +08:00
    @focux 这个不是补全么……有没有跳转啊……
    harry890829
        12
    harry890829  
    OP
       2015-08-19 14:29:34 +08:00
    @Nicksxs 这个是语言不支持吧……
    Nicksxs
        13
    Nicksxs  
       2015-08-19 14:30:59 +08:00
    @harry890829 C 都不支持?
    lingxi27
        14
    lingxi27  
       2015-08-19 14:33:17 +08:00
    Qt Creator 的 fakevim 很好,如果你实在用不了桌面版,只能努力折腾插件了,试试 clang complete 或者 you complete me 吧
    harry890829
        15
    harry890829  
    OP
       2015-08-19 14:36:23 +08:00
    @Nicksxs 你不是开 php 源码么
    xhuuanniqege
        16
    xhuuanniqege  
       2015-08-19 14:37:47 +08:00 via Android
    @harry890829 有的
    harry890829
        17
    harry890829  
    OP
       2015-08-19 14:38:07 +08:00
    @lingxi27 倒也不是用不了桌面版,连上服务器写代码太麻烦了,我就装了个虚拟机跑轻量级 gentoo ,公司电脑不行啊,要是跑桌面版的话太操蛋了……那个你说的两个插件都是补全吧……我是想问函数跳转……
    harry890829
        18
    harry890829  
    OP
       2015-08-19 14:43:59 +08:00
    @xhuuanniqege 你好,你说的是 qt 有 shell 下的?因为我无法使用 Linux 桌面,所以只能用 shell , qt 支持么?如果支持的话,百度的关键字能给一下么,我刚才搜了搜,得到的全都是桌面版的
    Nicksxs
        19
    Nicksxs  
       2015-08-19 14:49:11 +08:00
    @harry890829 PHP 源码不是用 C 写的么, https://github.com/php/php-src
    F32
        20
    F32  
       2015-08-19 14:49:20 +08:00
    Qt Creator +1 自动补全功能不用配置就很好用
    rock_cloud
        21
    rock_cloud  
       2015-08-19 14:50:35 +08:00
    @Nicksxs 你为啥用个 C/C++ IDE 去看 PHP 代码,有 JetBrains phpstorm 啊,教育版还有一年免费,多好~
    aisk
        23
    aisk  
       2015-08-19 14:58:32 +08:00
    vim + clang_complete
    Nicksxs
        24
    Nicksxs  
       2015-08-19 15:01:08 +08:00
    @rock_cloud PHP 源码,不是 PHP 代码谢谢, https://github.com/php/php-src
    harry890829
        25
    harry890829  
    OP
       2015-08-19 15:19:11 +08:00
    @caiych 原来还有这个功能啊……之前没发现,多谢提醒,我去研究研究
    harry890829
        26
    harry890829  
    OP
       2015-08-19 15:20:15 +08:00
    @aisk 啊,现在的 vim 已经装了 YouCompleteMe ,我就直接去看他的函数跳转啦,之前一直以为只有提醒功能,还是感谢
    Changxu
        27
    Changxu  
       2015-08-19 15:25:14 +08:00
    Vim
    harry890829
        28
    harry890829  
    OP
       2015-08-19 15:30:12 +08:00
    @Changxu 还是用 vim 的多啊……
    adexbn
        29
    adexbn  
       2015-08-19 15:31:41 +08:00
    Vim ( with ctags )
    m4ker
        30
    m4ker  
       2015-08-19 15:32:40 +08:00
    emacs 和 vim 是最好的命令行编辑器
    mozartgho
        31
    mozartgho  
       2015-08-19 15:36:17 +08:00
    @aisk clang_complete 有编译好的,直接可用的吗?
    lingxi27
        32
    lingxi27  
       2015-08-19 15:37:05 +08:00
    @harry890829 https://github.com/Valloric/YouCompleteMe
    YCM 一直在更新,看上去比原来更强大了,函数跳转是支持的
    harry890829
        33
    harry890829  
    OP
       2015-08-19 15:39:28 +08:00
    @lingxi27 多谢,我现在也在 github 上看插件的介绍
    harry890829
        34
    harry890829  
    OP
       2015-08-19 15:39:53 +08:00
    @m4ker 嗯嗯, vim 确实强大,可惜我还是不太熟悉,还需努力
    aisk
        35
    aisk  
       2015-08-19 16:00:09 +08:00   1
    @mozartgho linux 和 osx 下直接用包管理带的 libclang 就可以了。 windows 可能比较折腾。
    xhuuanniqege
        36
    xhuuanniqege  
       2015-08-19 19:06:01 +08:00 via Android
    我说的是 ycm 有函数定义跳转功能, qt 没用过不太清楚啊。。。
    acgeo
        37
    acgeo  
       2015-08-19 19:09:32 +08:00
    都是 V2EX 都是一群装逼仔!!

    好好滴 IDE 编辑器不用 非得整什么 vim....


    真是能装逼!



    IDE 可以用 codeblocks, 编辑器用 sublime text


    别跟我扯什么 vim 效率 高! 高各屁啊 就是装逼!!
    xylophone21
        38
    xylophone21  
       2015-08-19 19:10:51 +08:00
    @harry890829
    你需要的是 samba
    lichun
        39
    lichun  
       2015-08-19 19:17:46 +08:00
    @acgeo 至少用过再喷吧,我用 IDE 也会装个 Vim 键位的插件的。那种编辑模式很不错啊
    comicfans44
        40
    comicfans44  
       2015-08-19 19:18:02 +08:00
    @acgeo 呵呵,当年我也是这样想的
    acgeo
        41
    acgeo  
       2015-08-19 19:19:10 +08:00   1
    @lichun
    @comicfans44

    没用过 我就不说这话了.
    kouch
        42
    kouch  
       2015-08-19 19:46:26 +08:00
    如果是追求 Coding 的效率,推荐 Clion ,本人也正在使用。
    至于大家对于 Vim 的争论,我只想说, Vim 是不是神器,关键看在谁的手里,配置好的 Vim 用起来确实很爽,你会发自内心的觉得 Coding 也是一件很享受的事。
    leavic
        43
    leavic  
       2015-08-19 20:28:21 +08:00
    @luoqeng SI 有 linux 版本?
    zhicheng
        44
    zhicheng  
       2015-08-19 20:40:06 +08:00 via Android
    TMUX + VI 党路过,没有自动补全,没有自动缩进,没有语法高丽,关掉括号匹配,全屏使用,只有代码。其他所有辅助功能都是多余的。
    freezhan
        45
    freezhan  
       2015-08-19 21:11:36 +08:00
    @acgeo

    从前在 windows 上就大爱 cb (对 VS 总是有一种莫名的恐惧感...) 和 sublime,

    换到 linux 上后 sublime 居然不支持折叠(比如说一段比较长的 json 代码),
    后面换 atom...感觉对中文的支持很不友好(即便普通文本的中文弄好了, markdown 文件中的表格显现的中文依旧乱码)。

    最终变成了:
    windows: cb + sublime
    linux: cb + sublime + atom +(马克飞象+EverNote )

    VI 只会一点点最简单的 orz
    sublime 配置过可以支持各种语言, 最终放弃回到 IDE~

    最后吐槽下,找一款功能齐全的,称手的能够陪伴一生的编辑器太难了 TAT
    xnotepad
        46
    xnotepad  
       2015-08-19 21:58:46 +08:00
    好多人都没看需求就开始写代码了。
    linux40
        47
    linux40  
       2015-08-19 22:07:04 +08:00 via Android
    我在用 codeblocks 当编辑器不要打我。。。这货对模板的补全和跳转支持不好,不过我用不来 vim 、 emacs 这些东西。。。。
    fuqian
        48
    fuqian  
       2015-08-19 22:09:16 +08:00
    通过 vpn 访问开发机,怎么用图形化工具啊?
    WispZhan
        49
    WispZhan  
       2015-08-19 22:14:51 +08:00
    @luoqeng @leavic 还在用 source insight ?

    看看 scitools understand 吧,而且 SI 貌似没有 LINUX 版一般都是 WINE 的
    Natumsol
        50
    Natumsol  
       2015-08-19 22:16:44 +08:00
    sublime text + g++
    leavic
        51
    leavic  
       2015-08-19 22:18:47 +08:00 via iPhone
    @WispZhan 我大部分 C 代码都是嵌入式代码, windows 下调试方便很多,你说的工具我回头看看。
    sinxccc
        52
    sinxccc  
       2015-08-19 22:42:19 +08:00
    首先我用 Emacs …

    如果是上手不熟悉的代码,我还是会上 Source Insight 。不选其他工具仅仅是因为我比较熟悉 SI ,而且有个 license=_=

    对于熟悉的代码,一般就是 Emacs 结合 GNU global (gtags ) 做搜索和补全,不用 ctags/etags 是因为它们功能太弱,不用 cscope 是因为 cscope 不能做 Emacs 下面的补全。

    也曾经尝试过 clang 的 c++ 补全,但是经手的几个项目复杂度和规模都很大, clang 在效率和准确率上都差强人意,配置也麻烦,所以就放弃了。

    查看代码的时候 grep 其实是挺好用的工具,别看它原理简单。 Emacs 下面有 grep mode 和几个 grep 包装的命令,也是很经常用到的。
    seeliuh
        53
    seeliuh  
       2015-08-19 22:52:04 +08:00
    seeliuh
        54
    seeliuh  
       2015-08-19 22:53:32 +08:00
    上面这个帖子的最后,有个哥们提到 vim 配 GNU Global 。你可以试试。我自己还没尝试
    命令行下也就 vim 和 emacs 靠谱
    ksupertu
        55
    ksupertu  
       2015-08-19 23:05:48 +08:00
    visual studio 2015 支持 linux 调试
    YouXia
        56
    YouXia  
       2015-08-19 23:21:37 +08:00
    @acgeo

    大家都在 Linux 开发机上开发,无图形界面,怎么搞?
    AshesCaoY
        57
    AshesCaoY  
       2015-08-19 23:23:25 +08:00
    Vim 和 emacs 挑一个吧,配上插件还是不错的,以前的时候一直用 emacs ,后来转 Vim ,鬼知道是什么原因
    johnnyb
        58
    johnnyb  
       2015-08-20 00:57:45 +08:00
    通常是开两个 terminal (我开始装了),一个运行 emacs (接着装,而且装了好几年了,快咬我) 专注编辑,一个用来 grep/ag 或其它操作。这样做的好处是可以按 cmd+` (不经意又装了一次,是的,我用 mac ) 快捷键盲切,不会切到不相干的窗口。

    代码补全这种事不太在意。。。主要是因为 ctags 之流太鸡肋,所以不太指望。只要补全当前 buffer 的单词足以,再加上 snippets ,就能顺畅写代码了。

    也不习惯为了查看一个函数就在编辑器里跳转,而是快捷键切到另一个窗口,查找函数声明调用就交给 grep/ag ,有正则表达式,再管道连接其它命令,还是很有效的。而且可以保存多次查询结果。

    查完了再切回编辑现场。保持现场对我很重要,跳来跳去头晕。
    xixi10111011
        59
    xixi10111011  
       2015-08-20 09:22:41 +08:00
    https://github.com/Valloric/YouCompleteMe 用起来还算可以,就是显示器得大点
    comicfans44
        60
    comicfans44  
       2015-08-20 09:31:14 +08:00
    @fuqian 看你需要的图形化工具是运行在开发机上还是本地,如果是运行在开发机上,那么 ssh 支持 X 转发, windows 下你需要一个支持 X 的 ssh 客户端(motaxterm 或者带 x 组件的 xshell ),linux 下你需要 ssh -X ,然后在终端下启动开发机上的图形化工具, UI 就跑到你本地的 x 上显示了
    tkisme
        61
    tkisme  
       2015-08-20 10:03:07 +08:00
    CLion 的编辑的确很舒服,而且 community 的版本基本够用,其实可以用 git 控制,编译啊什么的都可以写在 git 的 hook 里面,觉得效果差不多,而且还可以回滚什么的
    ensonfun
        62
    ensonfun  
       2015-08-20 10:36:32 +08:00
    没人说用 samba 然后 windows 下用 vs 么? vs+vax 简直不要太爽,编辑完直接在 linux 下 gcc 编译即可。
    Zkiller
        63
    Zkiller  
       2015-08-20 11:56:32 +08:00
    @acgeo 要是 sublime 都能和 vim 比那我就只能说你用 vim 太少。
    Changxu
        64
    Changxu  
       2015-08-20 13:52:06 +08:00
    @acgeo 呃, 100 行以下的单文件程序就用 Vim (我没必要为这么小的程序还建个 project ),小改动用 Vim 。
    只有大项目的时候才用 CLion
    fabregaszy
        65
    fabregaszy  
       2015-08-20 14:02:55 +08:00
    你们的 Clion 不卡吗?我的 Clion 特别是大项目,输入时卡的厉害...体验太糟糕了。
    我是 14 MacBook Pro 15" 高配
    sinxccc
        66
    sinxccc  
       2015-08-20 20:20:01 +08:00
    @johnnyb 你可以试试看在 emacs 里面 grep , grep-mode 可以直接跳转搜索结果, grep 结果的 buffer 改名就可以一直保存着。
    johnnyb
        67
    johnnyb  
       2015-08-20 21:56:38 +08:00
    @sinxccc 在 emacs 里搜索, helm-ag 是更好的选择,但我很少用,还是另开一个终端窗口方便。我只是想查看一下函数定义或者调用关系,无需跳转过去。搜索结果也不必刻意保存。

    emacs 集成的这些“ grep ”工具的预设也不太让人满意,有时候你想查找的文件/目录被它忽略,不想看的内容它又给显示。不如 find + xargs + grep/ag 灵活,有个好用的 shell (例如 fish ),也不用敲很多字。
    sinxccc
        68
    sinxccc  
       2015-08-20 22:45:06 +08:00
    @johnnyb 我一直没习惯 helm 的操作,尝试了几次最终都放弃了,所以它全系列的工具都没用;嗯, fish 也是。跟 find 搭配的话有 rgrep 和 grep-find 可以干类似的事情。

    嗯,这些都是个人偏好吧,我比较习惯把一个工作相关的东西都放在一个 Emacs 的 daemon 里面,感觉 Terminal 和 tmux 窗口多了之后循环切换效率有点低,还是 ibuffer 方便点。
    harry890829
        69
    harry890829  
    OP
       2015-08-25 10:11:34 +08:00
    @comicfans44 其实我们服务器是有图形界面的(谁知道网管为什么安装一个有界面的 redhat ),我们也有 vnc 连接到服务器上可以直接用图形界面,但是网管反对我们在服务器上安装乱七八糟的软件,毕竟运行环境和开发环境不能一样啊,现在自己跑了个 gentoo 在虚拟机上,超轻量级,还不影响速度……所以只能用命令行,其实我觉得要是一定要用图形界面的话,我直接 win 下上 vs 好了,效果也不会太差的样子,就是很多错误提醒麻烦,过滤就好……
    harry890829
        70
    harry890829  
    OP
       2015-08-25 10:19:41 +08:00
    @sinxccc
    @johnnyb
    两位大牛说的我都仔细看了,现在只能是慢慢磨合了,对于两位说的 find+grep 这个我还需要提升自己的正则水平, emacs 可以看到函数的调用么?比如 Func (),这个函数,我想看到哪里调用过,这样的情况,在遇到很多类中,都有 Func ()这个函数的时候,两位是怎么办的呢?人工判断么
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3235 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 10:46 PVG 18:46 LAX 03:46 JFK 06:46
    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