写点什么

我为什么说 Vim 比 VSCode 更好用

  • 2022-02-17
  • 本文字数:3257 字

    阅读完需:约 11 分钟

我为什么说Vim比VSCode更好用

Github 被微软收购后迎来了一个相当重要的功能更新,叫做Codespaces


有了它,你就可以直接在你的仓库里写代码,而用不着在自己的电脑上本地编程了。你可以通过浏览器来操控一台运行 VSCode 的超快服务器来运行代码、提供服务和更新代码。


Vim 曾经是可移植性最强的文本编辑器,因为你可以在几乎所有的服务器机器上找到它,并通过 SSH 在终端使用它。


现在,VSCode 也有了一些这样的功能。


你不仅可以在 Github 中运行 VSCode,而且微软还提供了一个可以自服务的 VSCode 版本,叫做Open VSCode Server。你可以用它将 VSCode 安装到一台服务器上,并在你想要的任何端口上为应用提供服务。然后你可以在自己的浏览器中访问服务器地址,并以和 Codespaces 中一样的操作来使用 VSCode,但却是免费的。

微软走向开源世界


微软的 xterm.js(用于 VSCode 自己的终端)是作为微软自己独有的开源项目发布的,它萌生了一大堆各种各样基于浏览器的终端;现在你在几乎每一个服务器托管网站上都能找到一个终端。


这家公司曾长期反对开源模式,但如今他们已经拥抱了开源世界。在 Web 开发领域,他们正在占据主导地位。微软拥有 Ubuntu、Github、npmjs.com,我很少能见到不用 VSCode 的开发者。


当他们开始让 VSCode 也变得有这么强的可移植性之后,甚至我自己也开始尝试 Open VSCode 了。我想看看自己是否喜欢远程写代码的感觉,能不能体会到它那不怎么清爽的 GUI 的优点。


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

Vim 还是更胜一筹


Vim 比任何 GUI 编辑器都更有优势,原因是显而易见的。它轻巧快速,你可以在服务器上通过 SSH 写代码,所有事情都可以在终端中完成。它的应用非常广泛,可移植性和可配置性极佳。


这些原因你可能都已经听过了,所以我想谈谈我喜欢它的一些个人理由,以及一些 VSCode 可能更擅长的领域。

它很难用?


当我刚开始就提到 Vim 很难用时,“麻瓜们”就都被拒之门外了——我是在开玩笑。


实际上,学习 Vim 比学习乐器要容易得多,但很多人都能学会演奏乐器;它也比学习阅读和写作容易得多,后者是一件非常困难的事情,但几乎每个人都能做到。


用起来比较难当然不应该成为阻挡程序员使用的障碍。学习各种各样困难的东西就是我们的安身立命之本。


学习比较困难的东西是有一些好处的,但这些好处与你学习的这件事本身并无直接联系。你在这一过程中可以获得一些元技能。


我的儿子尤里最近学会了骑自行车,这对他来说很困难,因为骑自行车不是你可以一点点学会的东西。学习骑车时会有一个类似于信仰之跃的时刻,你还没在心理上做好准备的时候就必须在行动上尝试,并冒着从车上摔下来的风险。


还有一件事也让自行车学起来更难:在你学会骑自行车之前,自行车对你来说毫无用处。所以他之前喜欢踩着滑板车到处走,因为滑板车学起来容易得多,学习过程也更有趣。


但自从尤里学会骑自行车后就再也没碰过他的滑板车,因为它太慢了,而且没什么乐趣。虽然他没有意识到,但学车的过程中其实也学到了一些元经验。


首先,有时学习一些东西需要来一次信仰之跃,你必须冒着风险来迈出那一步。还有,有些东西在你学会之前毫无用处......然后突然间它们就变得如此迷人了。


VSCode 就像是文本编辑器中的滑板车一样,而 Vim 则是自行车。

Vim 不是异步的


为什么这是个优势?嗯,这就是它如此之快的原因所在。Vim 只有大约 7MB 的空间占用,并且同时只会做一件事。


它不会扫描你的目录来寻找函数定义,它不会穿越语法树给你提供复杂的自动完成建议,它不会计算你光标的上下文并向文档 API 发出请求,它不会对每一行代码做 git blame,它不会自动下载每个文件的语法。


但是 Vim 可以做所有这些事情......只要你让它做就行。

它只做你让它做的事


有些人喜欢自动功能,因为谁都希望自己的生活变得更容易。或者,也许你没有时间或精力来处理这些小事情。


