每位开发者都应尝试 Vim

Vim 为开发者在编辑和浏览代码时提供了额外的思考维度。它是一种不同的编码思维方式。我过去 2.5 年一直在使用 Vim,使用 Vim 的体验让编程变得更加有趣。

什么是 Vim?

Vim 是一款高度高效、以键盘操作为主的文本编辑器,其核心理念是速度、精准与控制。尽管它已存在数十年,但绝非过时之物。近年来,Vim 迎来了复兴,这主要得益于 Neovim——这一对 Vim 的现代重构版本,它带来了更快的核心性能、更好的插件支持以及充满活力且前瞻性的社区。

元素周期表许多开发者因 Vim 的陡峭学习曲线和不熟悉的界面而避而远之。但这种情况正在改变,因为 Vim 的社区正在迅速壮大。这表明其他开发者正在将 Vim 视为提升工作流程的重大升级。当然,有人可能会说这些开发者只是不知道如何退出Vim。
幸运的是,有人花时间整理了一份退出Vim的方法列表。我最终选择了接受方式

你无需直接在终端中使用Vim,大多数现代编辑器都提供了Vim插件,这样你就可以继续使用熟悉的编辑器,同时享受Vim的优势。这节省了你数小时的配置时间,并大大降低了入门门槛。

为什么使用 Vim?

Vim 不仅仅是一个编辑器,它是一种思维方式。我开始使用 Vim 是因为它提供了无与伦比的速度、肌肉记忆效率以及难以复制的流畅感。你不再需要使用鼠标或方向键进行导航,而是通过键盘实现极速操作。

从本质上讲,Vim 是一个模态编辑器,与常规编辑器略有不同。这意味着你需要在不同模式之间切换,而每个模式都有其特定用途。Vim 的模式包括:

  • 正常模式 – 用于移动和修改内容
  • 插入模式 – 用于输入文本
  • 可视模式 – 用于选择和操作块
  • 命令模式 – 用于保存、退出或搜索等操作

在普通编辑器中,你只会使用插入模式。这种职责分离乍听起来有些奇怪,但它让你能够仅通过几个键盘操作完成复杂的编辑。一旦你习惯了,就很难再回到过去。

以下是一些示例,展示 Vim 在实际操作中的感觉,这些操作均在正常模式下执行:

  1. dd – 删除当前行
  2. 5yy – 复制从当前行开始的 5 行
  3. di{ – 删除最近的 {} 块内的所有内容
  4. ci( – 修改最近的 () 内的内容

学习 Vim 很难

我个人在学习Vim时遇到了困难,一开始觉得它令人望而生畏。原因在于模态编辑对我来说是陌生的,而且我已经习惯了之前使用的JetBrains编辑器及其功能,因此很难在Vim中高效工作。我承认,第一次尝试时我就放弃了。要真正开始学习Vim,你必须改变对编写代码的思维方式,而这在经过多年的编程后确实很难做到。

我对Vim的理解不够深入,只知道如何进入插入模式并使用:wq退出。仅凭这些基础技能,使用Vim会显得笨拙且效率低下。当时我甚至还没发现Vimtutor的存在——如果你还不了解,Vimtutor是一个能在20到30分钟内教你Vim基础的工具。

但隧道尽头总有光明!就像学习任何新技能一样,一开始总是困难的。如果你能克服初期的不适应,你将获得一个与你职业生涯共同成长的工具。你将能够说:“我用Vim,顺便说一下。”

从自己的编辑器开始


随着我通过 Vimtutor 和 YouTube 视频等工具学习更多关于 Vim 的知识,我决定再试一次。这次我没有使用 Neovim,而是安装了 Ideavim。这让我能在熟悉的环境中开始使用 Vim。最初几周进展缓慢,我感觉生产力下降了 50%。但经过最初的下滑后,我发现自己变得更快了,事情开始变得自然,并成为了肌肉记忆。

我不再需要思考“如何”做某事。我的手指就是知道。那就是Vim对我来说“点击”的时刻,不是作为一个我强迫自己使用的工具,而是作为我编写代码方式的延伸。它真的为你提供了编辑代码的额外维度。

回过头来看,那段短暂的痛苦期是值得的。Vim不仅改变了我的编辑器,还改变了我编写代码的方式。这种转变让编程变得更加流畅、快速,最重要的是,有趣得多。

Vim 的美好之处在于,你总能不断学习,总能找到更快的方法。甚至有一个名为 VimGolf 的网站,专门为用户提供挑战,要求用尽可能少的键盘输入完成特定任务。

我一直使用JetBrains编辑器和Ideavim长达两年。两年后,我决定深入探索,进一步定制我的编辑器,真正获得我喜欢的体验。

切换到Neovim

最初的转换过程颇具挑战,尤其是文件管理方面。我已经习惯了编辑器左侧的文件树结构。我尝试在Neovim中通过nvim-tree来复现这一功能,但使用体验并不尽如人意。直到我遇到了oil.nvim,这对我来说是一个转折点,因为它让创建、重命名和移动文件变得轻松多了。那一刻,我感到自己可以切换了。我尝试过一些流行的Neovim发行版,如Lunarvim,但觉得它们过于复杂。
我个人更喜欢一个基本设置,没有太多花哨的功能(我知道,我之前使用过JetBrains,但只用了该编辑器10%的功能,并且配置了一个简洁的界面)。

我没有从一个空白的Neovim安装开始,而是使用了kickstart.nvim。它有如此清晰的文档,使得理解和开始使用变得非常容易。TJ DeVries的这段YouTube播放列表也对我入门帮助很大。

令我惊讶的是,JetBrains + Ideavim实际上是多么的局限,而使用Neovim,通过Lua设置自定义和更高级的键绑定要容易得多。

最后思考

学习Vim不仅仅是选择一个新的编辑器,更是改变你与代码互动的方式。我认为每位开发者都应该尝试一下Vim,看看它是否适合自己。如果你坚持下去,Vim会让你获得一种难以言喻的控制感和流畅性,直到你亲身体验才会明白。

你不需要在第一天就完全投入。从你当前的水平开始。在现有编辑器中使用插件、探索Vimtutor,或逐步学习几个基本操作。你会惊讶于仅凭少数几个命令就能释放的强大功能。

Vim不会让你一夜之间成为更好的开发者,但它会改变你对编写代码的思考方式。一旦你领悟其中奥妙,它将成为你无法割舍的工具。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注