写点什么

为什么我不是 Vim 的狂热粉丝?

  • 2022-08-03
  • 本文字数:2200 字

    阅读完需:约 7 分钟

为什么我不是 Vim 的狂热粉丝?

有大量的开发人员在开发过程中使用 Vim,我是那些认为 Vim 很糟糕的人之一,听我说说吧。

 

前不久,我在之前的一篇文章里曾说过,我非常讨厌使用 Vim 来进行开发,很多人对我和我的看法提出了疑问。本文不仅阐明了这个问题,也解释了为什么我没有将 Vim 推荐给别人用于开发。

 

我敢肯定有些人不赞同我这些观点,这是好事。以下列出的一切都是我个人的观点,每个人的观点也都不同,如果是这样的话,或许我会让你改变主意,让我们开始吧。



而且,标题是“为什么我不是 Vim 的狂热粉丝”,而不是“为什么你应该停止使用 Vim”。总之,这就是我的观点,别把它当回事。


Vim 是什么?

 

Vim 是一款基于终端的文本编辑器,它可以被配置成几乎任何东西,从一个基本的功能编辑器到一个完整的、功能丰富的 IDE。

 

它采用了“模式系统”,你可以通过“i”、“ESC”以及其他一些键来进行各种模式的切换,比如插入模式、可视模式、正常模式等,并与文档进行交互。



默认情况下,Vim 看上去是空的,但在定制方面,文本编辑器可以被做成接近任何东西的样子。至少对 Vim 来说,定制是最大的关键。更不用说,这款文本编辑器几乎可以塞进任何功能,并被重新加工成其他类似的文本编辑器。一些类似的编辑器包括 Vi、Neovim 等。

 

文本编辑器确实是一头“野兽”,可以被做成几乎任何东西。


我碰到的问题

 

然而,凡事总有坏处,Vim 中存在许多缺陷,让我无法将其用于开发中。以下是几条:

思想观念



对于所有想知道的人来说,你按了 Esc 键进入正常模式,然后敲“:q!”

 

作为一名开发者,所用的程序,可能应该照顾到从 git 到自动完成,到语法高亮,诸如此类。我是说,如果你是一名开发者,你显然更倾向于语法自动完成、git 集成、图形化,和其他一些缺省的功能,而不是我们花时间自己做,因为 Vim 是为开发者设计的。

 

Vim,让我们配置我们想要的东西。但是,这需要我们进行配置,而这些都是大家都需要的,并且可以在 Vim 中默认添加。

 

那么,你也许会问,那些不需要额外功能的人呢?这个问题问得很好。一些非开发者,他们也使用 Vim,不需要任何自动完成或者相似的功能。这就是 Vi 或者 vi-minimal,因此这应该是可行的。

 

工作流——不同的模式


要是你明白了这一点,恭喜你。你理解了 Vim 的工作流。

 

以另一款文本编辑器为例,比方说 Atom 或 Sublime,我们会有一个有“模式”的界面,你只需要输入你所需要的内容。这样既能节约时间,又能提高工作效率。

 

我是说,即使从逻辑上讲,在打字之前按“i”键,在拷贝之前按“Shift+V”组合键,这在工作时可能看起来是一件小事,但从长远来看,至少对我而言,是完全多余的。

 

也许有人会说,由于“模式系统”在很大程度上是基于键盘的,所以它可以帮助工作流。但是,即使是这样,我也可以 Atom 这种通用的文本编辑器,在任何地方都可以只用键盘和一种模式进行工作。

 

即使是最微小的事情,比如撤销,我们也必须要按 Esc 键,确保我们处于正常模式,然后再按“u”键,我想直接按“Ctrl+Z”组合键会更快捷。更不用说,要适应这个非同一般的工作流,将会耗费很多的时间。

 

基于终端


文本编辑器中的 vim

 