我想这取决于你觉得你对自己工作水平的感受,你是否有精力使用终端命令来 lint 你的文件,或阅读:help 来找出配置你的.vimrc 文件的方法(我开始使用 Vim 时从未使用:help,一开始互联网资源绝对是你的好朋友)。


但说实话,我认识的很多人会用不那么有趣的方式来浪费他们的时间,比如漫无目的地刷 facebook,或者在 Netflix 上重新看几集老友记之类。


有时我想做一些比较有互动性的事情,而不是从头到尾都在写代码。如果我下班后或周末累了,过去我会玩音乐或电脑游戏;现在我会在家里修一些东西,或者用 Vim 做些修修补补。


我会思考一些可以在 Vimscript 中写出来的小功能,或整合一个有用的命令行工具,甚至只是阅读一些我从未见过的:help……总之让我有事情可做就行,不是什么我必须完成的任务,但也不完全是浪费时间。

Vim 让代码写起来就像打游戏一样


我深入了解 Vim 后就彻底不再玩电脑游戏了,这是因为它的控制方式简直就像游戏一样。Vim 有一个模块化的结构,允许你使用各种命令的组合操作。这很像是你在格斗游戏中进行连击的方式。


大多数命令有两个、三个或四个部分。三部分结构的一个版本是这样的:操作符(operator)-文本对象(text object)-动作(motion)。


操作符包括删除(delete)、更改(change)、视觉选择(visual select)和替换(replace),每次选一个使用。


文本对象要么在内部(inside)要么在周围(around)。


动作有很多种,我们稍后会具体讨论,现在我们可以把动作看作是命令的一种目标。举个例子,我可以按 dib,意思是在块内删除(delete inside block)。


其中操作符是 delete,文本对象是 inside,动作是 block。这样就可以删除一个(括号)块内的所有内容。


可选的组合数量很多:


di'——删除(delete)“单引号”内(inside)的内容。


da"——删除“双引号”周围(around)的内容。


dit——删除 html 标签(tag)内的内容。


