为了账号安全,请及时绑定邮箱和手机立即绑定

从恐惧到精通:我与Vim的和解之旅

这不仅仅是一款编辑工具;这不只是像你我这样的家伙

图片来源:programmerhumor.io,如图所示。

嘿嘿…… 开始吧。我差不多已经写了快十年的代码了。对于那些每天花三分之二时间写代码的人来说,工具链真的很重要。让我们一起回顾一下过去。这篇文章会有点不一样。

声明:今天的内容会比较主观,请保持开放的心态。

大概在2010年——初级水平

Baby Steps into Data Science 04 — Programming: Introduction to R | by  DataRegressed Team | DataRegressed | Medium

图片来源于:seekpng

我在用 Notepad++ 學習 Java 程式設計時,還是一個對這方面一竅不通的小白。當時甚至不知道編輯器是什麼,對我來說,它就像是記事本多了一些按鈕。Notepad++ 是一個文本編輯器。

重点在于学习编程,而不是 DX(开发体验,Development Experience)。唯一让我感兴趣的是,通过按功能键就能运行代码,这大大超过了在记事本里写代码再用 Windows 命令行运行的体验。

关键点:
  • 能有个地方大家一起写代码、运行代码真是不错。
两年之后——日蚀

我现在已经可以用几种语言进行还算不错的编程了。我正在读的一本书推荐了下一个新玩意儿,那就是Eclipse。Eclipse确实正中下怀,真的是太对胃口了。第一次,我发现工具链变得让人上瘾。不用深入了解构建和执行系统就可以编写、构建和运行那些Java Swing应用程序,这种感觉简直……太爽了。

互联网还没那么普及,所以我经常通过查阅线下文档来查资料。有时候会觉得很麻烦,但没有别的办法只好硬着头皮上。第一次遇到软件不像之前那样好用时,那时候还不知道IDE这个词。只知道Java运行在数十亿设备上,必须得好好学学它。

要点:
  • 你的软件如果能自动处理配置就更好了。
  • 如果它还能提示你接下来应该写什么就更棒了。
2014 — 遇到了 Linux 和 Vi

Big dog = Linux. Says, “I also run on a piece of break from last week.” Small dog = Windows 11. Says, “Your CPU is not of the latest generation. Please click here for more information.”

图片来自:9gag.com

我刚买了一台新的蓝色笔记本电脑。贴了一张写着“Ubuntu”的标签。这到底是什么东东啊?那张盗版Windows的DVD呢?让我激动得不得了的是那本关于Unix的书。我在学校图书馆找到了这本书。我决定永久转向Linux,并从那以后再也没碰过Windows了。

我搞不懂为什么网上的怪人总是推荐使用一个叫VI的东西来编辑一些随机配置文件。谁会专门打开终端,导航到某个文件,然后进入那个让人无法退出的诡异vi编辑器呢?

可惜,这是大学课程的一部分,我不得不使用它写作。好在,按一下‘i’键,vi就进入了“正常”模式。我非常讨厌它,所以我写了一个gedit配置,这样一来,我的教授以为我是在终端编程。

要点.
  • 不要硬推某个产品或结果。你可以分享一个想法,看看大家有没有共鸣。
  • 每个开发者都应该使用Linux。绝对没有例外。我也认为macOS是一个Linux发行版。
2017 — 编码的艺术

Bernie Sanders meme. Me: hits ctrl + s twice Sublime text: I am once again asking for your financial support

图源:ProgrammerHumor (一个程序员的幽默网站,来自Reddit的帖子)

现在,事情开始有了头绪。我确定了自己的职业道路,成为一名网页开发者,这条路就是开发网站。又一次,我参考的那本书告诉我,Sublime 是下一个新宠。哎哟!我也跟上了这波潮流。

它有一种特别贴近我内心的感觉。我在设置文件上整整花了一周时间调整。把一个JSON文件拷贝到U盘上,就能让朋友的电脑变得和我的一模一样,这种体验简直像是施了魔法一样。低调的配置文件,嘿嘿嘿。

从那时起,我的 Sublime 开始看起来与普通用户使用的不太一样。直到今天,我还是一个死忠的定制狂热者。是的,我已经对那个让我买 Sublime 的弹窗免疫了,就跟老式的 WinRAR 一样。

重点
  • Sublime 对它可以做的那些事情来说运行得非常快。
  • 它唯一被认为“失败”的原因是因为 VS Code 具有相似的功能定位、公司支持以及出色的社区支持。开发者转向了 VS Code,而没有人会为他们自己不使用的软件开发工具。尽管 Vim 的功能远不及 Sublime 的强大 GUI,但社区一直使用它,随着时间的推移,Vim 也变得越来越棒。
2019 — VS Code的崛起,

When people ask me to recommend a text editor: short sword = VI. long sword = Visual Studio Code

