主要观点总结
本文讲述了作者从初次接触Vim编辑器到最终精通Neovim的曲折历程。作者通过不断尝试、学习和实践,最终掌握了Vim并成为了酷炫的Vim用户俱乐部的一员。
关键观点总结
关键观点1: 文章主要描述了作者学习Vim编辑器的过程。
包括初次接触时的困惑和失败,第二次尝试时的坚持和挫败感,以及最后一次机会的成功和全面切换。
关键观点2: 作者在学习的过程中遇到了很多挑战和困难。
如记忆按键组合、理解插入模式、删除操作、跳转等,但通过不断练习和学习,最终掌握了Vim的基本操作。
关键观点3: 作者最终掌握了Neovim并成为了酷炫的Vim用户俱乐部的一员。
他通过自定义配置、学习Lua、使用插件等方式,实现了快速导航代码、高效工作,并享受到了使用Vim的乐趣。
关键观点4: 作者认为学习Vim是他一生中最好的选择之一。
他认为掌握Vim可以提高工作效率,并且让他加入“Unix即IDE”运动,提高了自己的技能水平。
正文
本文经授权转自公众号CSDN(ID:CSDNnews)
作者 | Emanuel Cepoi,译者 | 弯月
【编者按】本文讲述了一位程序员从初次接触到最终精通 Vim 编辑器的心路历程。16岁时,作者因一段视频中展示的高效编码方式而对 Vim 产生了兴趣,但由于 Vim 的学习曲线陡峭,初次尝试便以失败告终。五年后,作为一名专业软件工程师,作者再次受到 Vim 的吸引,决定尝试 Neovim,一个基于 Vim 的增强版本,但仍然因不适应而放弃。
原文链接:https://emanuelcepoi.com/preview/66785dd2d3170dd0332a47d9
16岁的时候,我观看了一段视频。屏幕上是一个终端画面,光标来回跳跃,却总是精准地落到需要的位置,而鼠标根本没用到。我非常惊讶。我从未见过有人通过终端窗口编写代码,作为一个 VS Code 用户,我写代码的速度从来没有那么快。在那一刻,我知道我必须试试看视频作者使用的工具。我渴望自己也能达到那种酷炫的水平,但没想到我花费了六年之久才做到了。四处打听之后,我才了解到视频作者使用的是vim。他使用的是纯vim,零插件,甚至连 LSP 都不用。深入挖掘下去,我偶然发现了“Unix即IDE”的概念,我被吸引住了。1、初次接触
我上网搜索了一番如何安装vim,却发现我的机器已经预装了。于是,我满怀激动地在终端上运行了 “vim”。但几秒钟后,我发现一切都很奇怪。我不知道如何通过键盘输入,也不知道如何打开文件,什么都做不了。沮丧涌上心头,我决定关闭终端。然而,我甚至不知道如何关闭。最终,我不得不上网搜索 “如何关闭 VIM”。令我惊讶的是,StackOverflow 上关于这个问题的浏览次数高达几百万。至少我不是唯一一个感到困惑的人。我继续搜索,然后发现了 vimtutor。于是,我尝试了 vimtutor,事前逐渐有了眉目。我可以输入一些内容,并使用 hjkl 移动光标了。我花了不到一天的时间粗略学习了一下vimtutor。尽管仍然感到困惑,但我相信通过练习,我会变得更好。记住这些按键组合很难,hjkl 使用起来感觉也很奇怪。不同的插入模式令我很不解,什么时候应该按 "i",什么时候应该按"I"?为什么删除会覆盖我的剪贴板?如何更高效地跳转?我的速度非常慢,这令我很厌烦,我希望加快速度。第二天,我再次尝试,却发现前一天学到的知识几乎都不记得了,沮丧之余,我又过了一遍vimtutor。但我依然很乐观,坚持下去,我一定能掌握vim——至少大家都是这么说的。2、第二次机会
5年后,我成为了一名专业的软件工程师,我所钟爱的写代码已成为我的职业。每天我都会写代码,而且是 IntelliJ 的超级粉丝。我所有的工作都依赖IntelliJ:前端开发、移动开发和后端开发(不是 Java)。这款工具非常棒。而我的生活也顺风顺水。然而,我总感觉缺了些什么。写代码时,我依然使用鼠标,而且我也没有成为酷炫的 vim 用户俱乐部的一员。虽然我略懂一点 vim,偶尔可以在服务器上编辑文件,但还不足以取代 IntelliJ,也不足以炫耀“我会用 vim”。再次尝试vim的想法一直在我脑海中徘徊,但五年前那段难忘的经历仍然困扰着我。偶然间,我在观看一段直播时注意到作者也在使用vim,这让我想起多年前自己也曾尝试。看着他轻松地在代码间跳转,并使用各种疯狂的快捷键,我意识到他是一个真正的 vim 爱好者。于是,我决定尝试 Neovim。上网搜索了一番,我发现这是一个改进版,支持 Lua。虽然我不懂 Lua,但乍一看似乎比 VimScript 更容易。这次,我决定聪明一点,使用预配置的选项,因为自己写配置似乎仍然不可能。我下载了 https://astronvim.com/,并试了一下。我拥有了一个功能齐全的 Neovim 配置。我有一个文件树,可以搜索内容,打开文件,而且还能导航,尽管很勉强。我感觉自己在进步,不是吗?我试着在工作中使用这款工具,却发现简直不可能。与 IntelliJ 相比,Neovim 的设置感觉很奇怪。重构功能在哪里?如何更快地搜索文件?如何只搜索最近打开的文件?如何重命名文件?为什么自动导入不起作用?还有,为什么 hjkl 这么烦人?为什么我总是记不住这些按键?我再一次倍感沮丧。我只是想做好自己的工作,但根本不行。我太慢了,我不能占用大量工作时间来尝试这个工具,而且astronvim的设置感觉非常臃肿。3、最后一次机会
两周后,我注意到越来越多的主播在使用 Neovim。虽然我还未能掌握这项炫酷的技术,但我有了再次尝试的动力。这一次,我决定动动脑子。我不打算使用Astronvim之类的发行版。我在网上搜索了一下,了解到我可以在 IntelliJ 中使用 Vim 键绑定。IdeaVim 拯救了我。这真是个好消息。我不仅可以拥有IntelliJ 所有优秀的功能,同时还能使用 Vim 在代码中跳转。我记得,使用vim的大部分挫败感都来自我没有掌握基本的操作,比如 gtd(转到定义)、gtr(转到引用)、查找所有引用以及全局重命名等。使用带有 Vim 键绑定的 IntelliJ 是一个很好的思路,我可以使用IntelliJ处理所有 LSP 任务,同时使用Vim快速导航代码。结合使用IntelliJ和vim操作的第一天,我的工作速度非常慢,一切仍然令人沮丧,但我知道这是暂时的。磕磕绊绊地度过了第一天,在 IntelliJ 中使用vim确实帮助很大。第二天,我开始适应了。我掌握了hjkl 的用法了,不再混淆。我在进步,并且有动力继续下去。4、全面切换
大约在 IntelliJ 中使用 Vim 两个月后,我的速度明显提升了。我可以迅速地导航代码,有时IntelliJ甚至跟不上我的节奏(可能是因为它是用 Java 写的)。我已经熟练掌握了垂直移动和水平移动,在引号和括号内跳转。我发现了 F 和 T 操作,而且我会在每个应用程序中寻找 "Vim 模式"。十六岁的我一定会为现在的自己感到骄傲。但我仍然不是酷炫的 vim 用户俱乐部的一员。所以我决定再给 raw nvim 一次机会,但这次我准备聪明一点。