Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >我为什么说 Vim 比 VSCode 更好用

我为什么说 Vim 比 VSCode 更好用

作者头像
深度学习与Python
发布于 2022-03-23 05:32:58
发布于 2022-03-23 05:32:58
45800
代码可运行
举报
运行总次数:0
代码可运行

作者 | Sean

译者 | 王强

策划 | 李冬梅

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)[方括号] 内的内容。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
下面是你可以在上述三段式组合中使用的一些相关动作的清单。
--------------------------------------------------
| 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-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
剑桥大学研究人员首次使用强化学习训练AI自动驾驶
剑桥大学工程师们用15到20分钟教会了AI有关驾驶的基本知识,而这个过程可能会让人类花费几十个小时。
AiTechYun
2018/07/27
3850
剑桥大学研究人员首次使用强化学习训练AI自动驾驶
物联网技术如何帮助新兴的踏板车共享行业
了解微型交通公司如何利用物联网解决政府法规,与城市共享数据以及加强良好的踏板车驾驶行为。
用户4122690
2020/04/09
3950
物联网技术如何帮助新兴的踏板车共享行业
每周分享第 24 期
以前的 3D 打印,一般都使用塑料。今年,3D 金属打印机问世了,可以用金属打印零件,生成更轻、更坚固、更复杂的形状,而且成本更低、速度更快。这为复杂的金属模具和金属部件的生产带来了前所未有的便利。以后再不担心老机器的零件停产了,只要把老零件扫描一下,原样打印可以了。
ruanyf
2018/09/29
7570
每周分享第 24 期
清华老哥要是会 screen,是不是就不用拖着电脑骑车了
这两天有一个新闻,说是有人拍到了清华有一个学生在一手骑车一手托着电脑,好不潇洒。无图无真相,这是我从在清华读博的朋友的朋友圈里找来的图:
程序员小浩
2020/10/26
6550
清华老哥要是会 screen,是不是就不用拖着电脑骑车了
好用到哭!8个技巧让Vim菜鸟变专家
Vim只不过是一个文本编辑器,但如果你曾见过真正的高手是如何使用vim的,你就会知道,这个软件出人意料地强大、高效、迅捷。对于高水平使用者而言,vim能够帮助其更清晰、明确地表达操作指令。一旦熟练掌握vim语言,使用者就能更加快速地和自己的电脑交流。
昱良
2019/10/21
8400
好用到哭!8个技巧让Vim菜鸟变专家
学习Vim的四周计划
vim具有自定义配色方案,语法高亮,linting和自动填充功能 Vim是一个以非常难学而闻名的命令行文本编辑器(有个关于Vim的笑话:问如何生成一串真随机数,答让一个Web开发人员退出Vim)。所以
小小科
2018/06/20
9000
Vim 初探
本文介绍了Vim编辑器的一些基本操作和技巧,包括模式切换、移动光标、快速跳跃、搜索和替换等。同时,还介绍了一些Vim的插件和扩展,以帮助用户更好地使用Vim编辑器。
IMWeb前端团队
2017/12/29
9740
Vim 利剑常磨,见血封喉
对于以OSX / Linux为开发环境的伙伴们,应该并不陌生。因其轻便,扩展性,可定制化,一直很受开发者追捧。高阶大神,袖中必有深藏。
昱良
2019/07/04
7170
练了一年再来总结的 Vim 使用技巧
作者:P_Chou 来源:见文末 转眼上vim的“贼船”有一年多了。从PHP到C,都在用。想要真正用vim于日常的编码工作,必然需要一些插件的支持。不过本文并不打算总结插件,笔者认为 vim 的两个精髓:组合和重复跟插件也没有什么关系。 命令模式应该是常态 在大多数编辑器中,相信大家都喜欢敲几个单词就 “保存(ctrl+s)” 一下。而在 vim 中,保存是:w,而且需要在命令模式下进行。因此,往往要按Esc:w多达三个键才能保存。很多初学者十分诟病这个设计。事实上,经常使用Esc切换到命令模式才是
小小科
2018/06/20
8910
介绍下vim的基本使用
用过 Linux 系统的朋友一定都或多或少知道 vim ,很多人对这款编辑器的第一印象一定是反人类,可能你不小心进去 vim 的话就不知道怎么退出来了,因此,自从我知道 Ubuntu 图形界面自带 gedit 编辑器时,我就立下 flag 这辈子绝对不用 vim ,可是 flag 这东西不就是用来倒的嘛,最近在 WSL 里面折腾,没有 gedit ,只好学习 vim ,这不, vim 真香!所以嘛,做技术的人还是不要把话说得太绝对,这样只会让人家觉得你很狭隘,一件事物的流行肯定有他的道理,不要固步自封,还是要多去了解一下自己不知道的事务,就像我之前也说过这辈子都不会学 Java 和 PHP ,我自己打脸吧(逃
棒棒鸡不棒
2022/09/01
1.3K0
介绍下vim的基本使用
linux运维月薪12K需要掌握和了解的技术栈
所有的知识都涉及到记忆,就跟英语一样,你看到的那些学习方法,比如躺着背单词,词根快速记忆法。是不是都是与背有关, 也就意味着无论方法有多好,我们都要背过。
互联网老辛
2020/05/15
6410
用Python和NVIDIA Jetson NANO做一个自动驾驶滑板坡道
国外一个开发小哥,突发奇想,想做一个“自动驾驶”滑板坡道,这个滑板坡道可以跟着他骑行到一个宽阔的场地,这样可以实现“随时随地滑板”的自由
GPUS Lady
2023/07/08
1.4K0
用Python和NVIDIA Jetson NANO做一个自动驾驶滑板坡道
日拱一卒,麻省理工YYDS,一节课让我学会vim
今天我们继续聊聊麻省理工的missing smester,消失的学期,讲解那些不会在课上提及的工具和技术。
TechFlow-承志
2022/09/21
5670
日拱一卒,麻省理工YYDS,一节课让我学会vim
Waymo无人车的两件秘密武器:模拟软件Carcraft,秘密基地Castle
李杉 李林 编译整理 量子位 报道 | 公众号 QbitAI 在自动驾驶领域的诸多玩家之中,Waymo拥有最多的测试车辆,也积累了最长的全自动驾驶测试里程。 不过,600辆全副武装的克莱斯勒Pacif
量子位
2018/03/27
1.4K0
Waymo无人车的两件秘密武器:模拟软件Carcraft,秘密基地Castle
vim 回顾
下面是一篇旧文,大多是一些已有知识的整理,并不太成熟。欢迎关注专栏 space-vim , 有空我会以 Vim 自带的 help (不妨 :help help 看一下) 为线索, 分享一些关于 Vim 的小知识 ,也会顺带着介绍一下 space-vim 的配置与用法。
用户1558438
2018/08/23
6530
程序员每天晚上都去翻垃圾,竟然年入60万美元?
普通的拾荒者能从垃圾箱里捡到塑料瓶、纸箱子、 别人丢掉的衣服,而程序员转型的专业选手马特能从里面挖出吸尘器、电脑、滑板车,甚至整整 40 台全新型号的戴尔电脑。
量子位
2018/09/29
4960
程序员每天晚上都去翻垃圾,竟然年入60万美元?
IDEA + Vim,竟可以这么牛逼!!
本教程并不是单纯的vim操作介绍,更多的是与Intellj Idea进行配合。需要同时具备Intellj Idea和vim使用基础的同学学习。
终码一生
2022/04/15
3.4K0
IDEA +  Vim,竟可以这么牛逼!!
UC伯克利ICLR论文:论如何教强化学习模型骑自行车去金门大桥?
AI 科技评论按:本文的作者是来自加州大学伯克利分校人工智能实验室(BAIR)的博士生 Vitchyr Pong,他的主研方向为深度强化学习。在本篇博客中作者介绍了自己发表于正在进行的 ICLR 2018 的一项最新工作——时间差分模型(Temporal Difference Models),该模型属于强化学习中的一种,并且很好地综合了无模型方法与基于模型方法两种策略各自的优点,雷锋网 AI 科技评论根据原文进行了编译。
AI科技评论
2018/07/27
5180
UC伯克利ICLR论文:论如何教强化学习模型骑自行车去金门大桥?
5 个好用的开发者 Vim 插件
我用 Vim 已经超过 20 年了,两年前我决定把它作为我的首要文本编辑器。我用 Vim 来编写代码、配置文件、博客文章及其它任意可以用纯文本表达的东西。Vim 有很多超级棒的功能,一旦你适合了它,你的工作会变得非常高效。
昱良
2019/07/04
9690
提升你的 Vim 技能的 5 个方法
Vim 是最受欢迎的文本编辑器之一,因此绝对值得你花时间去学习如何使用它。就算你只是学习使用这个无处不在的 Vi(m) 命令行文本编辑器打开文件、输入和编辑一些文本、保存编辑的文件并退出程序,你都会受益匪浅。
用户1880875
2021/09/18
8940
相关推荐
剑桥大学研究人员首次使用强化学习训练AI自动驾驶
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验