V

Vim:9 分钟内化敌为友

2025-05-25

Vim:9 分钟内化敌为友

三年强化学习的经验教训

简而言之:
Vim 是迄今为止最能提升效率、最令人愉悦、最有回报的工具。这篇文章是我很久以来就萌生的想法;关于 Vim 的信息简直数不胜数,每次开始写作,我都觉得自己只会让信息更加混乱。现在我觉得它变得太重要了,不容忽视,它对效率的提升作用巨大,而且它可能是我在学习过程中决定采用的最好的工具,所以我分享了我的学习过程。这篇文章只是我个人的看法,关于我认为任何人都应该如何开始。由于我通常更喜欢提供可靠的步骤和实际的操作方法,所以我试图在这里创建这篇文章,以便读者不会迷失在浩瀚的信息海洋中。

多年来,Vim 对我来说一直很陌生。在我作为初级员工参加的第一次面试中,招聘经理想测试我有限的技能,问我最喜欢的 IDE 是什么。我的回答类似于“Notepad++”。不用说,这显然出乎他的意料。
他进一步追问:“你觉得 Vim 怎么样?”
我回答道:“Vim??那不就是个没人知道怎么退出的控制台程序吗?”
长话短说,我没得到那份工作……

对我来说,Vim 就是系统管理员在视频里用的 CLI 编辑器,也是世界各地潮人开发者常用的黑客工具。“为什么有人会这样? ”——每当我遇到热情的用户时,我都会反复自问,试图理解。我真心想知道为什么人们如此热衷于 Vim,为什么有人会使用它?既然 Vim 这么难用,为什么还有人会如此积极地使用它并不断改进
现代编辑器到底出了什么问题?

所以我尝试了它。尝试了很多次。
我试用了 Vim 很多次。我想向自己证明我能用它。它是我的劲敌,我不会接受失败。我一度认为 Vim 是一种宗教。有很多人全心全意地信仰它,但也有很多反对者,比如我,看不到光明。所以我把 Vim 放在一边,但还是忍不住一直想着它,因为我不断注意到开发社区的其他专业人士对它评价很高。哎呀,即使在《硅谷》[ s03e06 ]上,争论也是关于空格和制表符、Vim 和 Emacs 的。“真的吗?”我想,“Vim 和 Emacs?”,人们不使用*标准*编辑器?

真正的改变发生在我遇到一位我共事过的最有才华的后端开发人员时。他对 Vim 充满热情,知识渊博,最重要的是,他工作起来又快又流畅,我肯定知道他在做什么。这引出了我“为什么”的开始……

为什么

  1. Vim在任何 *nix 机器、Mac 甚至 Windows 机器上都随处可见。你总能在你的操作系统上找到它原生运行的版本。Vim(或其前身 VI)已经安装完毕,所以即使你不打算用它来做所有事情,你也可能需要非常熟悉它。你希望能够快速找到远程服务器编辑的方法。

  2. 效率极高!
    这是使用 Vim 的秘诀;一旦掌握了基础知识,你的速度就会变得飞快,根本停不下来。无论是写信息还是在线聊天,你都会开始寻找那些快捷键。编写任何代码或编辑代码块都会变得流畅顺滑,甚至达到你从未想象过的高度。

  3. Vim功能
    强大,几乎可以集成任何你能想到的功能。我甚至不用再依赖 git commit、push、浏览历史记录之类的操作了。更进一步,我直接在 Vim 中创建了解决合并冲突的流程

  4. 很棒
    我不确定是否应该将此视为一个真正的因素,但说实话,Vim 是一个令人愉快的工具。每次使用它时,包括编辑这些行时,我都享受我的快捷方式、移动能力、宏和可重复命令。
    想象一下你自己在办公室使用它;你的同事会印象深刻,他们会开始询问资源和技巧。我知道,因为这就是我开始的方式,也是我的其他同事在我之后开始的方式。在达到中等熟练水平后,我们都可以说同样的话:你变得如此之,其他编辑器不再有意义。你可以快速思考,快速工作,再也不会觉得自己是个白痴。

  5. 没错
    。毫无疑问,你有多少次发现自己在一个文件中编辑了超过 20 个位置,一遍又一遍地摸索鼠标,心里却知道自己做的是错的?有多少次你觉得自己在浪费时间点击 UI 按钮或寻找右键单击来帮助你进行更改?对我来说,答案是几十次甚至几百次,直到有一天,我决定停止这一切。

  6. 它非常轻巧;轻到只占用你机器 10% 的资源。请查看下方比较,比较了主流 IDE 的平均内存占用:

