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

主动放弃使用了十年的编辑器之神 Vim

  •  9
     
  •   skoofancy · 2023-05-09 16:06:37 +08:00 · 15029 次点击
    这是一个创建于 566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是从 2010 年毕业参加工作后,就一直使用 vim 作为主要开发工具,到现在 10 多年了,在公司做的项目基本都是在 vim 上完成的,中间写过一小段时间的 java 在 eclipse 上。最近一年内自己做的一些 side project 有在 vscode 上开发,所以目前我的主要开发环境是 vim + vscode (我个人电脑上安装的编辑器有 vim/neovim ,vscode ,zed ,cursor ,emacs )。

    最近,我们决定做一款编辑器的主题 (Hardhacker Themes)玩玩,一款主打好看又护眼的主题,经过网友的使用,被定位成了 “骚粉” or “基佬紫” 风格 (主题链接见文末)。

    作为资深的 vim 用户,我选择了做 vim 和 emacs 的主题。在做 hardhacker theme for vim 的时候,发现除了终端里的 vim ,我还需要兼容考虑 gui vim ( macvim )以及这两年的新秀 neovim 。特别是在测试 neovim 的时候,就粗略的体会到 neovim 比 vim 似乎更现代一些,比如默认支持 true color ;内置 lsp 、terminal ;配置可以采用纯 lua 编写,这一点我比较喜欢(可以和 emacs 用户一样了,无聊的时候就重构自己的配置代码玩)等等。

    心动不如行动啊,就开始着手将自己 vim 的陈年老配置全部迁移到 neovim 。一次性将 vimrc 全部改写成 neovim 的 init.lua 代码,总共耗时我 4 ,5 天吧,一边学习一边迁移到 lua 。大部分的时间花在了一点点的调整、打磨每一个插件的配置,除了功能以外,想要将整个编辑器环境的风格和 Hardhacker 主题配色严格保持一致,这样出来的效果才干净、整洁,追求极致的视觉,哈哈。

    看到这里,可能会觉得我标题党了一把,neovim 确实只是一个新的 vim ,本质还是 vim ,对 vim 的兼容也是很全面的,但确实有一些新的东西值得去尝试。

    认认真真的花时间做了 neovim 的迁移,那就顺手把这个新的 neovim 配置给开源出来分享一下。如果你也是 vim/neovim 用户,可以考虑尝试一下,也可以一起改进、维护。

    目前我也不用上班,有充足的时间可以用来维护开源项目,所以放心尝试,大胆提 issue 。

    献上我们的项目链接 (两个小项目都保持持续优化,打磨)

    再贴几个 Preview

    94 条回复    2023-05-14 18:34:26 +08:00
    ampedee
        1
    ampedee  
       2023-05-09 16:10:17 +08:00 via iPhone   ❤️ 57
    vim 爱好者愤怒😡点进来,满意😃离开
    isaacyw
        2
    isaacyw  
       2023-05-09 16:11:27 +08:00
    @ampedee 哈哈哈哈哈
    skoofancy
        3
    skoofancy  
    OP
       2023-05-09 16:12:53 +08:00
    @ampedee 哈哈,看到你我也满意了
    fds
        4
    fds  
       2023-05-09 16:16:08 +08:00
    标题党!
    兼容的编辑器可真多。
    好粉嫩……
    hanswu
        5
    hanswu  
       2023-05-09 16:18:46 +08:00   ❤️ 2
    VsCode 上已经安装了大佬的主题,颜色没有那么的亮,并且背景又粉又紫的(很烧),目前使用很舒服
    ChrisFreeMan
        6
    ChrisFreeMan  
       2023-05-09 16:21:45 +08:00   ❤️ 4
    来不及收刀了,厚葬友军
    weixiangzhe
        7
    weixiangzhe  
       2023-05-09 16:24:20 +08:00
    着实标题党
    hronro
        8
    hronro  
       2023-05-09 16:24:40 +08:00
    Neovim is VIM.

    Neovim isn't VIM.

    这就是 Neovim 最棒的两个特点。
    ixx
        9
    ixx  
       2023-05-09 16:28:29 +08:00
    如果这算放弃的话那么我早就放弃了🤣
    应该第三、四次换电脑的时候就不按原生 vim 了 直接用插件了
    ck65
        10
    ck65  
       2023-05-09 16:30:24 +08:00
    支持一键包,有空了试试。目前在用 [NvChad]( https://nvchad.com)。
    anson0370
        11
    anson0370  
       2023-05-09 16:34:59 +08:00
    怎么办,我也有点想用 neovim 了。可我不会啊 🤣。
    alfa
        12
    alfa  
       2023-05-09 16:39:20 +08:00   ❤️ 23
    标题党,祝你 esc 失灵
    vast0906
        13
    vast0906  
       2023-05-09 16:45:54 +08:00
    很烧,vscode 已经换上了
    skoofancy
        14
    skoofancy  
    OP
       2023-05-09 16:48:20 +08:00
    @ck65 我也去学习一下
    skoofancy
        15
    skoofancy  
    OP
       2023-05-09 16:49:01 +08:00
    @alfa 可以再买一个脚踏板的 esc ,双保险
    rzdCG
        16
    rzdCG  
       2023-05-09 16:49:39 +08:00
    我就猜是 nvim 哈哈
    skoofancy
        17
    skoofancy  
    OP
       2023-05-09 16:49:54 +08:00
    @hronro 看得见部分还是 vim ,看不见的地方就不是 vim 了,对吧?哈哈
    skoofancy
        18
    skoofancy  
    OP
       2023-05-09 16:50:24 +08:00
    @rzdCG 聪明 body
    skoofancy
        19
    skoofancy  
    OP
       2023-05-09 16:50:42 +08:00
    @rzdCG 聪明 boy
    alexsunxl
        20
    alexsunxl  
       2023-05-09 16:58:39 +08:00
    历史很快会再次上演。
    当年 vim 干翻 vi ,估计过不了几年,nvim 要干翻 vim 了。
    Huelse
        21
    Huelse  
       2023-05-09 16:59:05 +08:00
    试了下你的 vscode HardHacker 主题,light 的线条感觉不错,字体颜色能深一点就更好了
    beyondgamp
        22
    beyondgamp  
       2023-05-09 17:01:12 +08:00 via Android
    非常不错 学习
    anytk
        23
    anytk  
       2023-05-09 17:10:14 +08:00
    说的我也有点想切 nvim 了,列入计划
    zoffy
        24
    zoffy  
       2023-05-09 17:13:06 +08:00
    上个月就安装了,非常好主题,成功替换了我使用了四、五年的 Over Night Owl 主题,唯一的遗憾是 Darker 背景色还是有点亮
    itskingname
        25
    itskingname  
       2023-05-09 17:14:35 +08:00
    neovim vs spacevim vs vscode

    大家觉得哪个更好。
    thiswind
        26
    thiswind  
       2023-05-09 17:15:08 +08:00
    neovim 不还是 vim 嘛

    不过我现在用 vscode 基本替代了 vim 了,包括远程连服务器我都用 vscode 了
    Snail5956
        27
    Snail5956  
       2023-05-09 17:18:20 +08:00   ❤️ 1
    试了一会发现还是有点刺眼,还是切回我的 Noctis Azureus ,你这个和 Noctis Uva 有点像,但是字的亮度和背景对比度比较高。
    air00dd
        28
    air00dd  
       2023-05-09 17:22:58 +08:00
    Vim 也在以不同方式多路径迭代👍
    liuxu
        29
    liuxu  
       2023-05-09 17:26:09 +08:00   ❤️ 1
    没有理由不用 doom emacs
    hronro
        30
    hronro  
       2023-05-09 17:47:41 +08:00
    @skoofancy #17
    你去看看 Neovim 的 commit ,他现在还在不停地 merge 上游 VIM 的改动,所以你要说 Neovim 不是 VIM ,我是不认同的 😅
    fengjianxinghun
        31
    fengjianxinghun  
       2023-05-09 17:53:17 +08:00
    试了下配置,包全部得用 git clone 下来,几乎很难一次性成功,然后只能删了.local 重来
    anson0370
        32
    anson0370  
       2023-05-09 17:54:51 +08:00
    @Huelse 谢谢你的建议。VSCode 的 light 版本目前算是 beta ,应该还会调整。现在 light 版的彩色都差不多卡在 4.5 对比度(也就是 WCAG AA 标准上),进一步拉高对比度(也就是要降低亮度)会进一步导致几种颜色之间的区分度下降。像粉色和紫色、蓝色和青色、蓝色和灰色之间会变的更难分清。另外也可能导致过不了色盲安全检查。
    所以我就很纠结。我想可能可以对出现频率较高的其中部分颜色做一下调整。
    fengjianxinghun
        33
    fengjianxinghun  
       2023-05-09 17:55:58 +08:00
    @fengjianxinghun 可以给 ensure_packer 函数加个 git 代理
    hanxiV2EX
        34
    hanxiV2EX  
       2023-05-09 18:10:43 +08:00 via Android
    用 lazyvim 配置可以很精炼,

    https://github.com/hanxi/nvim-config
    skoofancy
        35
    skoofancy  
    OP
       2023-05-09 18:13:31 +08:00
    @hanxiV2EX 有这个准备,迁移到 lazy
    wellerman
        36
    wellerman  
       2023-05-09 18:14:44 +08:00   ❤️ 1
    不错,不过我平时主要用 emacs ,vim 的主要作用就是改 emacs 的配置和查看文件。
    skoofancy
        37
    skoofancy  
    OP
       2023-05-09 18:15:06 +08:00
    @fengjianxinghun 有道理啊。。。我是长期开着系统代理,好像很顺滑。
    yuhangch
        38
    yuhangch  
       2023-05-09 18:17:30 +08:00
    @alexsunxl 看我到老能用到几个字母的 vim 😀
    skoofancy
        39
    skoofancy  
    OP
       2023-05-09 18:20:14 +08:00
    @wellerman 试试我们的 emacs 主题,不太擅长 emacs ,也不知道做到了什么程度。
    Leei
        40
    Leei  
       2023-05-09 18:39:33 +08:00 via Android
    @wellerman 用 vim 改 Emacs 的配置,老 NTR 了😂,我也喜欢这么干,特别在 Emacs 的配置出问题的时候
    james122333
        41
    james122333  
       2023-05-09 18:54:03 +08:00
    我改用 vi ,因为你现在使用的配置移植性都很差,只有该编辑器专用
    还有左边档案列表虽然所有 IDE 都这样做,但其实它能做的就是少少事情
    例如递迴寻找某些档案但是要排除一些删除,这种类似或其它操作无法的
    现在都是 vi way
    Mbb38C3HtyZydTt7
        42
    Mbb38C3HtyZydTt7  
       2023-05-09 19:34:33 +08:00
    一开始以为是从 vim 转 vscode 了,原来是用了 Neovim
    另外 helix 也不错
    skoofancy
        43
    skoofancy  
    OP
       2023-05-09 19:52:50 +08:00
    @james122333 回到用 vi 确实让我意外了。你说左侧的列表,我个人习惯来说并不是主要是用来找文件的,而是可以看到状态变化,比如文件本修改了,能够将 git 状态同步到上面,就很方便。至于查找文件有 telescope 这种更好用的插件。
    duke807
        44
    duke807  
       2023-05-09 19:59:31 +08:00 via Android
    想当年,我放弃了 神专用编辑器

    一开始还没有完全放弃,但只用来给别人发来的代码转 utf8 编码,现在已经完全不用 emacs 了
    alexsunxl
        45
    alexsunxl  
       2023-05-09 20:02:49 +08:00
    @vthe helix 插件系统还没定下来呢。rust 写的就感觉代码看的挺舒服的,还能 build 起来玩。
    据说要用 wasm 搞插件系统
    alexsunxl
        46
    alexsunxl  
       2023-05-09 20:05:03 +08:00
    @skoofancy telescope 确实太强了。杀手级插件。
    加上 mason 开箱即用 lsp 。treesitter ,完全吸收了社区最牛的东西。真的是有东西。
    sumu
        47
    sumu  
       2023-05-09 20:31:49 +08:00
    推荐 AstroVim ,用了一年多了,开箱即用。如果愿意折腾,也能方便的融入自定义配置
    NanFengxuan
        48
    NanFengxuan  
       2023-05-09 20:38:11 +08:00
    谢谢 op ,已经用上了。
    ![vim]( https://s1.ax1x.com/2023/05/09/p9B0l9A.png)
    Huelse
        49
    Huelse  
       2023-05-09 21:14:05 +08:00
    @anson0370 确实比较难衡量,但可以考虑阶梯对比度,例如常量关键词->类名->方法名这样递减,当然这又增加你的工作量了😂😂
    skoofancy
        50
    skoofancy  
    OP
       2023-05-09 21:39:45 +08:00
    @NanFengxuan 强啊,我得开足马力继续完善了。
    skoofancy
        51
    skoofancy  
    OP
       2023-05-09 21:41:54 +08:00
    @sumu Astrovim 做得很好,我也学习了一下,致敬啊。我也想做成 AstroVim 啊(虽然重复造轮子不好),好难,得靠大家支持。
    cocang
        52
    cocang  
       2023-05-09 21:46:01 +08:00
    猛男粉配色,谁能拒绝啊
    wizardyhnr
        53
    wizardyhnr  
       2023-05-09 22:22:09 +08:00
    早切换了,忘了什么原因。neovim 其实也兼容 vimrc 格式的配置,不想折腾 copy 到 init.vim 里就行了。我现在是 nvim+tmux ,多开两个 tmux 窗口显示输出模拟 IDE 。
    vhysug01
        54
    vhysug01  
       2023-05-09 22:26:30 +08:00
    咨询大家个问题,用 vim 时候感觉不太方便
    vscode 操作的列模式和 ctrl-D, 试了几个 vim 包,都不如 vscode 操作顺滑
    james122333
        55
    james122333  
       2023-05-09 23:07:04 +08:00
    @skoofancy

    以 vi 逻辑就是写个外部脚本直接 git status 看要做什么
    因为把功能留给外部实现(当然有些功能没办法 但没办法的功能都不是刚需)所以换编辑器可套用 我当初就是研究其它编辑器发现原来写的都不可用才意识到这问题
    至于找档案并处理是善用本身特性可以做的 呼叫 cp mv rm tar find 等命令就可以 这用法是 vi way
    Sharenruma
        56
    Sharenruma  
       2023-05-09 23:21:52 +08:00 via iPhone
    没想过用 lazy.nvim 重新配一下插件吗?我前几天迁移完了,感觉还挺不错。
    jiangzhizhou
        57
    jiangzhizhou  
       2023-05-09 23:24:21 +08:00
    我觉得像 java 这种 dependency 乱飞,micro services SOA 的用 vim 是不太方便的。
    第一份工作只能 ssh 写,tmux 感觉比 vim 更加黑科技。
    vs_code 越来越大起来了,感觉之后可能也变成和 jetbrain 一样
    james122333
        58
    james122333  
       2023-05-09 23:31:07 +08:00
    ide 就几个功能比较重要
    查定义 查引用 重构名称 代码格式化 快速开启 全文检索 debug server
    这裏面应该就重构名称和 debug server 比较麻烦
    WispZhan
        59
    WispZhan  
       2023-05-09 23:36:51 +08:00 via Android
    比起 neovim ,还是想等 helix 。
    Kaiv2
        60
    Kaiv2  
       2023-05-09 23:37:58 +08:00   ❤️ 1
    万年 gruvbox 看习惯了。推荐下我打配置 写 java 的小伙伴可以试试我的配置 https://github.com/JavaHello/nvim
    skoofancy
        61
    skoofancy  
    OP
       2023-05-09 23:45:54 +08:00
    @james122333 重构名称不麻烦了,除了 debug server 其他这一趴基本都是 lsp 的事情,现在都可以做得很好。debug 我认为是最大的短板比起一些 ide 。
    skoofancy
        62
    skoofancy  
    OP
       2023-05-09 23:46:59 +08:00
    @Sharenruma 有啊,我在 readme 的插件部分标注,准备迁移到 lazy
    james122333
        63
    james122333  
       2023-05-09 23:59:58 +08:00
    @skoofancy

    lsp 只有在公司用过 所以重构名称要考虑 这东西有时还会抽风
    maleclub
        64
    maleclub  
       2023-05-10 00:13:43 +08:00 via Android
    你个骗子!你个标题党!你个骚货!....不过我就好这口,收藏了,明天部署起来!
    gugu33
        65
    gugu33  
       2023-05-10 00:24:41 +08:00 via iPhone
    按个爪
    DigitalG
        66
    DigitalG  
       2023-05-10 00:29:03 +08:00
    想请教一下,vim 配置(比如修改插件,重写一些 vim 回调)的一些方法。我自己也用 neovim ,也做了很多配置,全部迁移到了 lua 脚本上。经常碰到修改插件的情况,但是我大部分时间还是停留在利用 print 函数,然后看 vim 那个几行的状态栏。有没有什么方便的方法来进行调试 debug 呢?网上找了下,也没找到合适的内容。
    SpiderXiantang
        67
    SpiderXiantang  
       2023-05-10 00:43:28 +08:00 via iPhone
    做了两期 neovim 的视频 大家可以参考一下 中文资源太少了
    P1 从零配置 neovim 成为你的个人开发环境(100% lua) 展示功能 https://www.bilibili.com/video/BV1hP41117rt/?vd_source=5484b15558aa13a4ce6e1915ce86b31e
    P2 从零配置 neovim 成为你的个人开发环境(100% lua) 基础配置+lazy.nvim+colorscheme https://www.bilibili.com/video/BV1DM41137MW/?vd_source=5484b15558aa13a4ce6e1915ce86b31e
    MetroWind
        68
    MetroWind  
       2023-05-10 00:55:38 +08:00
    Emacs 用户飘过~~
    taine221
        69
    taine221  
       2023-05-10 01:09:09 +08:00
    @alfa #12 小小抬杠一下,我是 ctrl + [ 反人类党 /doge
    taine221
        70
    taine221  
       2023-05-10 01:12:04 +08:00
    @MetroWind #68 +1
    Emacs + Evil Mode 我是神用神的编辑器 /doge
    mattxlee
        71
    mattxlee  
       2023-05-10 01:12:44 +08:00
    看了一下你的 plugins 列表,有个问题。既然已经有了 lsp 的一系列的支持,为啥还要单独安装 rust, go 的插件?
    另外推荐 lazygit 。
    ZeroW
        72
    ZeroW  
       2023-05-10 01:54:20 +08:00
    支持,另外 lazy.nvim 和 NvChad 也很好用,可以横向对比一下
    Chingim
        73
    Chingim  
       2023-05-10 07:11:19 +08:00
    @james122333 对我来说, 左边文件树还挺有用的. 我有这些高频使用场景:
    1. 在某个文件夹下创建文件
    2. 移动某个文件
    3. 重命名文件
    4. 直接打开某个路径的文件. 有时候文件名是一样的, 只是路径不同, 这种场景我不想用 telescope 来查找
    ufo5260987423
        74
    ufo5260987423  
       2023-05-10 08:41:32 +08:00
    用 lunarvim 的路过,也是 neovim 的一个配置
    fortitudeZDY
        75
    fortitudeZDY  
       2023-05-10 08:48:44 +08:00
    emacs 老用户漂过,你们 vim 用户玩的 high 就好 :)
    xiaket
        76
    xiaket  
       2023-05-10 08:54:30 +08:00
    翻了一下 git, 发现自己是 16 年就切到用 nvim 了...
    archxm
        77
    archxm  
       2023-05-10 09:24:51 +08:00
    放心,你会回来的。
    wqzjk393
        78
    wqzjk393  
       2023-05-10 09:38:02 +08:00 via iPhone
    mac 终端不支持真彩色啊,这个做了优化么?
    Befehishaber
        79
    Befehishaber  
       2023-05-10 09:43:49 +08:00
    @alfa 笑死
    zhengzhongzhao
        80
    zhengzhongzhao  
       2023-05-10 09:46:37 +08:00
    啥 rust 项目
    akring
        81
    akring  
       2023-05-10 09:53:41 +08:00
    友军厚葬
    itfanr
        82
    itfanr  
       2023-05-10 09:55:28 +08:00
    我以为投靠 vs code 了呢。。。
    psklf
        83
    psklf  
       2023-05-10 10:54:02 +08:00
    go/neovim

    Please
    yangxin0
        84
    yangxin0  
       2023-05-10 11:15:29 +08:00
    紫色的主题,有点晃眼睛。
    freefcw
        85
    freefcw  
       2023-05-10 11:39:54 +08:00
    主题有点太骚了……vscode 下吃不消
    bthulu
        86
    bthulu  
       2023-05-10 11:49:59 +08:00
    能不把所有颜色变量统一到一个配置文件里, 这样我就能搞一个粉红色的主题了
    ndxxx
        87
    ndxxx  
       2023-05-10 13:06:18 +08:00
    很好的分享。不过这个配色真的护眼吗,我多年体验下来开箱护眼的 theme 基本都是 solarized light 这样的配色。
    Oneshu
        88
    Oneshu  
       2023-05-10 15:29:29 +08:00 via iPhone
    😢喂~不是所有基佬都喜欢紫色好伐
    skoofancy
        89
    skoofancy  
    OP
       2023-05-10 17:14:52 +08:00
    @psklf 收到,敬礼
    skoofancy
        90
    skoofancy  
    OP
       2023-05-10 17:16:40 +08:00
    @freefcw 我以前一直用 one-dark ,这么骚的,用都没用过,更别说做一个了。

    这个配色来自团队的基佬,我被强迫用几天后,感觉很香了。哈哈哈哈哈
    jackyxie1
        91
    jackyxie1  
       2023-05-11 10:20:27 +08:00
    我就想知道 github 的贴图里面的字体是什么字体
    skoofancy
        92
    skoofancy  
    OP
       2023-05-11 10:26:14 +08:00
    @jackyxie1 jetbrains mono ,不过我又换到 victormono 了
    james122333
        93
    james122333  
       2023-05-12 21:34:28 +08:00
    @Chingim

    然而熟命令行后这简单的都可以 vi command mode 有档名补全
    chancat
        94
    chancat  
       2023-05-14 18:34:26 +08:00 via Android
    好家伙
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3357 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:04 · PVG 20:04 · LAX 04:04 · JFK 07:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.