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

使用 Vim/Nvim 开发三年了

  •  1
     
  •   jdhao · 181 天前 via Android · 9392 次点击
    这是一个创建于 181 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用 Nvim 做开发三年多了,从完全不会到游刃有余,最大的乐趣就在于根据自己的需求,迅速用脚本来实现,自己掌控使用的工具的感觉很爽。

    写了一篇长文,作为回顾 https://jdhao.github.io/2021/12/31/using_nvim_after_three_years/
    第 1 条附言  ·  180 天前
    我的 nvim 配置参见这里,文档详细,欢迎使用 https://github.com/jdhao/nvim-config
    133 条回复    2022-01-27 17:43:14 +08:00
    1  2  
    leonme
        1
    leonme  
       181 天前 via iPhone
    英文博客,中文评论,有点不太和谐啊……
    jdhao
        2
    jdhao  
    OP
       181 天前 via Android
    @leonme 别用什么语言评论,我就用什么语言回复🐶
    jdhao
        3
    jdhao  
    OP
       181 天前 via Android
    @jdhao 别用 --> 别人用
    junnplus
        4
    junnplus  
       181 天前
    算起来,我应该使用快 8 年了😂
    jdhao
        5
    jdhao  
    OP
       181 天前 via Android
    @junnplus 前辈了,目前用 Vim 还是 Neovim ?😅
    junnplus
        6
    junnplus  
       181 天前
    @jdhao 去年 nvim 0.5 开始就全部迁移到 nvim 了,vimscript 太难受了
    dangyuluo
        7
    dangyuluo  
       181 天前
    I 开头的句式太多了,尝试一下别的风格
    jdhao
        8
    jdhao  
    OP
       181 天前 via Android
    @junnplus 赞,我目前还是 vim script 和 lua 混合的...
    461da73c
        9
    461da73c  
       181 天前
    15 年的飘过。
    jdhao
        10
    jdhao  
    OP
       181 天前 via Android
    @461da73c 比我开始编程时间还要长。。🌝
    kindjeff
        11
    kindjeff  
       181 天前
    2017 年开始完全用 vim 写代码,2020 年初换成 neovim ,但是还是离不开 vscode (写 md 和 debug go 代码)。最近用 vimspector 搞定了 go 的 debug ,很久没有启动 vscode 了。
    jdhao
        12
    jdhao  
    OP
       181 天前 via Android
    @kindjeff 我一般 print 大法 debug ,debug 也可以用 nvim-dap ,据说不错,还没有用过。写 markdown 我用 ultisnips (snippet 插入)还有 markdown-preview.nvim (文档预览)。
    yuhangch
        13
    yuhangch  
       181 天前
    在等个契机。。现在依赖 ide 是因为刚参加工作,代码水平还很嫩,但现在也是重度 vim 依赖了,我想未来估计也会从 ide vim 插件转到 vim 吧
    EyebrowsWhite
        14
    EyebrowsWhite  
       181 天前 via iPhone
    最近在学 vim ,想问问老哥会改一些键位吗,比如把大小写改成 esc
    kindjeff
        15
    kindjeff  
       181 天前
    @jdhao #12 看你的文章在使用 vista ,我之前也用。但是我没有把所有 tag 列出来的需求,就是想要在 statusline 展示当前的标记,vista 这一点做的不是很好,所以最近改用了 nvim-gps ,推荐一下。
    jdhao
        16
    jdhao  
    OP
       181 天前 via Android
    @kindjeff 现在因为用的少了,vista 主要可以列出所有 tag ,对代码不熟的时候,可以比较快概览大体结构,有一定帮助,其他时候用 LeaderF 的 tag 功能或者直接 LSP 跳转
    jdhao
        17
    jdhao  
    OP
       181 天前 via Android
    @yuhangch 写 java 大家还是推荐 ide ,其他语言用 vim 没问题
    jdhao
        18
    jdhao  
    OP
       181 天前 via Android
    @EyebrowsWhite 这个和 vim 没关系,你要把 caps 映射到 esc 应该需要一些系统软件,win 上 用 AutoHotKey ,mac 上用 karabiner elements ,linux 好像可以修改什么配置来着,没实践过
    mekingname
        19
    mekingname  
       181 天前
    请问你用 nvim 的时候,是只写代码,不写其它东西吗?我曾经尝试过使用 vim 来写文章,但频繁切换输入法的中英文状态确实太麻烦了。写中文的时候,要使用 normal 模式输入一些命令,必须切换成英文输入法。命令执行玩了以后,要切换回 insert 模式,然后又要切换一次输入法。
    ChrisFreeMan
        20
    ChrisFreeMan  
       180 天前
    我能轻松的使用 vim 还要感谢 coc.nvim 提供的绝大部分特性,以及简单无脑的配置,感觉离不开 coc.nvim 了
    oneegg
        21
    oneegg  
       180 天前 via iPhone
    14 年开始使用 vim ,写 php 和 go 一直没问题,去年开始写 java ,只能用 idea ,一直没有找到合适的 vim 补全 java 的工具(像 idea 那种,用过 nvim 和 eclim ,感觉都不如 idea ),求助,想知道是之前用法问题还是怎么回事?
    xhinliang
        22
    xhinliang  
       180 天前
    @dangyuluo 能用纯英文写作已经很不错了.......
    jdhao
        23
    jdhao  
    OP
       180 天前 via Android
    @mekingname 写啊,文档什么的都用 nvim 来写,你需要自动切换输入法的插件,帮你自动切换输入法,https://jdhao.github.io/2021/02/25/nvim_ime_mode_auto_switch/
    jdhao
        24
    jdhao  
    OP
       180 天前 via Android
    @ChrisFreeMan coc.nvim 的确强悍,不过我目前还是选择使用 nvim 内置 lsp ,配好了也不错
    jdhao
        25
    jdhao  
    OP
       180 天前 via Android
    @oneegg Java 也有 language server ,不过据说体验还是不如 jb 的 idea ,所以大家还是推荐用 idea 写 Java
    mekingname
        26
    mekingname  
       180 天前
    @jdhao 好东西,3x
    lfcyme
        27
    lfcyme  
       180 天前
    同用 3 年了 vim + ycm -> nvim + coc -> nvim + lsp.

    也慢慢从 vimscript 换成了 lua 配置
    xi4oh4o
        28
    xi4oh4o  
       180 天前
    @EyebrowsWhite 我是把 ESC map 到 jk 上了

    imap jk <esc>
    lingxi27
        29
    lingxi27  
       180 天前
    我这种懒人也就用用 ideavim 了
    ALVC666
        30
    ALVC666  
       180 天前
    @lingxi27 +1 ideavim 配置一套 ideavimrc 就够用了
    别的感觉折腾成本有点高
    而且我只是一个前端+拉胯后端 所以就没继续了
    oneegg
        31
    oneegg  
       180 天前 via iPhone
    @jdhao eclim 就是这个逻辑,但是补全还是太难受了……
    skiy
        32
    skiy  
       180 天前
    一直用原生的 vi/vim ,不是我不想用 VIM ,而是不太会用(快捷键有点多)。还有一个就是插件问题。
    ccvzz
        33
    ccvzz  
       180 天前 via iPhone
    nvim 新手,前段时间在油管上( https://youtube.com/playlist?list=PLhoH5vyxr6Qq41NFL4GvhFp-WLd5xzIzZ )看到一个全 lua 配置的,目前在慢慢适应中(内置 lsp 相关的配置还有点不太懂
    oneegg
        34
    oneegg  
       180 天前 via iPhone
    @jdhao 但是 idea 启动太重了,没有 nerdtree 之类的工具,很不爽
    KousukeSakurako
        35
    KousukeSakurako  
       180 天前
    好文, 订阅了
    jdhao
        36
    jdhao  
    OP
       180 天前 via Android
    @skiy 快捷键先掌握最常用的移动加编辑,另外也可以自己 mapping ,需要一个过程,熟悉以后就很快了。
    插件可以看看大家现在都用什么插件,自己试试看哪个合适自己,现在 nvim 基于 lua 的一些插件都挺不错的
    jdhao
        37
    jdhao  
    OP
       180 天前 via Android
    @ccvzz 内置 lsp 要配合 nvim-lspconfig ,再加一些补全插件,补全用 nvim-cmp 全家桶 https://github.com/topics/nvim-cmp
    xiangchen2011
        38
    xiangchen2011  
       180 天前
    订阅了楼主的 rss ,假期看到了更新,然后下定决心学习 neovim ,鼓捣了两天,放弃了。什么 Nvcard ,Lunar Vim ,太复杂了,还是 Vscode 适合我,所见即所得
    DrakeXiang
        39
    DrakeXiang  
       180 天前
    学习了 `gn` 命令😃 vim 模式也用了差不多 4 年多了,不过一直是在 atom/vscode 上,一些操作感觉还是变不过来,主要是文件的浏览和管理,还有文件的滚动浏览感觉用鼠标滚动顺滑点,键盘滚动经常跳得找不到上次看到哪了。
    Volekingsg
        40
    Volekingsg  
       180 天前
    算起来我用 Emacs 第四个年头了
    konakona
        41
    konakona  
       180 天前
    谢谢分享,进去后发现自己根本看不懂默默退出。
    anonydmer
        42
    anonydmer  
       180 天前
    浏览器上目前 chrome 和 firfox 都装的 vim 插件
    vscode 用的 neovim 插件
    写 java 时候用 idea ,装的那个 IdeaVim 的插件
    FightPig
        43
    FightPig  
       180 天前
    外观党从 textmat->sublime->atom->vscode
    nobodyknows
        44
    nobodyknows  
       180 天前
    咕宝,我之前换到 init.lua , 用了 paq ,总感觉启动有点慢,怎么排查?
    yujinchn
        45
    yujinchn  
       180 天前
    倒是希望有大佬出一篇 ideavim 键盘流,解决一部分冲突按键,单纯 vim 就算了,折腾配置太麻烦
    jdhao
        46
    jdhao  
    OP
       180 天前 via Android
    @nobodyknows nvim --startuptime time.log 看看 log 里面各种文件加载耗时
    molika
        47
    molika  
       180 天前
    @oneegg 写 java 只能 ide 了 之前 all in emacs 自从写了 java 就废了。
    creanme
        48
    creanme  
       180 天前
    请问楼主用 vim/nvim 开发啥语言?
    jdhao
        49
    jdhao  
    OP
       180 天前 via Android
    @creanme 主要写 python ,平时自己也写点 cpp 练手
    bailitusu
        50
    bailitusu  
       180 天前
    VS code 远程开发可以同时满足图形化界面+代码同步+远程调试的需求。
    jdhao
        51
    jdhao  
    OP
       180 天前 via Android
    @bailitusu 有跳板机就死了。。只能试用于可以 ssh 直连的场景
    thuang
        52
    thuang  
       180 天前
    博客很赞。
    AEDaydreamer
        53
    AEDaydreamer  
       180 天前
    目前在用 vscode 下的 vim ,准备慢慢迁移到纯 nvim
    freedomSky
        54
    freedomSky  
       180 天前
    有没有 java 选手常年在 emacs 下开发的
    xunandotme
        55
    xunandotme  
       180 天前
    17 年菜鸟 vim 路过 yy p
    2123123
        56
    2123123  
       180 天前
    Vim -> Sublime -> Atom -> VSCode ,一直用的 Vim mode ,也没发现什么非得原生 Vim 才能做或者做得更好的场景,希望各位能分享下原生 Vim 特别的使用方法或者限定插件什么的。
    justfly
        57
    justfly  
       180 天前   ❤️ 1
    8 年 vimer 了吧,曾经也想换 VSCode ,都没能成功,主要还是喜欢在 terminal 内搞定一切。

    而且,现在的 NeoVim 也不是当年的 vim 了,用了 lsp 和其他不到 10 个插件,日常工作也就满足了。现在的插件也全 lua 了。

    fuzzy finder 我倒是从 LeaderF 切到了 telescope 了,主要是不想依赖外挂 python 了。
    wellsc
        58
    wellsc  
       180 天前
    Help poor children in Uganda!
    joshua7v
        59
    joshua7v  
       180 天前
    我应该也有 10 来年了
    中间 coc.nvim 出来后是质的飞跃
    skiy
        60
    skiy  
       180 天前
    @xunandotme 我还多几个:G,nG,dd,x,:%s###g 。哈
    repus911
        61
    repus911  
       180 天前
    vim 第九年,不过最近两年会用 vscode 写写 go ,主要是折腾的少,找些现成的插件和配置就没怎么改过
    noyle
        62
    noyle  
       180 天前
    @wellsc 这是什么梗啊?
    quqiu
        63
    quqiu  
       180 天前
    楼主锤粉嘛
    linghutf
        64
    linghutf  
       180 天前
    已经 vim 写代码快 10 年了
    jdhao
        65
    jdhao  
    OP
       180 天前 via Android
    @2123123 可以看一下这里的插件有没有需要的,https://github.com/jdhao/nvim-config/issues/15
    jdhao
        66
    jdhao  
    OP
       180 天前 via Android
    @joshua7v nvim 使得 coc.nvim 出现有了可能,也推动了 vim 更新
    jdhao
        67
    jdhao  
    OP
       180 天前 via Android
    @noyle vim 打开首屏就是希望用户帮助 uganda 儿童
    jdhao
        68
    jdhao  
    OP
       180 天前 via Android
    @quqiu 特师粉,靴靴😂
    auvt
        69
    auvt  
       180 天前 via iPhone
    @jdhao lz 竟然是特师粉😆请教一下,我想用 vim 看小说,但有个问题是:一整屏的内容,屏幕最下方的一段,经常显不不完,但一翻页,这一段又要从第一行开始显示,而不是接着上一页断开的那行,所以特别崩溃……大神有办法喵?
    jdhao
        70
    jdhao  
    OP
       180 天前 via Android
    @auvt 发一个你的小说文本链接,我研究一下,我记得你好像问过这个问题,scrolloff 这个选项似乎能解决。
    onlyhuiyi
        71
    onlyhuiyi  
       180 天前
    就我想知道楼主怎么学英文写作的么~
    jdhao
        72
    jdhao  
    OP
       180 天前 via Android
    @onlyhuiyi 无它,唯手熟尔😅
    cond0r
        73
    cond0r  
       180 天前
    刚开始用 vim 三个月,实际上直接是 spacevim 一把梭

    对我来说最大的好处就是无论我在哪里,ssh 链回家都可以开撸代码
    hanxiV2EX
        74
    hanxiV2EX  
       180 天前 via Android
    此处分享一波配置文件

    https://github.com/hanxi/dotfiles
    jdhao
        75
    jdhao  
    OP
       180 天前 via Android
    @cond0r spacevim 搞了很多自己的东西,建议熟悉 vim 以后自己慢慢搞属于个人的配置。
    cond0r
        76
    cond0r  
       180 天前
    @jdhao #75 是啊,不过对于我这种新手先浅尝一下 vim 的身体,再慢慢细品他的灵魂
    littlewing
        77
    littlewing  
       180 天前
    写 modern c++ 还是得 IDE
    leipengcheng
        78
    leipengcheng  
       180 天前
    (⊙﹏⊙) 还是感觉 ide 写的轻松,我是菜鸟
    jdhao
        79
    jdhao  
    OP
       180 天前 via Android
    @littlewing 配好 LSP (clangd 或者 ccls) 也不错,高亮可以用 treesitter
    MOONLIGHTT
        80
    MOONLIGHTT  
       180 天前
    因为不想用 GDB ,转 jb 全家桶了。。。。
    ahonn
        81
    ahonn  
       180 天前 via iPhone
    这么一说,我也用 Vim 好几年了,2017 年开始用的。Neovim 0.6.0+ 确实不错,非常的顺滑。最近正好也在把配置改成 lua ,参考下你的。

    另外,博客主题看着非常眼熟 哈哈哈
    jdhao
        82
    jdhao  
    OP
       180 天前 via Android
    @ahonn hugo even theme
    bigxianyu
        83
    bigxianyu  
       180 天前
    想问两个问题:
    1. 从开发效率上比 idea 高吗?
    2. 有哪些独特的优势 ?
    jdhao
        84
    jdhao  
    OP
       180 天前 via Android
    @bigxianyu 1 ,没用过 idea ,写 java 似乎不如 idea 。
    2 ,最大优点就是可以利用编辑器 api 自己实现需求,只有想不到没有做不到,极度可定制化。另外,启动速度飞快(小于 200ms),操作丝滑,编辑效率远高于鼠标点点点
    bigxianyu
        85
    bigxianyu  
       180 天前
    @jdhao 嗯,很早以前很 vim 的时候,是有这种感觉,摆脱了鼠标,随心所欲 ( 很快 ) 的感觉 ,不过主要都是在服务器上搞 .
    rioshikelong121
        86
    rioshikelong121  
       180 天前
    没图呢.
    auvt
        87
    auvt  
       180 天前 via iPhone
    @jdhao @jdhao 手动捂脸,又是我😂我想想,好像任意一个 txt 都这样,您看看这个行么〔 pan.baidu.com/s/1slJ5ntF 〕发现在 mac 上,如最后一段显示不完,它宁愿空着也不会只显示一半。但在 termux 和树莓派上,就是显示半截😆看来钱没花到位是关键😁
    shihira
        88
    shihira  
       180 天前
    firefox 用 tridactyl ,笔记用 obsidian with vim bindings ,好多方面都离不开 vim 了

    10 年 vimer 了,看着它从只能用 ctags 补全,到有 ycm ,到有通用的 lsp 。
    曾经很依赖 NERDTree ,TagList 这种有几十年历史的著名插件,现在都不用了。
    曾经追求纯 vimscript 配置,现在被迫用着一大堆 python+lua+js/ts+rust 插件。
    看着 neovim 分裂出来,又反哺到 vim8 里。
    看着社区里从几乎没有中文开发者,到中文开发者的变得举足轻重。

    但到现在还是没有好用的调试器方案+1
    jdhao
        89
    jdhao  
    OP
       180 天前 via Android
    @rioshikelong121 配置仓库有一些目前使用插件的配图
    jdhao
        90
    jdhao  
    OP
       180 天前 via Android
    @shihira 调试现在就 vimspector 和 nvim-dap ,还有 nvim-gdb 之类的,要看你用的语言是什么。
    dearrrfish
        91
    dearrrfish  
       180 天前
    @jdhao #51

    需要跳板机也是可以的,我目前使用还没遇到太大的问题

    ProxyCommand ssh -W %h:%p jump-box
    shihira
        92
    shihira  
       180 天前
    @jdhao 就 c++。vimspector 用过了,在 windows 上不 work
    jdhao
        93
    jdhao  
    OP
       180 天前 via Android
    @shihira Windows hard 模式,对开发太不友好,我一般用 Linux 开发
    mrzhangrb
        94
    mrzhangrb  
       179 天前
    手持 Emacs+doom 看帖,安利一波 emacs 写 java 也很香
    jdhao
        95
    jdhao  
    OP
       179 天前 via Android
    @mrzhangrb 秀儿,😂 Emacs 确实在 GUI 很强,不过编辑还是 Vim 强,evil 是模拟 Vim
    KentY
        96
    KentY  
       179 天前
    用 vim 16 年, 去年年初才换到 nvim 开始试用, 主要是因为担心迁移成本。 用了一年大部分脚本还可以用。
    从来没有写一篇总结的念头。。。 太懒, 太嫌麻烦了, 各种纷繁的配置太多了,还有好多是符合个人主观使用习惯和需要的。
    感谢 lz 的总结跟分享。
    有过经常跟周边的同事推荐 vim 的阶段,大概是用了 4 ,5 年那阵子, 后来就再不会有这种想法了, 想起当时自己那个热衷劲儿, 今天想起来有点可笑。不过我想大多数人可能都有过吧。
    KentY
        97
    KentY  
       179 天前
    @shihira obsidian vim binding 不如直接用外部编辑器(vim)打开编辑痛快
    KentY
        98
    KentY  
       179 天前
    @yujinchn ideavim 设置起来还算容易。 老版本可以直接使用 vimrc , 从某一次升级后有些问题, 但是 cp paste 以后就好了。 而且有冲突都会问你用哪个。 如果你喜欢看文章的, 这有一篇我觉得还行的 https://danidiaz.medium.com/configuring-ideavimrc-de16a4da0715
    jdhao
        99
    jdhao  
    OP
       179 天前 via Android
    @KentY 如果只是用 vim script 配置,从 vim 切换 nvim 几乎没有成本,两者高度兼容,打算用 lua 的话,区别还是比较大的。
    我一般不会主动向同事推荐用 vim ,感觉大部分人都习惯不了纯键盘操作。
    KentY
        100
    KentY  
       179 天前
    @jdhao 我记得几年前我曾经装个 nvim 试过, 用我的 vim 配置试用的时候的确有"不正常"现象, 我的配置虽然不是最多的,但是应该不算少的(大概 1k 来行), 本来就是好奇看看 nvim 那时候对于我是不是一个可用的状态了, 没打算正式转换, 所以就没下功夫去研究解决那些问题.

    去年初又试了下, 用了几天下来只有零星小问题, 就继续用了, 而且一些插件比 vim 的好用一些, 让我删掉了不少配置, 就一直用下来了, 随着更新, 还有一些我的脚本出现小问题, 比如 default-mapping 那个 Y, 让我的一些函数工作不正常了, 但是原因也很容易找到. 现在用的还不错.

    ps, 我看你的名字好像在 SO 上见过, 也许记错了.
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3455 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 111ms · UTC 05:31 · PVG 13:31 · LAX 22:31 · JFK 01:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.