发布于 2026-01-05 2 阅读
0

Vim 如何让你成为更优秀的开发者?治愈 IDE 的弊病,去除抽象层,IDE 的海洋,Vim 也能变得花哨。结论:Vim 是一个非常有用的工具,它不会耗尽你的内存,即使你需要在老旧的机器上工作,它也能可靠地运行!

Vim 如何帮助你成为更优秀的开发者

治愈IDE疾病

去除抽象层

 浩瀚的集成开发环境

vim 也可以变得很炫酷。

结论

vim 是一个非常实用的工具,它不会占用太多内存,即使在老旧的机器上工作,你也可以信赖它!

我第一次接触 vim 是在不久前参加的一个 Linux 系统管理员课程上。

当时我对Linux了解不多,只觉得它听起来很高级。

课程期间,讲师经常输入那三个字的命令vim 来编辑一些东西。

“哇,看起来真酷!”我心想!

于是,为了让自己看起来也很酷,我回到家,打开终端,输入了神奇的词语,瞧!——我进入了 vim。

于是,怀着用 Vim 编写我的第一个 txt 文件的强烈愿望Hello World ,我开始敲击键盘。然而,什么也没发生。

突然间,一些奇怪的哔哔声从天而降,我感到非常沮丧!

所以,我的目标很快就从输入任何内容变成了退出vim。嗯,你大概也知道接下来会发生什么。

我当时正疯狂地乱敲键盘,想尽一切办法退出,结果却失败了vim。最终,在第一次与编辑器的冲突失败后,我无比庆幸终端模拟器右上角有“X”键。

如果你曾经尝试使用过,那么这个故事听起来应该很熟悉vim。最终,你会学会如何退出它,以及如何输入符号。

但这还远不止于此。无穷无尽的组合键可能会让你在不小心按到某个键后,完全摸不着头脑。

如今,vim 它是最流行的文本编辑器。尽管它是一款Unix原生工具,但即使是一些Windows用户也倾向于使用它。

但这样做有什么意义呢?市面上有那么多IDE。既然可以直接安装谷歌搜索推荐的第一个JavaScript IDE,为什么还要浪费时间去忍受Vim带来的无尽挫败感呢?

虽然它可能不适合任何项目,但至少在一段时间内坚持使用 vim 还是有一些很大的好处的。

其中最棒的就是用户界面。不过,本文的重点并非于此。关于这个主题的文章有很多,或许我将来也会写一篇。

今天,我们将探讨 vim 编辑器那些鲜为人知的优点。

治愈IDE疾病

IDE 是个很棒的工具。它一开始就提供了一些非常酷的功能——自动补全、代码模板、代码片段等等。

这些东西不可替代,尤其是在大型项目中。但它们也会极大地限制那些从未接触过其他工具的程序员的技能。原因在于,使用这些工具会导致代码编写变得粗糙,因为只需按一下 Tab 键就能使用自动补全功能。此外,你可能会惊讶地发现,由于这些工具,你的知识体系中出现了哪些漏洞。

我就是个例子。有两次,由于IDE故障,我的不足之处让我大吃一惊。

有一次,我担任编程课程的助教,在编程基础课程的第一节课上,有个学生向我求助。他用Hello WorldC# 创建了一个新的 VS 模板,但他把最初的 C# 代码搞砸了,导致程序无法编译。

所以,他来找我帮忙解决这个问题。我试着帮他,但令我惊讶的是,我竟然不知道如何在不依赖标准模板的情况下编写一个基本的 C# Hello World 程序。最后,我让他删除项目,新建一个,这样 Visual Studio 就会Hello World 自动生成模板。

这着实让我吃了一惊。我太习惯 Visual Studio 的默认 C# 模板了,以至于自己都写不出来了。

还有一次,我第一次尝试用 Vim 时,想不用自动补全功能自己写一个 for 循环。结果写不出来。因为我一直都是用自动补全功能来写 for 循环所以我不知道循环声明里哪些部分应该放在哪里。

你可能觉得这发生在我编程生涯的早期,但你错了。我当时已经了解了面向对象编程(OOP)、几种编程语言和一些基本数据结构。我编程快一年了,然而,我竟然还写不出一个完整的for循环

使用基础版 Vim 时,没有自动补全和默认模板。这样一来,我就能发现这些缺陷并加以改进。

更重要的是,由于需要自己编写完整的函数名,我的打字速度变得非常快。现在,我感觉键盘就像是我手的延伸。

但这并不意味着我在项目中完全不使用自动补全和模板。事实上,我也会使用它们,即使是在 Vim 中(当我安装一些插件时)。它们是非常棒的工具,能够极大地提高效率。但我认为,人们应该花一些时间在不使用这些工具的情况下创建项目,以便体验完全自主编写代码的艰辛过程。

这绝对能让你成为一名更优秀的开发者。此外,许多公司会使用白板面试来测试候选人。如果你连一个不借助自动补全功能的“Hello World”程序都写不出来,那么你所有的算法知识在白板面试中都无济于事。

去除抽象层

使用集成开发环境 (IDE) 时,所有操作都只需单击一下即可完成。您可以单击以编译、链接和运行项目Ctrl-F5