在多个 Linux 服务器上对 VIM 平均内存消耗的比较在多个 Linux 服务器上对 VIM 平均内存消耗的比较

如何

说实话,Vim 并不是最容易上手的工具。它真的很难。Vim
的学习曲线非常陡峭,但请放心:如果你尝试,不要放弃,坚持不懈,它1000%会给你带来回报。

IDE 的时间与生产力IDE 的时间与生产力

上面的图表简单展示了我的学习曲线。使用其他任何 IDE,我都能很快达到半熟练的水平(“半熟练”这个词只有在了解 Vim 的功能后才会说……)。然而,Vim 的绿色曲线展现了我最初的挣扎,但一段时间后,它变成了一项不可思议的技能。

我是如何做到的?

经过几次残酷的斗争,我终于夹着尾巴回到了备用 IDE,并决定真正学习 Vim。以下是我的做法:

  1. 有一本可以随身携带的漂亮小笔记本

  2. 我买了Drew Neil 的《实用 Vim》精装本和 iPad 版,方便随时随地阅读。

  3. 每天晚上睡觉前,我都会读到一条提示——这本书的设计非常巧妙,适合轻松、缓慢地学习

  4. 我的 Mac 上的 IDE 被移除了,再也没有 VSCode 或 PyCharm 的武器可以依靠了。现在就只有 Vim 了。

  5. 我订阅了“快速掌握 Vim ”时事通讯,并在Twitter上关注他们,在那里我不断学习新的技巧

  6. 我已经开始在网上列出我一路学习和掌握的技巧,并一直保留至今。
    说到新技巧,它们无穷无尽:即使工作多年后,你也会发现自己对一个从未听说过的功能赞不绝口。Vim 就像一个无限的糖果罐。

在 VIM 上轮流开玩笑……不要放弃战斗;这是值得的在 VIM 上轮流开玩笑……不要放弃战斗;这是值得的

循序渐进

经过几天的阅读,我慢慢开始掌握 Vim 中著名的 移动操作hjkl,并学会了搜索和保存按键。我开始理解 Vim 的操作方式。什么是完成每个更改的最快、最优雅的方式。我发现自己读到一个小技巧后,就会起床尝试,并把它记在笔记本上。

并非每个人都适合直接投入使用。如果你还不想放弃其他一切,只使用 Vim,不妨尝试一些优秀的 IDE 集成;其中一个很受欢迎的是VSCode 的 Vim模式它可以将 Vim 的大部分功能和能力直接添加到你心爱的(但很快就会被淘汰😉)IDE 中。我尝试了一下,但很难找到我习惯的全部功能,所以我直接回到了 Vim。

什么时候

这个问题问得挺有意思,不过——就现在。你可能正在启动一个新项目,或者开始一份新工作;这些只是你采用一个能改变生活的新工具的契机。不必太过激进,你可以慢慢来。只要你坚持不懈、意志坚定,几周之内,你就能达到之前提到的那种程度,不再需要其他工具。你将超越仅仅追求高效的阶段:使用 Vim 会比使用其他工具更快。

WHO

玩笑归玩笑,掌握 Vim 对任何作家来说都意味着人生的改变。没错,它设计来编辑代码的,但我现在已经习惯用它来写作了,因为我感觉更自信、更高效、更舒服。这里有一篇很棒的文章:“作家的 Vim ”。

无论您是 IT 人员、DevOps 人员、全职开发人员、偶尔写脚本的人(以及脚本编写者😁),还是数据分析师:每个人都可以使用 Vim 并最大限度地享受它。我编写过 Python、Golang、Crystal、TypeScript Bash 以及大量文本(例如现在的这些行)。我想不出任何文本编辑场景下,vim 都是完美的解决方案。

定制