ci[——改变(change)[方括号] 内的内容。


正如我前面所说的,可供选择的动作命令有很多,它们的表现也各不相同,具体取决于你是在三部分组合中使用(如上所述),还是在两部分组合中使用(这时去掉文本对象,让命令从光标位置向后运行)。


下面是你可以在上述三段式组合中使用的一些相关动作的清单。--------------------------------------------------| motions                           | key        ||-----------------------------------|------------|| word                              | w          || WORD (includes special chars)     | W          || block (of parentheses)            | b or (     || BLOCK (of curly braces)           | B or {     || brackets                          | [          || single quotes                     | '          || double quotes                     | "          || tag (html or xml <tag></tag>)     | t          || paragraph                         | p          || sentence                          | s          |--------------------------------------------------
复制代码


这些命令可以让你快速而轻松地改变一个函数的参数、一个字符串的内容或一个 if 块的内容。一旦你学会了这些命令,在哪里你都会想用一用。


其他文本编辑器都会让人感到繁琐和笨重,你会在每一个你能找到的环境中安装“Vim 模式”。

关于动作的更多信息


动作是你在 Vim 中使用最多的按键命令类型,因为它们可以单独用来移动光标。有些动作可以单独使用,而有些动作只有在作为组合的一部分使用时才能发挥作用。


例如,w(forword)键会将光标一次向前跳过一个单词,但'单引号不是一个单独的动作,它的作用完全是另一回事。


有些动作会变成不同的类型,取决于它们是组合使用还是单独使用。例如,在上面的三段式组合中,b 键的意思是块,但当你单独使用它时,它的意思是返回(back),并且每次向后移动光标一个单词。


Vim 的命令是上下文感知的,也是模块化的。不同的键意味着不同的操作,这取决于你何时使用它们以及光标位于何处。


它很像一种语言,你可以把这些命令看成一个句子:删除这些'单引号'内的内容(delete inside these ‘single quote’。


原文链接https://sean-warman.medium.com/why-vim-is-better-than-vscode-d09e2355eb37

2022-02-17 10:265060
用户头像
李冬梅 加V:busulishang4668

发布了 983 篇内容, 共 588.4 次阅读, 收获喜欢 1143 次。

关注

评论 6 条评论

发布
用户头像
我主要是不会用vim ..
2024-04-26 10:49 · 浙江
回复
用户头像
虽然VIM是我的最爱,但是不得不承认,VS Code还是相当不错的,我也经常一起使用。
2022-02-26 09:59
回复
用户头像
除去了vscode GUI对带宽的占用这一点,可是别忘了vscode还有V im的插件,
2022-02-19 23:07
回复
用户头像
它不会扫描你的目录来寻找函数定义,它不会穿越语法树给你提供复杂的自动完成建议,它不会计算你光标的上下文并向文档 API 发出请求,它不会对每一行代码做 git blame,它不会自动下载每个文件的语法。

这就是vim最大的问题了,绝大部分时候自动提示可以算是刚需了
2022-02-17 16:43
回复
“但是 Vim 可以做所有这些事情......只要你让它做就行。”
——
刚需的是“功能”,不是“自动”
2022-02-18 09:38
回复
实际上,是否简单易用反而比有没有,对80%的人来说,比那点顺畅感更重要了。因为四处查找脚本,一脸懵逼的不断看着vim工作与期望不一样,那是相当劝退的体验了。就像五笔练好了可以碾压拼音
2022-02-21 09:06
回复
没有更多了
发现更多内容

阿里数据中台底座的12年建设实践

阿里云大数据AI技术

还在使用NoSQL数据库?为IoT选择TSDB

数据库 大数据 时序数据库 tsdb 数据智能

存储大师班 | NFS 的诞生与成长

QingStor分布式存储

分布式存储 分布式文件存储 NAS NFS

解决智慧城市发展困扰:Web3D智慧环卫GIS系统

一只数据鲸鱼

GIS 数据可视化 智慧城市 智慧环卫

【等保知识】等保测评机构申请条件,所需资料以及流程

行云管家

等保 堡垒机 行云管家 等保测评

Android Flutter 多实例实践

网易云信

flutter 架构

《人这一辈子,都在为认知闭环买单》读后感---刘润

Changing Lin

区块链不是一个风口,而是一个时代

CECBC

实战-使用 SSM 工具创建可动态扩容的存储池

学神来啦

Linux 运维 ssm Linux教程

6月热点:BML全新升级WebIDE编程环境,度目智能视频分析盒G1上新

百度大脑

人工智能 BML

kafka日志存储以及清理机制

泽睿

kafak

【得物技术】得物开放平台进阶之路

得物技术

安全 后端 平台 订单

药物研发使用北鲲云高性能计算平台,有效解决研发效率问题

北鲲云

数字人民币如何普惠百姓?建行发布新金融数字便民计划

CECBC

Jar 组件自动化风险监测和升级实践

Qunar技术沙龙

安全 风险管理

Ipfs国家认可吗?国家对ipfs区块链是什么政策?

区块链 分布式存储 IPFS fil

Chaos Mesh 助力 Apache APISIX 提升稳定性

API7.ai 技术团队

lua 网关 APISIX Chaos Mesh

细节分析Linux中五种IO模型和三种实现方式

Linux服务器开发

网络编程 epoll Linux服务器开发 Linux后台开发 IO模型

怎么才能写出100个用户体验的关键时刻?

石云升

读书笔记 用户体验 关键时刻 7月日更

模块三作业

燕燕 yen yen

架构训练营

可以同时管理公有云和私有云资源的软件哪个好?

行云管家

公有云 私有云 云管平台 云资源

又一数据库高危漏洞爆出,数据安全如何有效保障?

华为云开发者联盟

redis 漏洞 GaussDB(for Redis) 开源Redis 数据库安全

多鲸资本发布《2021教育实时音视频行业报告》:拍乐云以质取胜做行业引领者

拍乐云Pano

从零开始学习3D可视化之数据对接(3)

ThingJS数字孪生引擎

大前端 数据 物联网 可视化 数字孪生

揭秘Hologres如何支持超高QPS在线服务(点查)场景

阿里云大数据AI技术

技术解码 | 腾讯云SRT弱网优化

腾讯云音视频

百度AI寻人获评《新周刊》2021年度公益项目

百度大脑

人工智能 寻人

启动、内存、卡顿三大分析,用户体验就用它?

App

从 Web 图标演进历史看最佳实践

百度Geek说

大前端

丰富 TF Serving 生态,爱奇艺开源灵活高性能的推理系统 XGBoost Serving

爱奇艺技术产品团队

开源 优化 tensorflow serving 推理

上架一夜遭全网封杀!阿里大牛熬夜半年手码的Java面试指南太强了

白亦杨

Java 编程 程序员 架构师

我为什么说Vim比VSCode更好用_AI&大模型_Sean_InfoQ精选文章