实际上,这是三个不同的命令。

有时,您会在 IDE 底部看到一个加载条,并显示状态消息Indexing

你知道那是什么吗?为什么要这样做?

您是否知道,为了构建您的项目,IDE 会使用一个配置文件,其中概述了如何编译、链接各个文件、如何运行测试等等?

当然,配置文件的具体应用取决于项目,但可以配置所有这些属性。

如果你不使用 IDE,则必须自己编写此配置文件或显式生成它(Makefile 是 C/C++ 项目中的一个例子)。

使用集成开发环境(IDE)会隐藏这些细节,这当然可以节省时间,但也会让你再次面临知识匮乏的问题。有些人可能会说,如果你在日常工作中接触不到这些知识,那么你就不需要它们。

如果汽车修理工的工作只是更换汽车零件,即使他们不懂发动机的工作原理,也无妨。但这能让他们成为技艺精湛的专家吗?

但是,使用 vim 和终端,所有这些细节都不会对你隐藏,你需要手动操作。这对新手来说会花费更多时间,但却能让你探索系统的全部功能。

例如,您是否知道编译器还有一些选项,与 IDE 的默认设置不同?

此外,这种方法还能提高项目的可移植性,因为你使用的是通用工具,而不是特定于 IDE 的工具。我遇到的一个问题是,一个非常老的项目需要移植到另一个 IDE 中。

为了逆向工程我的项目的构建系统,我不得不深入研究 VS 特有的配置文件。例如,使用 Makefile,你只需将 Makefile 项目导入任何现代 IDE,即可立即移植你的项目。

 浩瀚的集成开发环境

对于 C#,你可以使用 Visual Studio。对于 Java,你可以使用 Eclipse 和 IntelliJ。对于 Python,你可以使用 PyCharm。对于 C++,你可以使用 Code::Blocks。

即使你坚持使用一种编程语言,你仍然有可能需要在不同的项目之间切换 IDE。

那么,这为什么会是个问题呢?

频繁切换工具意味着你必须学习不同IDE的快捷键和按键绑定。很多人甚至懒得去学,继续用鼠标不停地点击。

这意味着你的工作效率不会那么高。

此外,运行多个集成开发环境(IDE)会占用笔记本电脑大量资源。我曾经同时打开 CLion 处理 C 语言项目、IntelliJ 处理 Java 项目、PyCharm 处理 Python 项目。

如果你和我一样,用的是一台老旧的笔记本电脑,那么那将不会是一次愉快的体验。

即便如此,我还是很烦要为不同的语言使用不同的工具。每个工具都有其自身的复杂性和快捷方式。

由于需要不断切换 IDE,你只能使用每个 IDE 中最基本的功能,因为你不可能全部学习。

使用 Vim,你只需一个编辑器就能搞定所有编辑器。而且,不同语言的快捷键和按键绑定都相同。

不过,在某些项目中使用 Vim 可能会比较麻烦。例如,C# 项目与 Visual Studio 的集成度很高,如果尝试用 VS 代替 Vim,就会遇到很多问题。但是,你可以使用Visual Studio 插件在 VS 中模拟 Vim 的功能。这样,你就可以在自己喜欢的 IDE 中使用常用的快捷键了。

其他主流IDE也有类似的插件。

vim 也可以变得很炫酷。

如“治愈 IDE 综合症”一节所述,使用精简版的 Vim 是有益的。但对于大型项目,我更喜欢使用插件来模拟 IDE 的行为,因为这样更容易浏览代码库。

这是我对 Vim 进行自定义调优后的屏幕截图:

它有很多很棒的功能,使用它,我能够完全用 CLion 替换一个相当大的 C 代码库。

在接下来的系列文章中,我将开始探索我最喜欢的 vim 插件,并解释它们何时有用,何时没用。

但如果你想要一个类似 IDE 的 Vim,可以克隆我的dotfiles 仓库并运行 install.sh 脚本。它会配置我现在使用的 Vim 配置。

请注意,其中包含一些与 Vim 无关的配置,但您可以轻松提取相关内容。我已经添加了注释,解释脚本每个部分的作用。

结论

除了 Vim 令人愉悦的用户界面之外,使用它至少一段时间还有其他好处。如果你已经习惯了 IDE 的代码模板和自动补全功能,那么是时候尝试一下 Vim 了。但请注意,IDE 成瘾可不是闹着玩的。

此外,如果您想深入了解 IDE 提供的抽象层背后的运作机制,不妨打开终端,使用 vim 从头创建一个项目。您或许不会喜欢这款编辑器,但您将获得的知识却是无价的。

如果你厌倦了为了完成工作而使用 5 个不同的 IDE,那么 Vim 也是一个不错的选择。它提供了一套工具,可以适用于不同的项目。

你还在等什么?

sudo apt install vim 使用这款优秀的编辑器开启您的创作之旅。

一旦你这样做了,无论你是否喜欢这个编辑器,它都会让你成为一名更优秀的开发者。

文章来源:https://dev.to/pmihaylov/how-can-vim-make-you-a-better-developer-2c3i