背景
写此文档之前,使用vim已经有5年的时间了,知道vim脚本是什么回事,会简单修改,但不会开发。 基本上软件开发, 都使用vim插件,记录文档,也都使用vim。 所以, vim 基本的使用熟练度是有了,宏使用的频率也很高,结合shell命令的操作也让我感受到了vim的高效与灵活。除了使用门槛高,在习惯使用后,个人觉得总体效率还是有所提高的。
门槛高,也是真得高。用了这么长时间, 任一语言的开发环境没搞定, snippet 插件没搞定,学习新插件困难,使用的上的插件也是依着高人 的配置, 达到简单的使用。所以, 现在还不能完全使用vim 进行日常开发。
只能在IDE中使用vim 插件开发。
灵活性, 那也是真得灵活。脚本, 插件可以满足任意的定制, 可玩性很高, 也确实能提高效率。
我个人是推荐学习 vim 的, 那么为何我再使用了五年还是这样的一个水平呢?
主要有两点原因:
学习成本高,特别是对于编程初学者来说,想要搭成一个成熟的开发环境,熟练使用vim, 真不是一天两天就可以搞定的,而我的编程是半路出家,毕业才开始接触,工作还是以生存为主,更主要的任务是学习开发技能,计算机技术要学习的东西太多了,因此工具的首要目标是能用, 后面才是断断续续的注重工具效率的提升。
我往往折腾vim, 有的连续的时间顶多不过2,3个小时,折腾不出个所以然,连个插件都使用不起来,对于断断续续的状态, 目标规划阤不明确, 或因工作deadline压迫,或因自身的懒惰,心态经常失衡,再加上IDE配合vim插件,基本上也能体现到编程打字的快感 ,驱动力不足, 于是慢慢悠悠用到现在, 也还是个半吊子的vim水平。
为何我又要学习vim呢?
最直接的原因是,我在linux下发, 阅读android 源码,环境使用不熟练, 看源码很受限(变量, 函数跟踪不了,调用栈分析不了), 且是服务器环境,靠ssh连接不得不使用vim。 学习图形学,算法的时候,学习其他语言的时候, 写博客,markdown的时候,不想换一个软件又一个软件的。虽然vim还处于半吊子水平, 但是vim确实帮助我提升了效率,带来了爽的体验。
当然学习vim依然有情怀加成,能折腾vim的人, 也必然不怕折腾其他编程技术。
编程的本质是相通的, 折腾vim的过程本来就是学习的过程,学习工具的思想,优化工作流,各种插件工具的学习、开发、定制, 必然会对语言的编译,命令的执行,计算机的原理,程序的本质有更深的了解。
搭环境是是开发的基本功,现在的互联网不鼓励个人英雄主义,主张团队合作。而现实所谓的团队合作大多数都是螺丝钉的活,我觉得这是资本为了规避风险所用的策略。
团队合作当然重要,个人力量有限,很难靠个人力量完成大型系统。但是这个团队必然得有一个掌握大局的人来统筹协作。
虽然是拧螺丝的工作,但是有大局观的团队,在协作拧螺丝的过程也必然更高效。我认为每个人都应该向着统筹大局的能力是扩展提升的。
不管是为了抗风险,还是独立完成一款产品的成就感,全面的个人能力是有必要的。
而vim 折腾就涉及到软件开发的全流程。
VIM虽然是一个上古编辑器,然而它仍然是一个优秀的编辑器,优秀的值得一学的编辑器。
优秀是有门槛的,IDE能满足大部分人的需求, 然而并不能带来极限的体验。当然,可能每个人的极限也不一样,所以,无所谓争哪个编辑器好或是不好。
如何优秀呢?
随着不断的学习, 能不断突破个人的极限体验。当然个人体验嘛也是主观性很强的因素,我也无意于去安利谁去使用vim, 我是遵循适合自己的就是好的这一原则,什么都是工具嘛。
闲话少谈,更多关于软件开发的想法,记录在{% post_link thought/thinking-about-programming %} 里
vim 与 neovim
nvim 是 fork vim 的项目,去掉了gui的代码与历史积累的代码,更加遵重开源的开发方式。 除了配置路径改变了, 绝大多数的配置是通用的, 因此资料可以互相参考。
neovim 是完全兼容vim的, 后续neovim 能不能完全取代vim呢? 虽然现在neovim 在windows上的表现还不是很好,但长久看来neovim 注定是比vim发展快的, 毕竟个人的能力是有限的。
既然neovim 完全兼容vim, 那么基本上同一份配置稍加改动是可以同时适应两个平台的,但是有些后期的插件是基于neovim特有的特性开发的, 并未考虑vim的兼容,这就有些蛋疼了, 由于我目前对windows平台不那么苛求, 所以我的配置对跨平台配置也不强求,依然是以neovim为主。
neovim 是源自vim的,那么,为何不能vim与neovim共用一套呢? 本文主要以分析skywind3000/vim 来学习搭建c/c++ 开发环境,学习vim 配置,然后同时应用于vim 与nvim,记录此思考过程,总结vim 学习更合适的路线。 skywind3000/vim 的配置就是跨平台的,vim, nvim, linux, windows, FreeBSD, 真得是很牛逼了。
经历 Tue May 11 18:52:28 2021 Tuesday
vim 的学习真得是非常折腾,插件,配置,曲曲折折,进展缓慢。
vim学习系列,自从动笔开始, 又过去了9个月,然而我的vim水平进展实在太慢。c/c++环境依旧没有配置好,coc 与 LSP玩了一下,感觉吃力,因此基本上又回到了原来的节奏。
随着时间的推移,东一榔头,西一棒锤地,也看了些vim 的文章或视频,感觉上更熟悉了一些,克服了不少畏惧感,再加上英文的水平有些许进步,看英文文档不再那么吃力了。
因此,再次心血来潮,继续刚一波。
这一次,计划还是按照iggredible/Learn-Vim 通读一遍文档,系统学习之。