编辑器Vim之父,布莱姆·米勒(Bram Moolenaar)逝世,享年62岁。 (程式设计圈内广为流传的一句话:世界上只有叁种程式设计师,用Vim的,用Emacs,和用其他的。) 在布莱姆家人发的讣告中写到: 我们必须怀着沉重的心情通知您,由于在过去几周裡病情迅速恶化,Bram Moolenaar于8月3日去世。
为纪念编辑器Vim之父,布莱姆·米勒,我们来学习一下 Vim
Vim 是一个命令行文本编辑器,因难以学习而臭名昭着(流行的笑话是生成一个真正随机的字符串,将 Web 开发人员放在 Vim 前面并告诉他们退出)。那麽为什麽还要费心学习它呢,特别是如果您已经熟悉文本编辑器或 IDE 的话?学习 Vim 的一些好处包括:
Vim 已经安装在任何类 Unix 系统上,这意味着你可以直接在服务器上编辑文件(真正的超能力)
与大多数文本编辑器和 IDE 相比,Vim 是轻量级的,因此即使在最普通的硬件上也能快速高效地运行
Vim 完全是键盘驱动的(大多数操作集中在主行),所以它会让你更有效率?
我在最后一个关于如何提高效率的问题上打了一个问号——这是一个你经常听到的论点,但我不确定这是否适合每个人。基本上,为了高效地使用 Vim,您不仅需要投入大量时间来学习它,而且还需要投入大量时间来掌握它。这意味着您使用它节省的时间会被您投入掌握它的时间所抵消,并且您总是投入时间掌握它。我会说学习 Vim 的最佳理由是因为您喜欢花时间学习和掌握複杂的技能.这样一来,这与为什麽有人想学习一种新乐器并没有什麽不同!
如果这些想法听起来对您很有吸引力,那麽您可以按照下面概述的四周计划来帮助您学习 Vim。这就是我学习 Vim 的方式,它基于我在论坛和教程中反复遇到的建议。我还添加了一些我自己的技巧,这些技巧对我一路走来有所帮助。
第 1 週:每天完成一次 vimtutor
许多人都认为学习 vim 基础知识的最佳方法是在终端中简单地输入以下命令:
$ vim导师
这将在 Vim 中打开一个文本文件,其中包含涵盖基本 Vim 命令的分步说明。您应该需要 30 分钟左右才能完成整个过程。如果您了解 中介绍的命令vimututor,那麽您就已经準备好开始在 Vim 中高效工作了。
问题是其中涵盖了很多命令vimtutor- 您不可能一次性学会所有命令!我的建议是刻意练习,vimtutor每天一次,连续至少一周。每次你这样做时,看看你的时间是否有所改善。为自己设定一个目标——看看你能否在 5 分钟内完成整个任务。重点不是要记住每一个命令,而是要练习足够的时间,直到基本的导航和编辑命令成为第二天性。
如果您的目标是了解足够的 Vim 以便能够在服务器上远程编辑文件,那麽您可以到此为止 - 您已经了解的足够多了,这很危险!如果您想使用 Vim 作为您选择的编辑器,可以继续下一步。
第 2 週:以最少的配置使用 Vim,无需插件
现在您已经可以轻松地在 Vim 中导航和编辑,您将需要对其进行配置以适应您的个人工作流程。Vim 有一个相当乏味且过时的默认配置,但使用配置文件使用现代功能很容易对其进行自定义vimrc。关键是不要疯狂地使用插件来试图让 Vim 成为一个成熟的 IDE——Vim 擅长成为 Vim,但不擅长成为 IDE。
相反,请按照本文构建您自己的vimrc文件。作为起点,这些是我唯一要配置的东西:
添加配色方桉(我使用vim-code-dark,基于 Visual Studio Code)
打开语法高亮
设置空格和製表符
设置自动缩进
打开行号
使用製表符补全查找子文件夹中的文件(观看此视频5 分钟)
配置更快的方式按ESC退出插入模式(我将大写锁定键更改为CTRL并使用CTRL C退出插入模式)
老实说,就是这样!(无插件规则的唯一例外是,如果您需要为 Vim 不支持的任何语言安装特定于语言的支持)。我们的目标是在一周内避免任何额外的配置或花哨的插件——这可能会让人感到痛苦,但它会阻止你把所有的时间都花在配置 Vim 上,而不会花时间练习 Vim。
专业提示:配置 vim 时,请使用.vim主目录中具有以下目录结构的文件夹(在此处阅读更多详细信息)。vimrc较新版本的 Vim 会在文件夹中查找文件.vim,因此您可以将所有内容保存在一个文件夹中。这使您可以将您的.vim文件夹变成一个 git 存储库,您可以轻松地将其克隆到任何计算机上!
.vim/
├── colors/ <- 配色方桉目录
├── plugin/ <- 标準插件目录
└── vimrc <- 包含主配置的文件
第 3 週:使用 Vim 和最少的插件
在您将 Vim 用于实际项目后,您将对 Vim 的功能有更好的了解,并且您可能会渴望进一步自定义它。但是,您仍然应该避免安装从根本上改变 Vim 工作方式的插件。这是我建议您现在仍然避免使用的流行插件类型的列表:
避免安装插件管理器(新版本的 Vim 本身就可以很好地处理插件)
避免安装树浏览器或模煳文件查找器插件(:find使用子文件夹搜索效果很好)
避免安装可视选项卡插件(尝试习惯本机 Vim 缓冲区,:b
避免安装自动完成插件(Vim 已经可以使用 来完成此操作
避免安装多行注释插件(尝试使用可视模式)
避免为多个游标安装插件(尝试使用/搜索n并.根据需要重複)
这裡的总体主题是插件通常是阻碍你学习 Vim 实际功能的拐杖。所有上述类型的插件都很棒,可以节省您的时间,但只有在您完全了解如何使用“vanilla”Vim 完成相同的任务时才应该安装它们。
话虽这麽说,有一些插件不会改变 Vim 的核心行为,但可以让生活变得更方便。以下是我使用的一些属于该类别的插件:
考虑安装 auto-pairs.vim(成对插入或删除括号、括号、引号)
考虑安装 endwise.vim(在 Ruby 中,在 、、等end之后添加)ifdodef
考虑安装 ragtag.vim(HTML、erb 等中标籤的帮助程序)
第 4 週:用动词和名词编写 Vim 命令
此时,您应该足够了解 Vim,以便专注于编写新命令而不是记住新命令。为了编写新命令,将 Vim 视为一种语言会有所帮助。Chris Toomey 的Mastering the Vim Language演讲值得完整观看,看看这个概念有多麽强大:
简而言之,您需要了解一些动词和名词:
动词 — d(删除)、c(更改)、y(複製/複製)、>(缩进)
名词(动作)—— w(单词)、b(后退一个单词)、2j(向下 2 行)
名词(文本对象)—— iw(内部单词)、it(内部标籤)、i”(内部引号)
然后您可以组合动词和名词来创建任意数量的命令:
dw删除到单词末尾
diw删除光标处的整个单词
y4j複製 4 行
cit更改 HTML 标记内的内容
演讲指出,记住大约 30 个命令使您能够编写 2,000 多个不同的命令。请注意,我将把它放在第 4 週——这些内容非常有帮助,但前提是您对 Vim 有一个很好的总体掌握。3 週后,您应该能够很好地掌握达到这一魔法级别所需的 30 个命令!
演讲还提到安装插件以向 Vim 语言添加更多内容。与往常一样,安装插件时应小心谨慎。但在这种情况下,我们讨论的是作为一种语言添加到 Vim 的插件(而不是与 Vim 核心行为相矛盾的插件)。一些值得一看的插件:
考虑安装 Surround.vim(添加一个新的修饰符来更改周围的引号、括号等)
考虑安装 commentary.vim(向注释行添加新动词)
考虑安装 repeat.vim(添加对某些插件的.repeat支持)
(以上所有插件均由Tim Pope开发,您在掌握 Vim 的过程中肯定会遇到这个名字)。
专业提示:在演讲中,他们使用相对行号进行了回顾,实际上我不推荐这样做。当它第一次推出时,很多人都是它的忠实粉丝,但我也听说人们在一段时间后遇到了问题(代码难以阅读,有时会导致性能问题)。我个人不认为它有什麽用处,因为您可以使用常规 Vim 命令G或gg轻松完成同样的事情(移动或删除到特定行)(请参见此处)。
结论
学习 Vim 是一项繁重的工作,但也很有趣。如果您不愿意花一个月的时间来学习文本编辑器,那麽这可能不适合您。然而,我确实认为大多数开发人员会受益于遵循第一周的建议,至少获得能够直接在服务器上编辑文件的超能力。您将能够做一些令人惊奇的事情,例如使用 VPS在 iPad 或 Chromebook 上真正编写代码。至少,当 Vim 在你的终端中随机打开时,你不会因为陷入困境而显得愚蠢!
如果您确实花时间完成了全部 4 週,那麽您可以将您的程序员编辑游戏提升到一个全新的水平。老实说,我不知道它是否会让您更有效率(因为您可能会花费编写代码节省的时间来学习更酷的技巧和尝试新的配置)。同样,这更像是学习乐器 - 根据您的个性,您可以从不断掌握 Vim 的过程中获得真正的乐趣。希望您发现这些提示对您的旅程有用!