现在,也许很多人会认为这是一种优势。当然,作为一款可以直接从终端上打开的文本编辑器,它确实有很多优势。我的意思是,它大概就是我在 tty(CUI)界面中所用到的文本编辑器。

 

不过,我个人觉得,它从终端上工作,存在很多缺陷。第一个最大的缺陷是,除了文本之外,它无法看到任何内容,这看起来可能是件小事,但是对于那些经常涉及图形的游戏开发者却没有太大的用处。同时,我可以在 Atom、Sublime 之类的文本编辑器快速查看任何意图。

 

很耗费时间……



Vim 是一款需要花费大量的时间来进行配置和使用的文本编辑器,但其实不值得。我说的是真心话。

 

我用了三四年的时间来建立自己的高配置 vimrc 文件,并且已经适应了 Vim 的基础工作流。不过,到了最后,我发现我可以用“普通”的文本编辑器来完成相同的工作,而不用花几年的时间来调整。更不用说,像 VSCode 这样的文本编辑器,只要登陆你的微软账户,就能得到所有你已经完成的“配置”。(译者注:原文有误,VSCode 并不能直接使用微软账户进行同步配置,要用到 Setting Sync 的 VSCode 插件才能做到同步配置)。而 Vim 则需要一个多小时才能做好充分的准备工作(那是我已经用了好几个月来建立我的 vimrc 并且已经适应的前提下)。比起 VSCode,登陆时间连 2 分钟都不到,你能明白我要表达什么意思吗?

 

太陈旧了(奖赏)



我称这是一种奖赏,因为陈旧总是不意味着坏,但有时候,它意味着过时。在我看来,Vim 对于这样一款文本编辑器来说实在是太过陈旧了,它仍然使用“hjkl”键来移动光标。对于那些不知道的人来说,在键盘真正实现单独的方向键之前,“hjkl”键是被当作方向键使用。

 

另外,还有一个简单的附带说明,那就是它在最近没有得到改进。我的意思是,Vim 在最近的几个发布版本中加入了一些不常用的命令,集成了一些新的插件,还有一些后端的小改动。与其他编辑器相比,它需要更快的开发进展。

 

总结

 

我将在 YouTube 上制作更多的视频,但我的观点是这样的:为了使文本编辑器更高效,Vim 的努力似乎有点过头了,而这种努力本身就没有抓住重点。

 

作者介绍:

 

FadinGeek,拥有多重身份:佛教徒、Youtube 播主、开发者、设计师和编辑。

 

原文链接:

 

https://medium.com/interviewnoodle/why-im-not-a-big-fan-of-vim-vim-like-text-editors-7120889dce1d

2022-08-03 18:336325

评论 9 条评论

发布
用户头像
防民之口, 甚于防川, 一个健康的人, 会害怕几声咳嗽就丢了性命吗?
2025-06-10 10:42 · 四川
回复
用户头像
真的服了,发个技术评论, 居然也能触发关键词?!, 而且也不知道是哪个关键词, 不知道会不会有一天, "关键词"也会成为关键词?
2025-06-10 10:39 · 四川
回复
用户头像
VS Code早就可以直接同步了

(译者注:原文有误,VSCode 并不能直接使用微软账户进行同步配置,要用到 Setting Sync 的 VSCode 插件才能做到同步配置)

2022-08-05 11:23
回复
用户头像
没有VIM的编辑器一概进入我的黑名单
2022-08-04 15:08
回复
为啥啊, 可以说说原因吗
2025-06-10 10:45 · 四川
回复
用户头像
如果一个编辑器没有VIM模式,那这个编辑器不值得使用。
2022-08-04 08:50
回复
为啥啊, 为何明明是 如果-那么 句式, 却感受不到半分逻辑?
2025-06-10 10:46 · 四川
回复
用户头像
感觉作者过于片面了,vim有vim的优势,其它文本编辑器也有各自的优势,并没有谁一定比谁好,比如,在vscode中使用vim插件,在可以全键盘快速操作的同时,也可以使用vscode的快捷键进行补充,例如使用command+z进行撤销,不冲突的,反而会更便捷。
2022-08-04 08:36
回复
mac相比Windows多了cmd键,对于vim使用者很友好,规避了许多快捷键冲突,Windows上系统的ctrl和vim的ctrl冲突,win键又很鸡肋,这也是我的工作电脑从win转到mac的一个原因
2022-08-05 17:05
回复
没有更多了
发现更多内容