图片来自:[twitter.com/tpope](https://twitter.com/tpope/status/1172743697315835904 )

我感觉自己变得越来越老练,甚至开始专业地工作了。Sublime Text 对我来说已经非常熟悉了。每一个快捷键和配置选项我都烂熟于心。更不用说那些为我的工作流程量身定制的插件了。

那时候,我更担心的是丢失我的Sublime配置文件,而不是笔记本电脑本身。开玩笑,当时我已经知道git了。办公室要求使用VS Code,所以也没有选择的余地。花了一个月来调整它。

到最后,我不禁怀疑自己造出了什么“科学怪兽”式的怪物。它看起来像Sublime,行为表现却像是Sublime和VS Code的结合,启动起来却启动得很慢,像我老朋友Eclipse一样。最糟糕的是,每次那位资深同事在我机器上调试时都会对我指指点点。这都是程序员常遇到的小麻烦,没什么大不了的。

我喜欢VS Code的一点是它的零配置扩展生态系统。它在编码时给我一种很聪明的感觉,我觉得它有一些Sublime没有的独特之处。直到今天,VS Code依然是我最喜欢的编码工具。如果能写代码的东西,最终都会在VS Code中。我觉得它就像现代版的emacs。

我亲身体会到了严格类型语言和动态类型语言的区别。当时我在做 Ruby on Rails 的项目,而动态类型的语言对编辑器来说是噩梦。虽然我每天都在用 Ruby、Python、JavaScript 这些语言,但我还是讨厌它们,只因为一个原因。请原谅我这么说,我讨厌 Ruby、Python、JavaScript 等语言,可能就是因为这个原因,我会时不时地用用 JetBrains 的工具。

要点
  • VS Code 有一个成为无处不在的编辑器的愿景,而社区让它成为了现实。
  • 它的核心坚固且设计周全,人们在其基础上构建他们想要的东西。
  • 它的优点反而成了它的缺点。因为任何人都可以轻松编写任何内容,人们往往不加思考地编写,后来却将 VS Code 的缓慢归咎于它。
2021年 — 哎呀,我有点追求完美的倾向

图片来源自:tenor.com

这是什么看起来像是强迫症的东西?这是一种对事物摆放过于讲究的情况。你可能会觉得这挺好的,但如果你的桌子边缘和笔记本电脑对不齐,你就会感到一阵不安。

我也会很快分心,所以我需要一个专注的环境。我离开这里去找上面提到的图片,看完这个梗出处的电影后回来了。好了,我们现在都明白了。你看,我们其实也没什么区别!

我喜欢内外环境都超级简约。请看页面底部的截图;应用程序窗口上甚至没有关闭图标。从字体间的字母间距到弹出窗口的内边距,每一件事都能触动我。老实说,做这种事让我感到非常开心,如果你搜索“Unix ricing”,你会被震撼到的。

另一方面,字面意义上来说,我的手腕开始因为频繁在字母和箭头之间切换而感到疼痛。每周玩80小时也有些好处。

我在网上查手腕疼痛的信息,没想到其中一个建议居然是用电脑上的Vim (-模式)。那个狡诈的VI,直到我打开它,才发现它就是Vim。我对它还有一点恨。

对于服务器工作,我用的是Nano。后来我改用了micro,它的快捷键更接近VS Code。每次我试图避开我的死对头Vi时。我发现我用的每个工具都有那种奇怪的Sublime和VS Code混合的快捷键。

天啊!我讨厌我自己。连用别人的电脑运行那个软件的纯净版本都不会了,真是的。就这样,我迎合了没有终端的想法,这些年来,我对awk、sed、grep等工具的喜爱都忘记了。有些事情真的需要改变了;我不能再活在这种否认中了。

主要内容
  • 做你喜欢的事情,而不只是那些让你忽视真实问题的事情。
  • 每个人都会有一段否认现实的阶段。这很正常,只要你准备好了,就能从这种状态中走出来。
  • 学习核心的(GNU-)Linux工具。你会在长远中理解它们的好处。例如,如果我一直使用grep和sed来查找和替换的话,我在正则表达式上会更熟练。
2022 — 使用 Vim 操作

Meme character sobbing but angry. Says Vim has search, scroll, plugins like easymotion, vim-sneak to navigate buffer. You should use them. Other face: Vim go kkkkkjjjjjkkkkkk

在第一个月里,我只使用了 hjkl 这几个键。来源:Vim-memes

我决定使用Vim。并不是因为它特别适合我的工作习惯,而是因为我想要不再依赖VS Code。

我知道我不能在我的日常工作中直接切换到Vim。所以我选择在VS Code中使用Vim的快捷键作为折衷。非常感谢YouTube上的Ben Awad,他展示了一个轻松的方法来引入Vim。我一直很好奇他怎么能瞬间移动到任何地方,而我只能飞快地移动。

为了安全起见,我会在我的所有办公项目文件夹中自动禁用它。那时没有什么特别让我对Vim感到惊讶,因为我已经在心里有了VS Code的类似快捷键。然而,两者之间的斗争越来越激烈。到了年底,我已经可以在VS Code中流畅地使用Vim键绑定。经过将近一年的使用,我开始体会到它在人体工程学和功能上的好处。

要点
  • 实事求是,你这小子。先学走再学跑。
  • 别人的成就诱惑是一个很好的动力。单靠个人意志是不够探索未知领域的。我们需要点动力来启动这一切。
2023——最后的迁移

When your muscle memory and mind finally work the “vim” way after years of practice. Goku looking determined: so this is the power of Ultra Instinct?

我真是太傻了,居然有一天会想着卸载 VS Code,转而使用 Vim,以为自己在 Vim 里也能像在 VS Code 里一样操作。没想到我在用 Vim 的键绑定进行 VS Code 的操作;但发现工作流程依然不熟悉。学到的也只是几个快捷键而已。

我还是搬了。有一天,我不得不在一个项目中找到并替换几个单词。我做不到,于是我又回到了家。到这个时候,VS Code 变成了我的代名词。我在 VS Code 里写代码就像飞一样快,朋友们都知道我用 VS Code 很快。于是我安顿下来,不再使用 Vim。

我很高兴我能像那些Vim极客一样做任何事情,但我清楚自己仍然处于一个很大的舒适区。我的问题是,我在使用带有混合快捷键的VS Code,而现在我甚至将这个也换掉了。这算什么解决办法呢?

幸运的是,前段时间我从办公室项目工作中抽空出来,我知道这是转换设置的好机会。我发现从Sublime过渡到VS Code完全没有问题,整个过程非常顺利。我开始使用纯Neovim来工作,虽然确实很痛苦,但有计划在手。每当我需要某个功能时,我就会查Neovim文档并添加。

让我感到很高兴的是,我自己编写了编辑器设置的每一行,虽然花了两个月,但现在我有了自己的专属PDE(个人开发环境)。

这包括了从默认缩进大小到文件树,再到语言服务器的各种设置。之前,我看了一段 ThePrimeagen 在 YouTube 上关于如何配置 Neovim 的视频,那个视频把我搞糊涂了,以至于我不得不休息了一周来远离我的配置问题。😂

关键要点
  • 接受冰山理论。人们被表面的东西吸引,而不是支撑基础的工作。我的建议很简单。尊重它!
  • 我最终做出转变的最大动力是Vim软件所散发的魅力。在下面的截图中,你看到的只是一个终端窗口中的文本,没有任何图片、按钮,也没有任何形式的GUI。甚至没有真正的图标。这真的很难,不是吗?想象一下,你甚至不能调整字体或大小。每一项都在黑底终端上精心处理文本。对这些人的这种尊重一直支撑着我前进。

今天

现在我已经完全将我的工作流程迁移到了Neovim,感觉上完全一样。我已经习惯了Vim的绑定,只是外观不同了。不过,好的一面是我清楚这些组件是如何工作的。我知道这些内联错误信息是如何显示出来的,这些花哨的自动补全功能是从哪里来的,每一行的格式化是如何完成的,等等类似的内容。回想起来,我本来可以直接查看VS Code或其扩展的源代码,但我的想法是使用它而不是深入学习它。

最大的变化是我从建造者的角度看待软件,而不是像以前那样作为一个消费者。现在,当我看到某样东西时,我会想怎么建造它,而不是怎么用它。

毕竟说到底,我是一名工程师,我的身份主要由两件事情决定:我对软件的掌握程度以及我能构建什么。

我的编程环境快照集

使用 Iterm2(终端模拟器)的终端环境

Neovim 首页

AI建议

与语言相关的完成项和文档资料

模糊匹配的文件和内容浏览

更改跟踪(可以回退前几天更改的内容,无需 Git)

不过,我无法一一介绍每个屏幕和工具,但如果你喜欢这个设置,我可以写一篇文章来介绍从头开始的所有配置方法。一个关于终端和Vim基础自定义的详细教程。如果你想看这样的教程,不妨留言告诉我。

想用我的设置:从GitHub克隆我的dotfiles:https://github.com/sameer1612/.dotfiles,访问链接即可。

FAQ
  1. 使用 Vim 是否能让我成为更好的开发者?
    — 绝对可以。
  2. 过渡会很难吗?
    — 这很简单。只需要掌握几百个快捷键,嘿嘿。(我有一个超级秘密的忍者方法可以在30分钟内学会所有快捷键)
  3. 为什么这会重要?它只是一个编辑器。我的工作就是我写的东西。
    — 你想成为工程师还是作家。快点决定!很高兴你选择了工程师。现在再想想:你的日常工作中有多少工程学的基本原理是被抽象掉的。你不想成为一个根基薄弱的工程师,对吗?
  4. 看起来开始很难。我会爱上它吗?
    — 我花了两年时间,多次放弃,只有当我从零开始并逐步添加功能时才成功。它现在就是你的孩子了。你不会说它坏话的。记住,兴趣不是选出来的,而是靠你努力培养出来的。

One girl whispering to another. Caption: I heard he can navigate in VIM with hjkl and code mouse-free \(TBH, I lost my USB dongle!\)

嗯,真实的故事……

想链接吗?

LLinkedIn

网站 Sameer的网站

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消