利用 VSCode 和 Vim 成为更高效的开发者
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
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 的最新也是最著名的版本是Vim(Vi 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 可以以思维的速度处理文本。
谁不想要那样的呢?
为什么选择 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
这意味着:
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
所以:
- 文本
word. is two words是指编辑器内部的文本,可以进行更改或导航。 - 您依次输入该命令
w(在本例中为 4 次)。 - 每次输入命令时,光标(用 表示
v)都会移动到新的位置。
有时,比较两个命令对同一段文本的处理效果会很有帮助。在这种情况下,我使用了以下图表:
wwww ==> v v v v v
word. is two words
word. is one WORD
WWW ==> ^ ^ ^ ^
下半部分与我们之前讨论的上半部分含义相似,只是光标用插入符号(.)^表示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.
在构建和应用文本对象时:
{operator}{a|i}{text-object}
{operator} - placeholder
{a|i} - either type the letter a or the letter i
{text-object} - another placeholder
至于前任指挥官:
:[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.
欢迎提出反馈意见!
如果您觉得任何图表或解释难以理解,有任何疑问,想要提供反馈,或者即使您喜欢这本书并想表达赞赏,都欢迎随时在推特上联系我:twitter.com/Vintharas。我的私信是开放的,我非常乐意回答您的问题。
文章来源:https://dev.to/vintharas/becoming-a-more-productive-developer-with-vscode-and-vim-1ef4
