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

C++大型项目使用 Vim 是否合适?

  •  
  •   kios · 2022-05-28 12:43:49 +08:00 · 6515 次点击
    这是一个创建于 661 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人主要使用 visual studio 2019 和 2022 加上 vsvim 插件从事 C++开发,vs 的补全和纠错做的还是非常出色的,不过我一直想尝试使用纯 vim 或者 neovim 进行开发,但是遇到一个痛点无法解决,公司平台大量依赖 Qt+ACE 框架,工程化主要以 Qt 而非 CMake 进行管理,在 vim 下尝试使用 ccls 、clangd 作为后端 lsp ,效果都很不理想。

    44 条回复    2022-06-14 22:52:49 +08:00
    iamzuoxinyu
        1
    iamzuoxinyu  
       2022-05-28 13:06:58 +08:00   ❤️ 1
    Qt 确实不太行,moc 啥的本身 lsp 支持都不算好。而且代码库大了之后 lsp 占的内存和 CPU 反而比 vs 要更高。
    nightwitch
        2
    nightwitch  
       2022-05-28 13:07:07 +08:00   ❤️ 1
    用的 qmake ?印象里能生成 compile_commands.json 吧,不太确定。

    给个通用的解决办法:
    https://github.com/rizsotto/Bear
    支持从 makefile 的编译过程录制 compile_commands.json ,然后搭配 lsp 就行
    kios
        3
    kios  
    OP
       2022-05-28 14:34:51 +08:00
    @nightwitch 是的 bear 我也尝试过,都效果不是很好
    kios
        4
    kios  
    OP
       2022-05-28 14:34:59 +08:00
    @iamzuoxinyu 是的
    kios
        5
    kios  
    OP
       2022-05-28 14:37:07 +08:00
    公司有大佬是直接使用 vim 或者 emacs ,就单纯当编辑器使用,也不需要补全啥的,但是我感觉我是记不住那么多东西,还是比较依赖补全
    ericgui
        6
    ericgui  
       2022-05-28 14:50:54 +08:00   ❤️ 1
    没必要折腾
    jorneyr
        7
    jorneyr  
       2022-05-28 15:47:31 +08:00
    程序员已经很不容易,对自己好点。
    nicebird
        8
    nicebird  
       2022-05-28 15:51:08 +08:00
    clangd 、ccls 有啥问题?我们全公司用的 vim\emacs 开发,好多年了。
    hello2090
        9
    hello2090  
       2022-05-28 16:02:36 +08:00 via iPhone
    @nicebird 你们那是高手,楼主这不还是在进阶的路上,要寻求帮助嘛
    chiu
        10
    chiu  
       2022-05-28 16:07:34 +08:00   ❤️ 1
    >> 不过我一直想尝试使用纯 vim 或者 neovim 进行开发
    尝试后,不适合自己 / 不符合自己的习惯,那就可以跳过了。用自己习惯的一套即可。
    Buges
        11
    Buges  
       2022-05-28 16:10:13 +08:00 via Android
    先考虑迁移到 cmake 吧,qmake 感觉已经很少用了。
    本站网友开发的 xmake 也挺不错。
    smilestar
        12
    smilestar  
       2022-05-28 16:14:06 +08:00
    人生苦短, 非必要不折腾
    SenLief
        13
    SenLief  
       2022-05-28 16:18:35 +08:00
    没必要在工具上折腾,啥方便用啥,啥熟悉用啥。
    holydancer
        14
    holydancer  
       2022-05-28 16:25:17 +08:00
    没必要创造需求,除非能带来效率的极大提升
    Suddoo
        15
    Suddoo  
       2022-05-28 16:28:01 +08:00 via iPhone
    没必要,对自己好一点,以最快的速度完成老板派的活最重要,至于用什么工具,没人 care
    Suddoo
        16
    Suddoo  
       2022-05-28 16:29:40 +08:00 via iPhone
    浪费时间折腾配置、工具……意义不大,还不如拿一个开箱即用的
    secondwtq
        17
    secondwtq  
       2022-05-28 16:35:07 +08:00   ❤️ 3
    楼主说“效果不太好”但是也没说具体哪里不好

    感觉更像是在讨论 HiFi 而不是讨论技术
    ooops
        18
    ooops  
       2022-05-28 16:49:06 +08:00 via iPhone
    用编辑器的 vim 插件就好了,用纯 vim 有什么收益? 浪费时间,编辑器好不好用一大部分在于插件的生态,vim 自己的插件做文本编辑没有问题,折腾 IDE 特性就是浪费时间了
    dbskcnc
        19
    dbskcnc  
       2022-05-28 16:54:52 +08:00
    https://www.qt.io/blog/introducing-qmake2cmake

    可以转换成 cmake,不过转到 vim 倒是看不到必要性, vs 宇宙第一不是吹出来的,只有 clion 可以碰瓷一下.
    hy172574895
        20
    hy172574895  
       2022-05-28 17:03:28 +08:00   ❤️ 1
    > 效果都很不理想

    你所期望的效果是怎么样的?

    据我所知 clangd 提供很多效果不错的功能,前提是你的 compile_commands.json 要正确。参考连接: https://zhuanlan.zhihu.com/p/520720943
    786375312123
        21
    786375312123  
       2022-05-28 17:05:17 +08:00
    如果公司平台是 qt ,那用 qt creator 啊
    codeklaus
        22
    codeklaus  
       2022-05-28 17:35:43 +08:00
    完全没有这个必要,IDE 打开 vim 模式就好了,纯 vim 是落后的方式。 自己搞后端,智能建议、补全不会有 IDEA 、vs 做得好。
    felixcode
        23
    felixcode  
       2022-05-28 18:12:08 +08:00 via Android   ❤️ 2
    真正不纠结工具的也不会去评论别人用什么工具有什么不好的,更何况绝大多数人也没见过使用 vim 的天花板。
    pengtdyd
        24
    pengtdyd  
       2022-05-28 18:36:29 +08:00
    纠结工具,纠结语言,纠结框架都是最 low 的想法
    zhuangzhuang1988
        25
    zhuangzhuang1988  
       2022-05-28 19:27:02 +08:00
    没必要折腾
    waruqi
        26
    waruqi  
       2022-05-28 19:31:50 +08:00
    vim + supertab + leaderf 基本足够了,补全啥我不折腾了
    haah
        27
    haah  
       2022-05-28 19:33:35 +08:00
    多大的项目呢?
    sinxccc
        28
    sinxccc  
       2022-05-28 19:45:29 +08:00
    C++ 的话 ctags 我觉得挺好了,没必要一定要折腾 lsp 。
    hronro
        29
    hronro  
       2022-05-28 20:33:58 +08:00
    没怎么用过 C++ 的 LSP ,但貌似 CLion 的补全,也是基于 clangd 来实现的。所以楼主这个情况,是只能用 VS 了吗
    anytk
        30
    anytk  
       2022-05-28 22:56:39 +08:00 via Android
    纯 C 项目可以,C++还是算了吧,qtceator 挺好的,工具只有合适的,没有最好的
    mingl0280
        31
    mingl0280  
       2022-05-28 23:21:51 +08:00
    不合适,非常不合适。
    工程的东西真不适合用 VIM 管理,那 tm 是人干的事么?
    xuanbg
        32
    xuanbg  
       2022-05-29 09:49:04 +08:00
    为什么要使用纯 vim 或者 neovim 进行开发?把这个问题想明白,就不会纠结用什么工具了。
    acdfjelxe
        33
    acdfjelxe  
       2022-05-29 22:48:44 +08:00
    scons/bazel 也会遇到 lsp 不太准的问题,lsp 不准就 ctags/gtags 完事
    kios
        34
    kios  
    OP
       2022-05-29 23:18:34 +08:00
    @secondwtq 最主要的是响应慢,卡顿
    hhjuteman
        35
    hhjuteman  
       2022-05-30 09:28:55 +08:00   ❤️ 1
    我从 2014 年到 2019 年一直在用 emacs 编码,纯 emacs ,尝试过这种方案,学过 elisp 。

    我在 2019 年的时候体验了一把 vs2019 的多线程调试,以及 vs 的图形 frame graph 抽帧调试以后,感觉我自己简直就像个傻逼。以前用 emacs 就为了装逼,白白浪费了自己的生命。vs 真的很好,vs2022+resharper 让我的效率至少提升了 20%,错误率也减少了 20%,debug 效率我估计至少提升了 50%。

    还有一个说法是用 vs 太卡了,用编辑器更轻量级,我的建议是让老板换电脑,2022 年了,开 ide 卡的电脑还是算了吧。
    elintwenty
        36
    elintwenty  
       2022-05-30 11:44:09 +08:00
    折腾 vim 虽然上限很高,但是投入产出比太低,直接用 ide 省心省力,性能问题应该由机器配置来解决。

    对于工业级产品开发,vim 最适合的是作为插件集成在 ide 中,而不是自开发个性版 ide

    当然怎么做是人的自由
    hankai17
        37
    hankai17  
       2022-05-30 15:41:27 +08:00
    vim 这个前提是得很熟源码
    461da73c
        38
    461da73c  
       2022-05-30 17:01:15 +08:00
    大型 CXX 一直都用 VIM ,很爽。
    codefun666
        39
    codefun666  
       2022-05-30 21:01:00 +08:00
    为啥不用 CLion 。vim 和 VS Code 就是一个编辑器,大型项目应该用 IDE 。
    newmlp
        40
    newmlp  
       2022-06-01 14:00:53 +08:00
    自己用的爽就是合适,爱用啥用啥呗
    kios
        41
    kios  
    OP
       2022-06-04 17:00:57 +08:00
    @hhjuteman 之前尝试过 spacemacs 和 doom emacs 没能坚持下去 : (
    piping
        42
    piping  
       2022-06-07 21:33:28 +08:00   ❤️ 1
    1. 用 cscope 给代码库做索引, vim 里面用快捷键做跳转
    2. 用 ctags 配合插件做符号列表,
    3. 高级一点的用 vim Termdebug 调用 GDB 调试 C/C++代码.
    4. 用:make 和 :quicklist 做编译错误跳转.
    5. 剩下的就是 vim 熟练度了. (编辑,浏览文件, 调用外部 shell 工具等等)

    做好 1-5, 就用不着其他 IDE 了.
    Neur2n
        43
    Neur2n  
       2022-06-13 10:02:21 +08:00   ❤️ 1
    想起来当时我也是闲得蛋疼才是入坑 vim ,用到现在差不多 7 年,也不会当作 IDE 来用,觉得就是个编辑器,虽然装了补全插件,但调试还是 vs 香。然而即使 vs (还有 vs code 、android studio 等等)装了 vim 键位插件,个人觉得编辑体验还是不如原生的(neo)vim ,因为原生的可以在很多细节地方进行配置。

    所以就是:
    1. 使用 cmake
    2. 用(neo)vim 编辑
    3. 用命令行编译、运行
    4. 出现不能用 printf 解决的 bug 时,用 cmake-gui 生成一个 vs solution ,使用 vs 进行 debug
    sssooonnnggg
        44
    sssooonnnggg  
       2022-06-14 22:52:49 +08:00 via Android   ❤️ 2
    可以尝试一下 vscode+cmake+clangd ,体验不错,参考 chromium 的文档 https://chromium.googlesource.com/chromium/src/+/HEAD/docs/vscode.md
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3489 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:49 · PVG 18:49 · LAX 03:49 · JFK 06:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.