发布于 2026-01-06 7 阅读
0

使用 VSCode 和 Vim 成为更高效的开发者 DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

利用 VSCode 和 Vim 成为更高效的开发者

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

这是《使用 VSCode 和 Vim 提升你的编码能力》一书的引言。

Visual Studio Code 非常出色。它提供无与伦比的用户体验,并对多种语言和开发生态系统提供强大的支持。它拥有优秀的默认设置,而且超级易用,上手非常容易。

Vim 太棒了。它的模态特性和文本编辑功能使其在众多编辑器中独树一帜。Vim 提供的文本编辑效率、速度和准确性远超其他任何编辑器。

两者的结合简直棒极了(没错,我就是这么说的)。

接下来的几天里,随着你阅读这些内容并进行练习,你的 Visual Studio 编辑技能将得到显著提升。通过结合 Vim 和 Visual Studio Code 的优势,你将能够极大地简化大脑与计算机之间的交互,让你的想法无缝地转化为代码。

本书将涵盖以下内容:

  • 什么是 Vim?为什么要在 VSCode 中使用 Vim?
  • 如何在VSCode中安装Vim?
  • Vim中的基本生存技能
  • 使用 Core Vim Motions 实现极速移动
  • 使用 Vim 操作符和动作,以思维的速度进行编辑
  • Vim 的秘密语言
  • 像 Vim 一样插入文本
  • 在可视模式下选择文本
  • 利用注册表进行复制粘贴
  • 使用 Vim Surround 为事物添加环绕效果
  • 使用 Sneak 和 EasyMotion 插件,移动速度更快
  • 创建自定义快捷方式,提高您的效率
  • 使用 Vim 增强多光标功能
  • 使用宏创建可重用的编辑单元
  • 将 VSCode 与 Neovim 集成,实现极致体验

读完本书,你将能够进行以前无法企及的精细文本操作和强大的文本转换。随着时间的推移,当你练习并逐渐熟悉各种 Vim 命令后,你的编辑速度和效率将远超以往。

本书不假设读者具备任何 Vim 基础,所以即使您不熟悉 Vim 也无需担心。我将引导您了解使用 Visual Studio Code 和 Vim 所需的所有概念和技巧。

Vim是什么?

Vi是一款古老的文本编辑器,甚至比世界诞生还要古老。它最初是为一种名为终端的设备设计的,其独特之处在于采用了模态模式。也就是说,它有插入文本的模式、编辑文本的模式、选择文本的模式等等。

Vi 的最新也是最著名的版本是VimVi IM Proproved,以前称为Vi IM Intitation ) ,它既支持文本界面也支持图形界面,相比vi有诸多改进,并且支持人类已知的所有平台。

但 Vim 的影响远不止于 Vim 本身,它的理念非常卓越,早已超越了 Vim 编辑器本身,传播到其他编辑器中。如今,几乎所有你能想到的编辑器和 IDE 中都能找到类似 Vim 的模式。例如,Visual Studio Code就恰如其分地包含了 Vim 的功能。

为什么要用 Vim?Visual Studio Code 还不够吗?

在这个时代,你为什么要关心学习一款古老的编辑器?它真的会对我的 Visual Studio Code 设置产生那么大的影响吗?

事实上,Vim 提供了一种与我以往见过的任何文本交互方式都截然不同的方式。这种方式让你在编辑代码时拥有完全不同的控制水平和流畅度

对于经验丰富的用户来说,用 Vim 编辑文本就像变魔术一样

  • Vim 让你的速度更快
  • Vim 让你更精确
  • Vim 为文本编辑解锁了完全不同的控制层次。
  • Vim 简化了你的大脑和计算机之间的交互界面。
  • 做演示的时候,看到它真是令人惊叹:D

太棒了!听起来很不错……但是…… Vim 是如何实现这一切的呢? 答案是模式

Vim 的模态特性赋予你键盘控制编辑器方方面面的能力。每种模式都是一张白纸,赋予你的键盘新的功能,让你能够以闪电般的速度编辑文本,以迅雷不及掩耳之势导航,随心所欲地选择和移动文本等等。

