为什么我的vim这么难配置(为什么Vim比)(1)

在 Github 被微软收购后,它获得了一个非常重要的功能更新,称为Codespaces。

它使您可以直接从您的 repo 中编码,而不是从您自己的机器本地编码。您可以使用从浏览器运行 VSCode 的超快速服务器运行代码、提供和更新代码。精神的。

Vim 曾经是最便携的文本编辑器,因为您几乎可以在任何服务器机器上找到它,并通过 SSH 在终端中使用它。

好吧,现在 VSCode 正在采取一些措施。

您不仅可以在 Github 中运行它,而且还有一个版本的 VSCode 可以为您自己服务,称为Open VSCode Server。它允许您将 VSCode 安装到服务器上并在您想要的任何端口上提供应用程序。然后,您可以在浏览器中访问服务器地址,并以与 Codespaces 中相同的方式使用 VSCode,但免费。

微软公开

Microsoft'sxterm.js用于 VSCode 自己的终端,作为自己独特的开源项目发布,并催生了大量不同的基于浏览器的终端;现在您可以在任意数量的不同服务器托管网站中找到终端。

为什么我的vim这么难配置(为什么Vim比)(2)

经过很长时间显然反对开源以及他们正在接管的网络开发世界,该公司现在已经接受了开源。他们拥有 Ubuntu、Github、npmjs.com,我很少遇到使用 VSCode 的开发人员。

一旦他们开始使应用程序变得如此便携,即使我尝试将脚趾浸入 Open VSCode。我想看看我是否喜欢远程编码的感觉,以及它所有的静噪 GUI 优点。

在我每月 5 英镑的廉价服务器上运行二进制文件后,它几乎立即崩溃并迫使我重新启动。

Vim 仍然更好,这就是原因。

Vim 比任何 GUI 编辑器都具有优势有一些明显的原因。它轻巧快速,您可以在服务器上通过 SSH 进行编码,它将您留在终端中,它具有广泛的可用性、高度可移植性和高度可配置性。

所有这些你可能以前听过的原因,所以我想谈谈我喜欢它的更多个人原因,以及你可能认为 VSCode 更擅长的一些事情。

1.难用。

这让麻瓜们远离了。不,我在开玩笑。

实际上,学习 Vim 比学习乐器要容易得多,很多人都能做到;而且比学习阅读和写作要容易得多,这是几乎每个人都能做到的非常困难的事情。

困难的事情当然不应该成为程序员的威慑。学习困难的东西基本上是我们的面包和黄油。

学习与事物本身没有直接联系的困难事物是有好处的。您可以从中获得一些元技能。

我儿子 Yuri 最近学会了骑自行车,这对他来说很困难,因为骑自行车不是你可以逐步学习的东西。当你没有理性地解决它时,有一个跳跃或信仰跳跃的时刻,你只需要这样做并冒着跌倒的风险。

还有一件事也让它变得困难:自行车在你能骑之前都是垃圾。所以他很高兴只是推动他的滑板车,因为一开始它更容易,更有趣。

但自从他学会骑自行车后,尤里就再也没有碰过他的滑板车,因为它速度慢,乐趣也少。他不知道,但他也学到了一些元课程。

首先是有时学习一些东西需要信念的飞跃,你必须冒险去实现那个飞跃。另一个是有些东西是垃圾,直到你正确地学习它们……然后突然它们变得很聪明。

VSCode 是文本编辑器的踏板车。Vim 是自行车。

2.它不是异步的。

为什么会有这样的优势?嗯,这就是为什么它这么快。除了它有大约 7MB 的占用空间之外,Vim 一次只做一件事。

它不会扫描您的目录中的函数定义,它不会遍历语法树来为您提供复杂的自动完成建议,它不会计算光标的上下文并向文档 API 发出请求,它不会git blame对每一行代码都执行每个文件的自动下载语法。

但是 Vim可以做所有这些事情……只要你告诉它。

3.它只做你告诉它的事情。

有些人喜欢自动功能,因为好吧,你为什么不希望你的生活更轻松呢?或者,也许您没有时间或精力来为这些小事流汗。

我想这取决于你觉得你工作的水平,你是否有精力使用终端命令来整理你的文件或阅读:help以了解如何配置你的 . vimrc文件(我:help在开始使用 Vim 时从未使用过,顺便说一句,互联网绝对是你早期的朋友)。

但老实说,我认识很多人以不那么有趣的方式浪费时间,比如在 Netflix 上翻阅《老友记》或重温《老友记》。

有时我想做一些不是完整编码的交互。如果我下班后或周末累了,过去我会玩音乐或玩电脑游戏;现在我在家里修理一些东西,或者我修补 Vim。

想出一些我可以在 Vimscript 中编写的小功能,或者集成一个有用的命令行工具,甚至只是阅读:help一些我以前从未见过的东西,这让我有一些事情要做,这不是我必须完成的超级重要的事情,但不是完全浪费时间。

4.它使编码游戏化。

当我进入 Vim 时,我 100% 不再玩电脑游戏。这是因为控件非常像游戏。它们具有模块化结构,允许您使用不同变体的命令组合。这很像您在格斗游戏中进行连击的方式。

大多数命令分为两个、三个或四个部分。三部分结构的一个版本如下所示:操作符 - 文本对象 - 运动。

运算符始终是删除更改可视选择替换中的一种。

文本对象始终是内部或圆形之一。

有很多不同的动作,但我们稍后会介绍,现在我们可以将动作视为命令的一种目标。举个例子,我可以按dib ,意思是在块内删除。

操作删除文本对象在里面动作 _ _ 这将删除(括号)块内的所有内容。

这些有很多不同的组合:

di' -删除'单引号' 的内容

da ”—删除引号 _ _

dit -删除html标签内容 _

ci[ - c[括号]变化

正如我之前所说,有很多运动命令可供选择,它们的行为会有所不同,具体取决于您是在三部分组合中使用它们,如上面,还是两部分组合(您错过了使命令运行的文本对象)光标的位置)。

以下是您可以在上述三部分组合中使用的一些相关动作的列表:

-------------------------------------------------- | 动议 | 关键 | |------------------------------------|------------| | 词 | w | | WORD(包括特殊字符)| W | | 块(括号) | b 或 ( | | BLOCK (大括号) | B 或 { | | 方括号 | [ | | 单引号 | ' | | 双引号 | " | | tag (html or xml <tag></tag>) | t | | 段落 | p | | 句子 | s | --------------------------------------------------

if这些命令使您可以快速轻松地更改函数的参数或字符串的内容或块的内容。一旦你学会了它们,你就会希望能够在任何地方使用它们。

其他所有的文本编辑器都会感到非常笨重和笨重,而且你会在你能找到的每一个环境中安装“Vim 模式”。

更多关于运动

Motions是您在 Vim 中最常使用的键盘命令类型,因为它们可以单独用于移动光标。有些动作可以单独使用,有些动作仅在作为组合的一部分使用时才起作用。

例如w (for word )键将一次跳过光标向前一个单词,但'单引号本身并不是一个动作,并且做的事情完全不同。

有些动作会变成不同的类型,具体取决于它们是组合使用还是单独使用。例如,上述三部分组合中的b键意味着b lock但当您单独使用它时,它意味着b ack,并且一次将光标向后移动一个单词。

Vim 命令在某种程度上是上下文感知的并且是模块化的。根据您使用它们的时间和光标所在的位置,不同的键表示和执行不同的操作。

它很像一门语言,你可以把命令想象成一个句子:d elete in inside these ' single quotes '

,