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

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

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

    现在是一直都在用 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 里面,觉得效果差不多,而且还可以回滚什么的
    enson110
        62
    enson110  
       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   ·   实用小工具   ·   4700 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:07 · PVG 18:07 · LAX 02:07 · JFK 05:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.