使用vim/nvim半年之后,说一些真实的感受

现在我的日常编程工作,已经完全切换至vim+nvim,这一路走来确实不算容易。

第一点,VIM编程体验的好坏是和使用场景相关的。

对于vim,有人吐槽,有人吹捧,按我的经历,vim好不好用取决于使用场景。
我把使用场景分成两个世界。
旧世界:以vim+tag技术为核心搭建方案,适配老的Linux操作系统版本,老的编程环境,比如Linux kernel编程、浏览kernel源码。
新世界:以nvim+lsp技术为核心搭建方案,适合新的Linux操作系统版本,新的编程环境,比如go编程、C++编程。
如果分别两个世界里完成适合的工作,在熟悉vim之后,体验还是不错的,工作效率是挺高的。
如果非要在老的操作系统,比如centos7、oracle-linux7上面搞新世界的那套,那么就会相当折腾,经常遇到问题,让人想要放弃。
关键的兼容性在于nvim+lsp那套程序,大多需要高版本的glibc,这在老OS上难以提供。

第二点,要快速掌握大量的入门和中级操作,达到80分熟练程度,不然难以坚持

我之前长期使用golang和clion,开始切换到vim/nvim是非常不习惯的,原因在于:
vim的操作都是命令和快捷键,如果你不懂某个操作,那就是一筹莫展,不像GUI你还可以点一下菜单找找功能。比如我想把窗口分成两个,在左侧窗口抄右侧窗口的代码,如果不会相关命令,还真不是一下子能搞出来的。
所以呢,如果你之前使用clion或者vscode,熟练程度是100分,那么必须在短时间内熟悉vim大量操作,争取做到至少80分,使得工作效率下降得不那么厉害,才有坚持使用下去的动力。
举个例子,如果只会上下移动、几个模式的简单使用,对于日常编程来说是远远不够的。一些频繁遇到的任务,比如“修改函数的一个参数”,“转到某个结构体的定义处”,“快速切换到想要的文件”,“在函数范围内批量修改变量名称”,“代码格式化”等等,必须要非常熟练地完成,否则开发进度一紧急,就会想要切换IDE了。
要想初步使用vim进行编程,下面几个方面是必须掌握的:

  1. 随心所欲地移动光标。一下子把光标移动到某个单词的前面或者后面。
  2. 随时随地以各种方式进入插入模式
  3. 熟练掌握搜索替换操作和命令
  4. 熟练掌握多个文件(buffer)的跳转
  5. 熟练掌握窗口操作
  6. 熟练掌握标签、跳转操作
    我是买了两本vim的书,利用春节前的时间大量练习,度过了不适应期。

第三点,熟练掌握vim是一种另类的使用体验

网上不少UP主都非常推崇vim,让人觉得vim是神一般的IDE,还自带神秘色彩。
诚然,在某些方面,它确实不错,特别是要完成重复动作的场景,效率确实很高,有比其他IDE要优秀的地方。
但是有个使用体验必须要提一下,就是它比其他直观的IDE要多耗费一点脑细胞:使用者要去考虑如何高效地完成想要做的动作。即,要对编辑操作进行“编程”。
比如,我想要对每一行的尾部都加上一个分号,那么要这么想:先对某一行构建一个原子操作,即按A去到行尾并进入插入模式,输入分号,ESC退出插入模式,这个原子操作就构建好了;这是移动到下一行,按.号重复这个原子操作。
好了,那如果我要每一行的头尾都加上一个双引号,该怎么操作呢?是不是又得在脑袋里先想想了?——如果是一般的IDE,就不会想了,很可能就是重复使用HOME/END键处理。
如果编辑操作都要在脑子里编程的话,在日常的coding工作中,就会有思路被打断的感觉:我一会在构思代码,一会在构思vim操作。
比如,我想把common目录下,所有的.go文件的开头一行“package base”改成“package common”,该怎么做呢?你隐隐觉得,vim肯定是有应对如此场景的一句简单的命令,偏偏自己不知道,哎。这时是要百度一下呢,还是将就一点,手工在每个文件都执行一下s命令呢?无论如何,思路就被vim吸引了,而不是在自己的项目上了。
再一个使用体验就是,vim的操作思维是有点特别的。
比如,我想把“单词A”复制一下到粘贴版,然后用它来覆盖“单词B”,这在一般的IDE是非常常见的操作,就是鼠标选中,ctrl+c,然后再鼠标选中目标单词,ctrl+p。想想vim怎么做呢?比较舒服的做法是yiw选中前者,然后viwp覆盖后者。这个答案有两个点要提:一是新手未必能想到;二是只能粘贴一次,如果你再想用单词A覆盖单词C,那么viwp结果可能出乎意料,这时候就要使用"ciw<C-R><C-0>"。想要明白这串命令的意思,就得明白什么是复制专用寄存器。我当时的感觉就是:我为了用冰箱,我得学会制冷。

第四点,vim的“技术底座”很重要

为了vim用得更爽,一些周边的工具是必不可少,我的命令行技术栈包括:

  • zsh->oh my zsh->power 10k ->插件包括:autoenv git zsh-syntax-highlighting zsh-autosuggestions copyfile copypath copybuffer fd aliases alias-finder sudo
  • ripgrep 代替grep的工具
  • fd 代替find的工具
  • fzf 模糊搜索工具
  • yazi命令行文件浏览器

第五点,插件的运用要节制

网上有很多vim/nvim套装,就是vim+一堆插件,如果一个新手一上来就直接使用这些套装,不一定是个入门的好办法。原因在于:

  1. 你的OS版本未必顺利跑得起这些套装。只要有一两个插件经常报错,就会让人心烦意乱。
  2. 不会用也不会配置插件,分不清哪个功能是哪个插件提供的,旁边找不到人问,帮助文档在哪里又找不到。无从入门。
  3. 套装的快捷键太多。一不小心按错了,产生的后果不知道如何恢复。

相反,如果每个插件都是自己找回来安装上的,每个插件的使用自己都熟练,则会非常爽,出了问题自己也能搞定,有种掌握一切的感觉。

第六点,欲速则不达的心理建设

说实话,这是我生命中第三次尝试转vim,前面两次都失败了。
如果你想在一个星期内精通vim,那么你可能半年也精通不了。
如果你想在半年精通vim,那么你三个月内就可以做到。
一点一点,利用零碎时间,从每一个微小的操作开始学起。

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值