使用 Vim,您不再局限于插入文本,也不再受制于鼠标点击、导航或选择文本的束缚。不,使用 Vim 一段时间后,您将如同代码外科医生一般,随时随地以精准的手术刀进行专业切割,并以闪电般的速度和准确性,完全通过键盘驱动的工作流程,在代码和代码库中穿梭自如

那么,在这个时代,你为什么要学习 Vim 呢?套用一下伟大的Drew Neil 的话,他是《实用 Vim》的作者,也是 Vim 最冷门技巧的掌握者:

Vim 是为那些想要提升编程水平的程序员准备的。在专家手中,Vim 能以迅雷不及掩耳之势处理文本。

Vim 是为想要提升编程水平的程序员准备的。在专家手中,Vim 可以以思维的速度处理文本

谁不想要那样的呢?

为什么选择 VSCode 中的 Vim 而不是普通的 Vim?

你可能会想……好吧,如果 Vim 这么好,那么……为什么不直接在 Visual Studio Code 中使用 Vim 呢?

问得好!事实上,要让 Vim 具备与现代文本编辑器类似的功能集并非易事。代码补全、代码导航、编辑器内错误信息等功能虽然 Vim 支持,但并不能开箱即用,完美运行。

Visual Studio Code 和 Vim 的结合提供了一个非常理想的平衡点,既具备 Visual Studio Code 的易于设置和超级丰富的开发用户体验,又具备 Vim 的许多出色功能。

不过,翻译还不够完美。如果您是经验丰富的 Vim 用户,可能会发现一些功能缺失。但总的来说,VSCodeVim 在 Vim 之外提供了非常愉悦的 Vim 使用体验。

关于本书所用惯例的简要说明

由于 Vim 中的许多操作都取决于光标的位置,我使用了一系列图表来展示光标位置随输入命令而发生的变化。这与其他编程书籍的做法截然不同,因此我认为提前解释一下会很有帮助,这样您在第一次接触 Vim 之前就能有所准备。以下是一个示例:

wwww ==> v   v v  v   v
         word. is two words
Enter fullscreen mode Exit fullscreen mode

这意味着:

  commands you type    position of the
   /                    /   cursor changing
  /                    /    as you type
wwww ==> v   v v  v   v  
         word. is two words
           /
          /
      text in your editor
Enter fullscreen mode Exit fullscreen mode

所以:

  • 文本word. is two words是指编辑器内部的文本,可以进行更改或导航。
  • 您依次输入该命令w(在本例中为 4 次)。
  • 每次输入命令时,光标(用 表示v)都会移动到新的位置。

有时,比较两个命令对同一段文本的处理效果会很有帮助。在这种情况下,我使用了以下图表:

wwww ==> v   v v  v   v
         word. is two words
         word. is one WORD
WWW  ==> ^     ^  ^   ^
Enter fullscreen mode Exit fullscreen mode

下半部分与我们之前讨论的上半部分含义相似,只是光标用插入符号(.)^表示v

在解释命令时,我们将遵循以下约定。对于操作和动作:

f{character}

f            - f is a literal f, expected to 
               be typed as-is.
{character}  - is a placeholder that needs to be
               substituted by something. The name
               between {} will be descriptive of
               what that something is expected to
               be. In this case a character.
Enter fullscreen mode Exit fullscreen mode

在构建和应用文本对象时:

{operator}{a|i}{text-object}

{operator}    - placeholder
{a|i}         - either type the letter a or the letter i
{text-object} - another placeholder
Enter fullscreen mode Exit fullscreen mode

至于前任指挥官:

:[range]s/{pattern}/{substitute}/[flags]

:            - denotes the beginning of an ex-command.
[range]      - the [] denote that this part is optional.
               The name will be descriptive as in the 
               case of placeholders.
s            - command to be typed as-is.
{pattern}    - again this is a placeholder.
{substitute} - another placeholder.
[flags]      - another optional part.
Enter fullscreen mode Exit fullscreen mode

欢迎提出反馈意见!

如果您觉得任何图表或解释难以理解,有任何疑问,想要提供反馈,或者即使您喜欢这本书并想表达赞赏,都欢迎随时在推特上联系我:twitter.com/Vintharas。我的私信是开放的,我非常乐意回答您的问题。

文章来源:https://dev.to/vintharas/becoming-a-more-productive-developer-with-vscode-and-vim-1ef4