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

想学 Go,是否能在 vim 做到生产级别的开发环境?

  •  
  •   kevinhwang · 2019-04-10 21:38:57 +08:00 · 12231 次点击
    这是一个创建于 2088 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开始学语法,先配了一下 vim-go 和 coc+go-langserver。

    感觉 debug 还是有点不顺手,想问问生产工具都是用 goland 的吗?

    Ps:目前写 java,用的是 idea 社区版,印象中以前的社区版可以装 clion 和 goland 对应插件的,看来已经到了丰收季节=,=

    104 条回复    2019-04-25 14:00:31 +08:00
    1  2  
    JamesMackerel
        1
    JamesMackerel  
       2019-04-10 21:49:26 +08:00 via iPhone   ❤️ 3
    我就是 vim go + ycm,但是我从来不用调试器,全部靠 print.
    kevinhwang
        2
    kevinhwang  
    OP
       2019-04-10 21:50:58 +08:00
    @JamesMackerel 是生产级别还是个人开发?感觉这样有点像 c 了。
    fengjianxinghun
        3
    fengjianxinghun  
       2019-04-10 21:52:04 +08:00 via iPhone   ❤️ 1
    emacs 生产级 调试 idapro
    jmc891205
        4
    jmc891205  
       2019-04-10 22:01:59 +08:00   ❤️ 1
    debug 用 delve
    vim 有 3 个插件都是基于 delve:vim-go, vim-godebug 和 vim-delve。
    IDEA 的 golang plugin 也是用的 delve

    本人的习惯是 vim 只做编辑。用命令行的 delve 来做调试。
    herozzm
        5
    herozzm  
       2019-04-10 22:27:00 +08:00 via iPhone   ❤️ 1
    是的 Goland
    Maboroshii
        6
    Maboroshii  
       2019-04-10 23:04:43 +08:00   ❤️ 1
    vim-go 配合 goimports,ycm,ctags
    然后一个 find 脚本 齐活
    xlui
        7
    xlui  
       2019-04-10 23:22:05 +08:00 via iPhone   ❤️ 6
    在你配完 vim 那些插件的时候,用 goland vscode 的人已经开始开发一段时间了。
    在你辛辛苦苦重构、查 API 文档、换不顺手的插件的时候,用 goland vscode 的人已经开发完发布了。

    我也是一个 vim 党,每天都会用到 vim 来处理一些简单文本或者在服务器查看、编辑文件,但我从来不推荐用 vim 开发项目(除非是特别特别简单的),专业的事就交给专业的工具( jb 全家桶)来干吧。
    nanaw
        8
    nanaw  
       2019-04-10 23:23:25 +08:00
    我建议在 vscode 下用 vim 插件
    kevinhwang
        9
    kevinhwang  
    OP
       2019-04-10 23:34:01 +08:00
    @xlui @nanaw 我觉得 go 是为了微服务和 c 与 cpp 之间的产物,这种业务算比较清了。如果有人让我用 vsc 或者 vim 写 java,我断定他想害我。

    至于 vsc,在不久前我是抱着积极态度的。vim 在发展,已经出现 coc 这种插件,理论上 vsc 有的插件,vim 也会有的,还有后续的悬法窗口。如今 vsc 却越臃肿,最重要是不能在终端。

    我的看法是如果大家觉得 vim 不行,我就想办法用 goland 就是了= =,vsc (没入 vim 前觉得非常好用)不会考虑 ,毕竟同级别的产品。。
    stanlry
        10
    stanlry  
       2019-04-10 23:40:18 +08:00 via Android
    每天都在用 vim 开发 go 的表示毫无问题。
    junmoxiao
        11
    junmoxiao  
       2019-04-10 23:44:49 +08:00 via Android
    @xlui 又不是每次开发都重新配置 vim
    kevinhwang
        12
    kevinhwang  
    OP
       2019-04-10 23:55:47 +08:00
    @stanlry 求姿势
    glues
        13
    glues  
       2019-04-10 23:58:08 +08:00   ❤️ 6
    @xlui 在你 goland 启动完成的时候,别人用 vim 已经把项目开发完成上线了

    就你这水平,就别说自己是 vim 党了,我还和马云同姓呢,这事我有到处说吗?
    iRiven
        14
    iRiven  
       2019-04-10 23:58:50 +08:00 via Android
    goland ➕ vim 插件 体验一般般,但也没啥好的选择
    fire9
        15
    fire9  
       2019-04-11 00:28:55 +08:00
    总感觉 Goland 这样的 IDE 是给新手和开发不是很久的人用的. 另外,不够 Cool. Vim 才是王道.哈哈!纯属我个人而言.
    mason961125
        16
    mason961125  
       2019-04-11 00:37:58 +08:00 via iPhone
    说 vscode 重的人真的会用 vscode 么?
    JamesMackerel
        17
    JamesMackerel  
       2019-04-11 00:39:57 +08:00 via iPhone
    @kevinhwang 我只用 go 做过公司的项目。
    7sDream
        18
    7sDream  
       2019-04-11 00:45:53 +08:00   ❤️ 3
    第一次听到生产级别的开发环境这个词……
    20015jjw
        19
    20015jjw  
       2019-04-11 00:46:18 +08:00 via Android
    学语法还要 debugger 别折腾了先学会再说
    pubby
        20
    pubby  
       2019-04-11 01:28:31 +08:00 via Android
    在 emacs 里写了十几年代码
    goland (最初叫 goGland )出来后果断换到 goland 了
    luozic
        21
    luozic  
       2019-04-11 05:28:28 +08:00 via iPhone
    调试 远程调试 就用 vim ?那得配置到啥时候?
    congeec
        22
    congeec  
       2019-04-11 08:04:35 +08:00   ❤️ 3
    @xlui 功夫不到家
    IDE 的优势在重构和调试,老手在项目代码几万行之前不依赖这些功能
    vim 能用现有的 language server 做重构

    无脑写业务代码,我用 vim 速度完爆同事
    smallX
        23
    smallX  
       2019-04-11 08:35:46 +08:00 via Android
    居然有人鄙视 vim。就因为自己不会吗😊
    missdeer
        24
    missdeer  
       2019-04-11 09:14:45 +08:00 via Android
    生产环境全靠打 log 调试啊
    GTim
        25
    GTim  
       2019-04-11 09:24:11 +08:00
    Sublime Text 3 一路撸过 Java C++ C 等语言的撸过,我是一个文本型编辑器的爱好者,不占大内存,不耗 CPU
    psrazil2008
        26
    psrazil2008  
       2019-04-11 09:39:30 +08:00   ❤️ 1
    写 Go 两年半,生产上用
    win 下 vscode + LiteIDE + bash 调试
    mac 下 item2 + vscode + vim
    因为线上都是打的二进制包和 docker 并不存在说要看源码的情况,源码都是开发环境就得写好静态检查好。所以 vim 就显得没那么重要了。
    goland 或者 vscode + 原生的 gocode 组件 已经可以很好实现代码编辑过程中提示和错误的发现。搭配 go vet ,go fmt 工具静态下代码的质量也能有保证。

    最后,开发环境还是有界面会舒服些,特别是对于开发分布式应用和稍大一点的程序。因为跳转 Interface{}的时候是无法直接跳,需要重新去找实现。在 vim 下看是有点难受。
    xxxy
        27
    xxxy  
       2019-04-11 09:42:39 +08:00
    如果你不知道用什么开发环境,用 jb 家的总没错
    reeco
        28
    reeco  
       2019-04-11 09:46:12 +08:00 via Android
    哈哈 又见 vim 党吹牛逼,还速度完爆
    toma77
        29
    toma77  
       2019-04-11 09:48:26 +08:00
    作为前端狗我用 vscode,包管理用的 govendor,因为 vscode 对 go module 支持不好。。
    kevinhwang
        30
    kevinhwang  
    OP
       2019-04-11 09:53:49 +08:00 via Android
    @GTim java 业务迭代的时候得有多苦,特别是 java 有业务和框架都过度封装的习惯。
    whoisghost
        31
    whoisghost  
       2019-04-11 09:55:42 +08:00
    用 vim 开发大型工程的人,代码一般都写得比较烂。
    imherer
        32
    imherer  
       2019-04-11 10:00:43 +08:00
    刚入坑 Go 不久,用 vscode ……
    debug 基本上靠 print ……
    imherer
        33
    imherer  
       2019-04-11 10:01:01 +08:00
    @toma77 插件没装到位吧? 我用起来还挺顺的!
    wangxiaoaer
        34
    wangxiaoaer  
       2019-04-11 10:01:22 +08:00
    @glues #13
    在你 goland 启动完成的时候,别人用 vim 已经把项目开发完成上线了


    别抬杠。

    顺便提醒下,电脑该换了。
    kindjeff
        35
    kindjeff  
       2019-04-11 10:01:54 +08:00 via iPhone
    用 ide 开发大型工程的人,代码一般都写得比较烂。
    lynskylate
        36
    lynskylate  
       2019-04-11 10:09:25 +08:00 via Android
    @whoisghost linux 不算大型工程???那么多 c++项目不算?这么黑也太过了
    whoisghost
        37
    whoisghost  
       2019-04-11 10:25:27 +08:00
    @lynskylate Linux 代码很漂亮吗?
    lynskylate
        38
    lynskylate  
       2019-04-11 10:30:52 +08:00 via Android
    @whoisghost 你要这么回的话我也没啥好说的。互相 block 吧
    harry890829
        39
    harry890829  
       2019-04-11 10:33:59 +08:00
    jetbrains 全家桶用户路过,使用 goland+vim 插件,超爽的~~
    fatedier
        40
    fatedier  
       2019-04-11 10:35:56 +08:00   ❤️ 6
    https://github.com/fatedier/frp 开发环境 tmux + vim + vim-go,很舒服。

    目前 go mod 的支持有一些问题,但是够用,等官方的 gopls 成熟以后应该效率会更高一些。
    glues
        41
    glues  
       2019-04-11 10:36:54 +08:00
    @whoisghost 连 Linux 都看不上,把你的项目拿出来溜溜呗?
    xpol
        42
    xpol  
       2019-04-11 10:39:00 +08:00 via iPhone
    举个旁证:同事在 vim 和 vsc 下开发的 c#代码,在 jb 家的 rider 下全是 inspection 问题。
    kidtest
        43
    kidtest  
       2019-04-11 10:39:32 +08:00
    如果在虚机上开发,哪来的图形化界面让你用 goland。。
    zichen
        44
    zichen  
       2019-04-11 10:43:09 +08:00
    goland 就是开箱即用,vim 总免不了配置一遍环境,并且每次导入新项目总得重新生成一遍 ctags 吧。
    kevinhwang
        45
    kevinhwang  
    OP
       2019-04-11 10:48:44 +08:00
    @fatedier frp 很好用,谢谢大佬给信心。
    yuuko
        46
    yuuko  
       2019-04-11 10:52:50 +08:00
    @xpol 这个难道不是因为你们没有统一代码规范吗?
    thet
        47
    thet  
       2019-04-11 10:55:16 +08:00
    想问一下,vim 可以代码跳转吗
    kevinhwang
        48
    kevinhwang  
    OP
       2019-04-11 10:57:43 +08:00
    @thet 可以,部分语言已经支持 rename 简单重构功能。和楼上某楼意见一致,就是重构和调试,完败 ide。
    BruceAuyeung
        49
    BruceAuyeung  
       2019-04-11 11:11:28 +08:00 via Android
    愿意给钱就上 goland,不愿意就上 vscode
    whoisghost
        50
    whoisghost  
       2019-04-11 11:20:07 +08:00   ❤️ 3
    @xpol 对,所以用 vim 的人,绝大部分对语言不是极其熟悉,代码放在 ide 去,一大堆不必要、缺少、最差实践的提示哗啦啦出现。最搞笑的是,重构居然用正则表达式。

    这就是我为啥说用 vim 写的代码,质量都很差,或者说,用非 ide 写的代码,都比较差。
    tomychen
        51
    tomychen  
       2019-04-11 11:22:34 +08:00
    tar cvzf vimconf.tar.gz ~/.vim
    scp vimconf.tar.gz root@testserver:/tmp

    这个工程很大么?
    至于到生产环境,我估计只是配置的修改了吧,那普通的 vim 没带插件的,又如何?

    还是你说要在生产环境撸代码?
    whoisghost
        52
    whoisghost  
       2019-04-11 11:24:20 +08:00
    @glues 来,相互溜溜,github.com/fanpei91

    把你的用 vim 写的 go 代码,放到 goland 之类的去试试,用 “ Inspect Code ” 功能审查下,看看它是不是冷血给你指出代码质量有多烂。
    glues
        53
    glues  
       2019-04-11 11:58:50 +08:00   ❤️ 9
    @whoisghost 太好笑了,你以为只有 goland 有代码审查工具吗,go 社区一堆 lint 工具,vim 都能用的上,你恐怕都不知道吧,真的别秀无知了

    看了你 GitHub 上的垃圾代码,所有项目都没有测试代码,难怪你会说出 「重构居然用正则表达式」这种话。
    说真的,就你这水平,在 V 站都处于下游水平,你还看不起 Linux 的代码?
    cuberlzy
        54
    cuberlzy  
       2019-04-11 12:12:37 +08:00
    日常都是 liteide
    whoisghost
        55
    whoisghost  
       2019-04-11 12:13:57 +08:00
    @glues 淡定,别激动。公平点,给我看看你的 github 可否?
    HarrisonZ
        56
    HarrisonZ  
       2019-04-11 12:19:05 +08:00
    喜闻乐见的编辑器怼人
    rayhy
        57
    rayhy  
       2019-04-11 12:19:25 +08:00
    @whoisghost
    @glues

    talk is cheap, show me code?

    俩老哥消消气😂
    kangkang
        58
    kangkang  
       2019-04-11 12:41:20 +08:00 via iPhone
    linux 代码没有大家想的那么神圣和漂亮...
    ThomasZ
        59
    ThomasZ  
       2019-04-11 12:52:54 +08:00 via Android
    vscode ➕ vim 插件 岂不美滋滋? 主要是现在懒得折腾了。。。。
    GTim
        60
    GTim  
       2019-04-11 13:52:07 +08:00
    @kevinhwang 没办法,作为修复 bug 的主力军,必须得很熟练很熟练
    EricNirvana
        61
    EricNirvana  
       2019-04-11 14:06:35 +08:00   ❤️ 1
    使用 vim 四年, 因为不写 java 和前端, ide 完全用不习惯.. 目前实际工作分别使用了 c, python, golang, rust.

    日常使用 zsh + tmux + nvim, 简直不要太舒服.

    异步补全, 异步检查, 代码跳转, 格式检查, 外加杂七杂八的各种插件, 可以做到不离键盘. 说 vim/neovim 不好的, 麻烦装点插件, 做点映射吧, 一套配置可以多机器用..

    以前使用 jb 一年多, 后来换成 vim, 已经不去想 jb 全家桶了
    roscoecheung1993
        62
    roscoecheung1993  
       2019-04-11 14:09:05 +08:00
    第 n 次 IDE 大战又开始了
    herozzm
        63
    herozzm  
       2019-04-11 14:11:47 +08:00 via iPhone
    @glues 他说的没错,你是强行说 golang 启动慢,顶多就是十几秒功夫而已
    herozzm
        64
    herozzm  
       2019-04-11 14:13:55 +08:00 via iPhone
    看到某些强行发起对抗 也是醉了 自身优越感那么强
    kevinhwang
        65
    kevinhwang  
    OP
       2019-04-11 14:18:42 +08:00
    @EricNirvana 我目前 vim 用来看 c 代码比较多,方案跟你一模一样,zsh+tmux+nvim。我的 idea 也是 vim 操作,界面也是在专注模式,去掉各种 tabs 和 windows。


    @roscoecheung1993 我应该没引战吧?我选的节点应该没错。。。。况且我不支持盲目 vim,ide 确实有其优势,但就是想尝试纯终端工作的感觉。
    staticer
        66
    staticer  
       2019-04-11 14:21:05 +08:00   ❤️ 1
    等等。一般会纠结这个问题的都是新手。
    新手建议无脑选 “开箱即用”的, 把精力放在语言本身。
    尤其是学生党,每天面对的麻烦事已经够多了,别折腾。
    xiaozizayang
        67
    xiaozizayang  
       2019-04-11 14:25:16 +08:00
    python 环境管理比较麻烦,喜欢用 pycharm,go 的话都用过,但是我投 vim,个人觉得效率不是一个档次
    [![A75a3n.md.png]( https://s2.ax1x.com/2019/04/11/A75a3n.md.png)]( https://imgchr.com/i/A75a3n)
    hellodudu86
        68
    hellodudu86  
       2019-04-11 14:26:50 +08:00
    vim-go 用来写 golang 很舒服的,配置好了就和 ide 没什么区别了。
    跳转 gd,代码 highlight,find ag,debug dlv。
    我平常公司业务用 vs 写 c++,自己写 golang 用 vim+vim-go,感觉还是 vim 用起来爽一些,效率两者差不多。
    EricNirvana
        69
    EricNirvana  
       2019-04-11 14:34:40 +08:00
    萝卜白菜各有所爱了..
    @kevinhwang 你的 id 看着好面熟, 是 spaceVim 的作者?
    ![nvim]( )
    kevinhwang
        70
    kevinhwang  
    OP
       2019-04-11 14:37:05 +08:00
    @EricNirvana 不是,入 vim 不到一年的小菜一枚。
    ggicci
        71
    ggicci  
       2019-04-11 14:37:06 +08:00
    用最新的 IDE 写最简单的语言掉最少的头发泡最靓的仔
    jswh
        72
    jswh  
       2019-04-11 15:07:10 +08:00
    debug 还是要上 gui,用 vim 就纯写
    stanlry
        73
    stanlry  
       2019-04-11 15:16:08 +08:00 via Android   ❤️ 1
    楼主既然入了 vim 的坑就用 vim 写吧,都是习惯问题。装两个 plugin 也不费事。不用纠结 IDE 这些,你用 goland 也不会写出比用 vim 更好的代码。
    hellodudu86
        74
    hellodudu86  
       2019-04-11 15:23:44 +08:00
    @EricNirvana 这个 colorscheme 叫啥?
    monlite
        75
    monlite  
       2019-04-11 15:58:03 +08:00
    用过 vim,vscode,最后还是用 goland 了,配合 delve 远程调试服务器上的程序
    appmanagecluster
        76
    appmanagecluster  
       2019-04-11 16:02:57 +08:00
    很早折腾过 vim,最后留下来的就只有 vim 本身的东西,三种模式,不依赖鼠标的各种控制,
    appmanagecluster
        77
    appmanagecluster  
       2019-04-11 16:04:28 +08:00
    说实话,vim 本身核心的东西最好用,补全提示调试 ide 的东西还是 ide 好用,果断 ide、vscode 等 + vim 插件
    noaccounthere
        78
    noaccounthere  
       2019-04-11 16:12:53 +08:00
    别折腾 vim 了, ide 工具+vim 扩展才是写代码的正确途径
    KgM4gLtF0shViDH3
        79
    KgM4gLtF0shViDH3  
       2019-04-11 16:26:05 +08:00 via iPhone
    vim 能做到代码检查吗
    itgoyo
        80
    itgoyo  
       2019-04-11 16:27:57 +08:00
    @EricNirvana spaceVim 作者 V2 和 github 同名
    lq007
        81
    lq007  
       2019-04-11 16:33:33 +08:00
    都 2019 了还有人折腾着玩意呢... 等 vim 折腾够了搭配了一堆插件, 最后可能也就变成另一个低配版 IDE 而已, 想想自己最终获得了什么? vim 折腾经验?
    stanlry
        82
    stanlry  
       2019-04-11 16:40:57 +08:00 via Android
    xrlin
        83
    xrlin  
       2019-04-11 17:18:51 +08:00
    编辑器配置起来好麻烦
    junmoxiao
        84
    junmoxiao  
       2019-04-11 18:30:59 +08:00 via Android
    @kangkang 这要看你怎么定义漂亮的代码了,你可能觉得整齐易懂就叫漂亮
    sazima
        85
    sazima  
       2019-04-11 19:08:46 +08:00
    how about this? 我 python 开发就是改的这个配置.
    sazima
        86
    sazima  
       2019-04-11 19:09:06 +08:00
    忘记贴地址了    https://github.com/TTWShell/legolas-vim
    f4nyc
        87
    f4nyc  
       2019-04-11 19:15:14 +08:00 via iPhone
    我就纳闷了,用 ide 的怎么光撕 vim,真是不给 emacs 面子:-D
    sunocean
        88
    sunocean  
       2019-04-11 20:05:46 +08:00
    @glues 如果我没记错的话,你好像也是 VSCode 用户。我记得好想看过你在 V2 发帖问,VSCode 快捷键弱怎么办。
    GjriFeu
        89
    GjriFeu  
       2019-04-11 20:26:11 +08:00
    唉,真的没有人用 sublime 了么。
    glues
        90
    glues  
       2019-04-11 20:47:07 +08:00
    @sunocean 对, 我是把各种编辑器、IDE 都深入用过才做出自己的判断的
    不像有些人连 vimL 都没写过一行,就说自己是 vim 党。
    还有些无知的人认为 vim 跟不上时代,麻烦你们去 GitHub 看看 commit 记录,看看有多少 PR,就知道这个社区有多活跃,是一直在演进的
    sunocean
        91
    sunocean  
       2019-04-11 20:57:51 +08:00
    @glues 我感觉好多人不喜欢 Vim 甚至不推荐新手用 Vim 是因为觉得他的学习曲线太陡峭不能开箱即用。不太适合新手朋友。
    chemzqm
        92
    chemzqm  
       2019-04-11 21:03:00 +08:00   ❤️ 1
    vim 也只是工具而已,现有基于 go 的 languageserver 都各有各的问题,相比 tsserver 还差的挺多,没必要花太多时间折腾配置上面,掌握语言本身更重要。

    coc 后续会支持 Debug Adapter Protocol, 即便支持开始也只是调试 nodejs,建议使用其它调试工具。
    f4nyc
        93
    f4nyc  
       2019-04-11 21:04:15 +08:00 via iPhone
    @glues 我怀疑有些人就是在服务器上用过 vi 然后就“看破” vim 的本质 XD
    jadeity
        94
    jadeity  
       2019-04-11 21:26:16 +08:00
    自己写着玩,vsc+vim 插件
    tamama
        95
    tamama  
       2019-04-11 21:43:48 +08:00
    我主要用 goland (因为省心),有时也用 vim; 平时习惯写脚本用 vim 或 vscode, 大型项目就上 goland
    kangkang
        96
    kangkang  
       2019-04-11 22:23:12 +08:00 via iPhone
    @junmoxiao 哈哈哈哈 谨慎发言吧
    qwertyzzz
        97
    qwertyzzz  
       2019-04-11 23:28:13 +08:00 via iPhone
    @glues 那人不是让你放 github 吗
    scnace
        98
    scnace  
       2019-04-12 08:51:43 +08:00 via Android
    适合自己的才是最好的

    只是像 editor 更容易折腾成自己对自己高效的 IDE 而 goland 提供了一个通用的 IDE 方案罢了 有什么好吵的 真想不通有人还地图炮 这都什么年代了……

    gopls 还不成熟 现在折腾没啥必要

    生产环境全靠肉眼 debug 的 难道没人吗 XDDD
    laodao1990
        99
    laodao1990  
       2019-04-12 09:23:51 +08:00
    一看这问题就猜到下面得打起来...
    Yggdroot
        100
    Yggdroot  
       2019-04-12 09:38:43 +08:00 via Android
    vim,IDE 只是个工具,用 vim 并没觉得有什么优越感,只是单纯觉得比用 IDE 舒服。反而是用 IDE 的人用出了优越感,觉得写的代码就比用 vim 的写的牛叉,甚至连 Linux 内核代码都看不上,也是醉了。
    这里是 V 站的 vim 版块,没怎么见用 vim 的跑去 IDE 版块说 IDE 多么垃圾,用 IDE 的却跑来 vim 版块来秀优越感。
    楼上的一些只是把 vim 当记事本用的,就不要冒充 vim 党了。
    用 vim 不用 IDE 的,是觉得用 IDE 没有那么舒服;用 IDE 且鄙视 vim 的,是不会用 vim,仅此而已。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2872 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:00 · PVG 17:00 · LAX 01:00 · JFK 04:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.