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

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

  •  
  •   kios · 123 天前 · 4849 次点击
    这是一个创建于 123 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人主要使用 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  
       123 天前   ❤️ 1
    Qt 确实不太行,moc 啥的本身 lsp 支持都不算好。而且代码库大了之后 lsp 占的内存和 CPU 反而比 vs 要更高。
    nightwitch
        2
    nightwitch  
       123 天前   ❤️ 1
    用的 qmake ?印象里能生成 compile_commands.json 吧,不太确定。

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

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

    可以转换成 cmake,不过转到 vim 倒是看不到必要性, vs 宇宙第一不是吹出来的,只有 clion 可以碰瓷一下.
    hy172574895
        20
    hy172574895  
       123 天前   ❤️ 1
    > 效果都很不理想

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

    据我所知 clangd 提供很多效果不错的功能,前提是你的 compile_commands.json 要正确。参考连接: https://zhuanlan.zhihu.com/p/520720943
    786375312123
        21
    786375312123  
       123 天前
    如果公司平台是 qt ,那用 qt creator 啊
    codeklaus
        22
    codeklaus  
       123 天前
    完全没有这个必要,IDE 打开 vim 模式就好了,纯 vim 是落后的方式。 自己搞后端,智能建议、补全不会有 IDEA 、vs 做得好。
    felixcode
        23
    felixcode  
       123 天前 via Android   ❤️ 2
    真正不纠结工具的也不会去评论别人用什么工具有什么不好的,更何况绝大多数人也没见过使用 vim 的天花板。
    pengtdyd
        24
    pengtdyd  
       123 天前
    纠结工具,纠结语言,纠结框架都是最 low 的想法
    zhuangzhuang1988
        25
    zhuangzhuang1988  
       123 天前
    没必要折腾
    waruqi
        26
    waruqi  
       123 天前
    vim + supertab + leaderf 基本足够了,补全啥我不折腾了
    haah
        27
    haah  
       123 天前
    多大的项目呢?
    sinxccc
        28
    sinxccc  
       123 天前
    C++ 的话 ctags 我觉得挺好了,没必要一定要折腾 lsp 。
    hronro
        29
    hronro  
       123 天前
    没怎么用过 C++ 的 LSP ,但貌似 CLion 的补全,也是基于 clangd 来实现的。所以楼主这个情况,是只能用 VS 了吗
    anytk
        30
    anytk  
       123 天前 via Android
    纯 C 项目可以,C++还是算了吧,qtceator 挺好的,工具只有合适的,没有最好的
    mingl0280
        31
    mingl0280  
       123 天前
    不合适,非常不合适。
    工程的东西真不适合用 VIM 管理,那 tm 是人干的事么?
    xuanbg
        32
    xuanbg  
       122 天前
    为什么要使用纯 vim 或者 neovim 进行开发?把这个问题想明白,就不会纠结用什么工具了。
    acdfjelxe
        33
    acdfjelxe  
       122 天前
    scons/bazel 也会遇到 lsp 不太准的问题,lsp 不准就 ctags/gtags 完事
    kios
        34
    kios  
    OP
       122 天前
    @secondwtq 最主要的是响应慢,卡顿
    hhjuteman
        35
    hhjuteman  
       121 天前   ❤️ 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  
       121 天前
    折腾 vim 虽然上限很高,但是投入产出比太低,直接用 ide 省心省力,性能问题应该由机器配置来解决。

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

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

    做好 1-5, 就用不着其他 IDE 了.
    Neur2n
        43
    Neur2n  
       107 天前   ❤️ 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  
       106 天前 via Android   ❤️ 1
    可以尝试一下 vscode+cmake+clangd ,体验不错,参考 chromium 的文档 https://chromium.googlesource.com/chromium/src/+/HEAD/docs/vscode.md
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1269 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 19:01 · PVG 03:01 · LAX 12:01 · JFK 15:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.