图片来源:programmerhumor.io,如图所示。
嘿嘿…… 开始吧。我差不多已经写了快十年的代码了。对于那些每天花三分之二时间写代码的人来说,工具链真的很重要。让我们一起回顾一下过去。这篇文章会有点不一样。
声明:今天的内容会比较主观,请保持开放的心态。
大概在2010年——初级水平图片来源于:seekpng
我在用 Notepad++ 學習 Java 程式設計時,還是一個對這方面一竅不通的小白。當時甚至不知道編輯器是什麼,對我來說,它就像是記事本多了一些按鈕。Notepad++ 是一個文本編輯器。
重点在于学习编程,而不是 DX(开发体验,Development Experience)。唯一让我感兴趣的是,通过按功能键就能运行代码,这大大超过了在记事本里写代码再用 Windows 命令行运行的体验。
关键点:- 能有个地方大家一起写代码、运行代码真是不错。
我现在已经可以用几种语言进行还算不错的编程了。我正在读的一本书推荐了下一个新玩意儿,那就是Eclipse。Eclipse确实正中下怀,真的是太对胃口了。第一次,我发现工具链变得让人上瘾。不用深入了解构建和执行系统就可以编写、构建和运行那些Java Swing应用程序,这种感觉简直……太爽了。
互联网还没那么普及,所以我经常通过查阅线下文档来查资料。有时候会觉得很麻烦,但没有别的办法只好硬着头皮上。第一次遇到软件不像之前那样好用时,那时候还不知道IDE这个词。只知道Java运行在数十亿设备上,必须得好好学学它。
要点:- 你的软件如果能自动处理配置就更好了。
- 如果它还能提示你接下来应该写什么就更棒了。
图片来自:9gag.com
我刚买了一台新的蓝色笔记本电脑。贴了一张写着“Ubuntu”的标签。这到底是什么东东啊?那张盗版Windows的DVD呢?让我激动得不得了的是那本关于Unix的书。我在学校图书馆找到了这本书。我决定永久转向Linux,并从那以后再也没碰过Windows了。
我搞不懂为什么网上的怪人总是推荐使用一个叫VI的东西来编辑一些随机配置文件。谁会专门打开终端,导航到某个文件,然后进入那个让人无法退出的诡异vi编辑器呢?
可惜,这是大学课程的一部分,我不得不使用它写作。好在,按一下‘i’键,vi就进入了“正常”模式。我非常讨厌它,所以我写了一个gedit配置,这样一来,我的教授以为我是在终端编程。
要点.- 不要硬推某个产品或结果。你可以分享一个想法,看看大家有没有共鸣。
- 每个开发者都应该使用Linux。绝对没有例外。我也认为macOS是一个Linux发行版。
图源:ProgrammerHumor (一个程序员的幽默网站,来自Reddit的帖子)
现在,事情开始有了头绪。我确定了自己的职业道路,成为一名网页开发者,这条路就是开发网站。又一次,我参考的那本书告诉我,Sublime 是下一个新宠。哎哟!我也跟上了这波潮流。
它有一种特别贴近我内心的感觉。我在设置文件上整整花了一周时间调整。把一个JSON文件拷贝到U盘上,就能让朋友的电脑变得和我的一模一样,这种体验简直像是施了魔法一样。低调的配置文件,嘿嘿嘿。
从那时起,我的 Sublime 开始看起来与普通用户使用的不太一样。直到今天,我还是一个死忠的定制狂热者。是的,我已经对那个让我买 Sublime 的弹窗免疫了,就跟老式的 WinRAR 一样。
重点- Sublime 对它可以做的那些事情来说运行得非常快。
- 它唯一被认为“失败”的原因是因为 VS Code 具有相似的功能定位、公司支持以及出色的社区支持。开发者转向了 VS Code,而没有人会为他们自己不使用的软件开发工具。尽管 Vim 的功能远不及 Sublime 的强大 GUI,但社区一直使用它,随着时间的推移,Vim 也变得越来越棒。
图片来自:[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 的缓慢归咎于它。
图片来源自:tenor.com
这是什么看起来像是强迫症的东西?这是一种对事物摆放过于讲究的情况。你可能会觉得这挺好的,但如果你的桌子边缘和笔记本电脑对不齐,你就会感到一阵不安。
我也会很快分心,所以我需要一个专注的环境。我离开这里去找上面提到的图片,看完这个梗出处的电影后回来了。好了,我们现在都明白了。你看,我们其实也没什么区别!
我喜欢内外环境都超级简约。请看页面底部的截图;应用程序窗口上甚至没有关闭图标。从字体间的字母间距到弹出窗口的内边距,每一件事都能触动我。老实说,做这种事让我感到非常开心,如果你搜索“Unix ricing”,你会被震撼到的。
另一方面,字面意义上来说,我的手腕开始因为频繁在字母和箭头之间切换而感到疼痛。每周玩80小时也有些好处。
我在网上查手腕疼痛的信息,没想到其中一个建议居然是用电脑上的Vim (-模式)。那个狡诈的VI,直到我打开它,才发现它就是Vim。我对它还有一点恨。
对于服务器工作,我用的是Nano。后来我改用了micro,它的快捷键更接近VS Code。每次我试图避开我的死对头Vi时。我发现我用的每个工具都有那种奇怪的Sublime和VS Code混合的快捷键。
天啊!我讨厌我自己。连用别人的电脑运行那个软件的纯净版本都不会了,真是的。就这样,我迎合了没有终端的想法,这些年来,我对awk、sed、grep等工具的喜爱都忘记了。有些事情真的需要改变了;我不能再活在这种否认中了。
主要内容- 做你喜欢的事情,而不只是那些让你忽视真实问题的事情。
- 每个人都会有一段否认现实的阶段。这很正常,只要你准备好了,就能从这种状态中走出来。
- 学习核心的(GNU-)Linux工具。你会在长远中理解它们的好处。例如,如果我一直使用grep和sed来查找和替换的话,我在正则表达式上会更熟练。
在第一个月里,我只使用了 hjkl 这几个键。来源:Vim-memes
我决定使用Vim。并不是因为它特别适合我的工作习惯,而是因为我想要不再依赖VS Code。
我知道我不能在我的日常工作中直接切换到Vim。所以我选择在VS Code中使用Vim的快捷键作为折衷。非常感谢YouTube上的Ben Awad,他展示了一个轻松的方法来引入Vim。我一直很好奇他怎么能瞬间移动到任何地方,而我只能飞快地移动。
为了安全起见,我会在我的所有办公项目文件夹中自动禁用它。那时没有什么特别让我对Vim感到惊讶,因为我已经在心里有了VS Code的类似快捷键。然而,两者之间的斗争越来越激烈。到了年底,我已经可以在VS Code中流畅地使用Vim键绑定。经过将近一年的使用,我开始体会到它在人体工程学和功能上的好处。
要点- 实事求是,你这小子。先学走再学跑。
- 别人的成就诱惑是一个很好的动力。单靠个人意志是不够探索未知领域的。我们需要点动力来启动这一切。
我真是太傻了,居然有一天会想着卸载 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- 使用 Vim 是否能让我成为更好的开发者?
— 绝对可以。 - 过渡会很难吗?
— 这很简单。只需要掌握几百个快捷键,嘿嘿。(我有一个超级秘密的忍者方法可以在30分钟内学会所有快捷键) - 为什么这会重要?它只是一个编辑器。我的工作就是我写的东西。
— 你想成为工程师还是作家。快点决定!很高兴你选择了工程师。现在再想想:你的日常工作中有多少工程学的基本原理是被抽象掉的。你不想成为一个根基薄弱的工程师,对吗? - 看起来开始很难。我会爱上它吗?
— 我花了两年时间,多次放弃,只有当我从零开始并逐步添加功能时才成功。它现在就是你的孩子了。你不会说它坏话的。记住,兴趣不是选出来的,而是靠你努力培养出来的。
嗯,真实的故事……
想链接吗?共同学习,写下你的评论
评论加载中...
作者其他优质文章