管控内部威胁,数据如何安全使用?

极盾科技

数据安全

月日均AUM提升40倍!看这家银行如何做好网金客群分层经营?

索信达控股

科技 客户分群 网金客群

Apache Doris Join 实现与调优实践|未来源码

MobTech袤博科技

手动在CentOS7.4环境下,安装MySQL5.7.X版本的方法。

@下一站

MySQL 程序猿 11月月更

Prometheus Native Histograms 实现原理及应用

Grafana 爱好者

云原生 可观测性 Prometheus 11月月更

腾讯蓝鲸 API 网关如何借助 APISIX 实现产品升级与业务完善

API7.ai 技术团队

云原生 API网关 APISIX 客户案例

文档管理系统平台:实现文档管理现代化

Baklib

利刃出鞘 | 从五大核心技术来看Bonree ONE 2.0的全球竞争力

博睿数据

可观测性 核心技术 智能运维 博睿数据 ONE平台

华为全联接2022 openEuler 累计装机量达 245 万套,市场份额 22%,助力企业高效进行操作系统迁移

极客天地

为什么要做数据分析

穿过生命散发芬芳

数据分析 11月月更

“工程化”对于大型数据平台而言,意味着什么?新一届StartDT Hackathon来了

奇点云

数据平台 奇点云

体验不尽,进化不止,看视频云技术六大创新

阿里云CloudImagine

阿里云 视频云 云栖大会 2022云栖大会

什么是入侵检测系统?有哪些分类?

wljslmz

网络安全 11月月更 入侵检测 IDS

鱼传科技:函数计算,只要用上就会觉得香

阿里巴巴云原生

阿里云 云原生 函数计算

化繁为简|AIRIOT智慧水务信息化建设解决方案

AIRIOT

物联网 智慧水务

基于HTML5的爱心表白动画特效

芯动大师

HTML5, CSS3 11月月更 爱心代码

简单概述理解vue的MVVM模型

张三丰无极

vue cli 11月日更 11月月更

butterfly美化日记(一)

程序员余白

Hexo butterfly 博客配置 11月月更

如何解决产品知识培训问题?

Baklib

让开发者成为决定性力量,华为开发者英雄汇圆满落幕

华为云开发者联盟

云计算 华为云 企业号十月 PK 榜

Vue基础学习(三)

Studying_swz

Vue 11月月更

什么是API

阿泽🧸

API 11月月更

是谁的请求导致我的系统一直抛异常?

阿里巴巴云原生

阿里云 微服务 云原生

HMS Core的AI之力与开发者的英雄本色

脑极体

【iOS逆向】小陈手牵手带你看懂iOS伪代码

小陈

移动安全 iOS逆向 ios安全

快速实现无人车远程控制开发——实践类

阿里云AIoT

阿里云 物联网 远程控制

【愚公系列】2022年11月 微信小程序-app.json配置属性之tabBar

愚公搬代码

11月月更

算法题学习---判断链表中是否有环

桑榆

算法题 11月月更

vue数据代理

我搬去水星了

vue cli 11月日更 11月月更

2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ‘ ‘ 。 每个单词只由小写

福大大架构师每日一题

bash Shell 福大大

下一代龙蜥操作系统 Anolis OS 23 公测版正式发布|2022云栖龙蜥实录

OpenAnolis小助手

开源社区 龙蜥操作系统 分层分类 2022云栖大会 Anolis23

为什么我不是 Vim 的狂热粉丝?_大前端_FadinGeek_InfoQ精选文章