harry890829
V2EX  ›  C

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

  •  
  •   harry890829 · Aug 19, 2015 · 4154 views
    This topic created in 4102 days ago, the information mentioned may be changed or developed.

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

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

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


    真是能装逼!



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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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