到目前为止,您已经了解到 Vim 是最通用、可定制的工具之一。它不仅拥有无穷无尽的插件,而且您还可以更改配置文件 (.vimrc),几乎可以更改所有内容。话虽如此,您可能想开始使用Vanilla了。这里有一个很棒的视频,只要了解 Vim 的内置功能,就能省去很多插件的安装工作。推荐使用Tim PopeVim-sensible 插件

插件

Vim 拥有全球最大的爱好者社区之一,拥有海量插件,大部分都可以在 GitHub 上找到。不过需要注意的是,虽然插件很有用,也很有趣,但它们也有一些缺点:

  • 它们对 Vim 的要求很高:你可能会注意到一些高要求插件的滞后和更长的响应时间

  • 它们可能与其他插件/配置冲突:(通常,您不会注意到流行的插件)

  • 它们掩盖了 Vim 的一些功能。你安装的插件在 Vim 中已经具备相当不错的原生功能了——在使用任何炫酷的插件之前,请先检查一下自己。

  • 它们可能会减慢你的学习速度,谨慎地、缓慢地采用它们,并且只有当你觉得有必要时才采用它们

这是我使用的插件的简短列表(我尝试通过偶尔删除不再使用的插件来维护它们)。您还可以在 GitHub 上找到它们的完整列表以及我的 .vimrc。


就是这样,感谢您读到这里!

希望这篇文章能帮助你入门,并找到通往愉悦的生产力提升之路。我知道互联网上充斥着各种信息和想法,但由于我必须自己摸索出最有效的方法,而且尝试了几次才成功,所以我想把这个过程分享给其他寻求指导的人。希望你喜欢阅读这篇文章,也希望分享给所有想要迈出 Vim 第一步的人!

非常感谢Reddit 用户fuzzymidget,他帮助我修改样式和语言,并在 subreddit 上评论我的帖子r/vim

我邀请您看一下我自己的 .vimrc 配置,提出修改建议或提出想法。

我叫 Omer,是ProdOps的一名工程师。ProdOps 是一家全球咨询公司,致力于通过 DevOps 文化,以可靠、安全、便捷的方式交付软件。欢迎在下方评论区留言,或者直接通过 Twitter @ omergsr与我联系。


编辑[7月5日]:

在征得他的同意后,我添加了@russellbateman的评论,该评论提供了另一个角度和一些我自己无法想到的见解:

我使用 Vim/vi 已经超过 35 年了。在(相当宗教化的)编辑器讨论中,一个问题是人们只比较编辑器。Vim/vi 不仅仅是一个编辑器;它是一个功能齐全、功能强大的文本处理器!普通的编辑器,即使是像 Notepad++ 这样非常优秀的编辑器,通常也无法在文本处理方面走得太远。它们仅仅以编辑器的形式存在。
直到最近,兼容 vi 的 IDE 才真正提供了模式编辑的肤浅功能——而这正是 vi 最让人望而却步的地方。它们既不支持 .exrc 或 .vimrc 文件,也没有提供比模式编辑更深层次的键盘控制功能。很多人过去和现在都感到困惑,为什么有人会如此自虐地学习 Vim/vi,只是为了在 IDE 中使用它。
幸运的是,如今,尽管在集成方面存在一些令人讨厌的做法,但像 JetBrains IntelliJ IDEA 这样的一流 IDE 提供了比二十年前那些愚蠢的 IDE 尝试更完整的 Vim 集成。就我个人而言,因为我从小就是一个 UNIX 命令行爱好者,所以我毫不犹豫地在 IDE 之外弹出一个控制台来运行 Vim/gVim,尽管我知道 IDEA 的 vi 仿真可能足以胜任。
最后,尽管我认识到插件的实用性,但我通常不会安装它们。我并不是反对插件,只是,正如 vi/Vim 如今无处不在(并且是新推出的 Linux 系统上唯一的游戏)一样,插件并非无处不在,所以除非我做一些非常专业、不常见的情况,否则我根本不会考虑它们。

文章来源:https://dev.to/omerxx/vim-from-foe-to-friend-in-9-minutes-2np0
PREV
我从 10 年的软件开发经验中学到的 20 条原则
NEXT
黑客如何窃取你的密钥和秘密 他们在 JavaScript 文件中找到它们 他们回顾 Wayback 机器 他们使用 GitHub 他们使用 Google 他们了解你的系统 总结