学习Vim的四周计划

vim具有自定义配色方案,语法高亮,linting和自动填充功能

Vim是一个以非常难学而闻名的命令行文本编辑器(有个关于Vim的笑话:问如何生成一串真随机数,答让一个Web开发人员退出Vim)。所以为什么还要学习它呢,尤其是当你已经习惯现有的文本编辑器或者IDE的情况下?学习Vim的优势包括以下几点:

  • Vim内置于任何类Unix系统上,这意味着你可以直接在服务器上编辑文件(这点非常有用)
  • 与大多数文本编辑器和IDE相比,Vim是轻量级的,所以它即使在性能较弱的硬件上运行速度也很快且高效
  • Vim是完全由键盘驱动的(且大多数动作都集中在主排),因此它将使您更有效率?

在最后提高效率这一点后我打了个问号,这是你会经常听说的观点,但是我觉得不一定适用于每个人。基本上,为了让使用Vim更有效率,你不仅需要花很多时间来了解它,更需要掌握它。这意味着使用它节约的时间通常会与用来熟练掌握它的时间抵消,而你需要持续花时间来掌握它。我会说学习Vim最好的原因是你享受花时间学习掌握一项复杂的技能这一过程。在这种意义上,这与想要学习一种新乐器的人的心态并无不同。

如果你认为以上列出的这些原因有吸引力,那你可以按照下面列出的四周计划来学习Vim。 这是我曾经学习Vim的方法,它来源于我在各论坛和教程中多次遇到的相似的建议。我还加入了一些我自己学习过程中的经验。

第1周:每天学习一次vimtutor

很多人相信学习vim基础的最佳方法是在终端简单地输入这一命令:

这一命令会在Vim中打开一个包含基本Vim命令的分步说明文本文件。浏览完整个文档大概需要30分钟左右。如果你了解vimtutor中涵盖的命令,那么您已经准备好使用Vim了。

问题是vimtutor包含了很多命令,没有办法一次学会所有的命令!我的建议是每天坚持输入一次Vimtutor,这一习惯至少持续一个星期。每次你这样做时看看学习完整个文档的速度有无提升。同时为自己设定一个目标——看看你是否可以在5分钟内看完整个文档。要点是不要死记硬背每个命令——重点是花大量的时间练习,直到基本的导航和编辑命令成为第二本能。

如果您的目标是要足够了解Vim,以便能够在服务器上远程编辑文件,那么您可以在此停止——您已经知道足够多了!如果您想使用Vim作为您的编辑器,您可以继续下一步。

第2周:尽可能少地进行其他配置,不使用插件

学会了Vim中的导航和编辑,下一步你会希望进行个性化配置。Vim的默认配置相当普通而过时,但使用vimrc配置文件可以自定义功能。重要的是不要添加太多插件试图使Vim成为一个完整的IDE——Vim作为Vim就很好,作为IDE则很糟糕。

请按照本文来构建您自己的vimrc文件。作为开始,这些是我为数不多的推荐配置的东西:

  • 添加一个配色方案(我使用的是vim-code-dark,基于Visual Studio代码)
  • 打开语法高亮
  • 设置空格和制表符
  • 设置自动缩进
  • 打开行号
  • 用tab在子文件夹中查找文件
  • 配置为按ESC快速退出插入模式(我将我的大写锁定键更改为CTRL并使用CTRL C退出插入模式)

事实上,这就是全部了!(无插件规则的唯一例外是,如果您需要对Vim不支持的语言安装语言具体支持)。 目标是避免一周内的任何其他配置或花哨的插件——这可能会感到痛苦,但这将避免你花费所有时间来配置Vim,而不是练习Vim。

提示:当您配置vim时,在主目录中使用结构如下的.vim文件夹。较新版本的Vim将在.vim文件夹中查找vimrc文件,以便将所有内容保存在一个文件夹中。 这允许您使您的.vim文件夹成为一个git repo,您可以轻松地复制到任何计算机上!

第3周:尽可能少地使用插件

在使用vim完成过实际项目之后,你会更好地了解vim的功能,此时你可以进行一些自定义配置。但是,你仍然应该注意不要安装从根本上改变vim如何工作的插件。以下列举了一些很受欢迎的插件类型,但我建议你现在不要使用:

  • 不要安装插件管理器(较新版本的Vim原生的插件管理就已足够)
  • 不要安装树浏览器或模糊文件查找器插件(使用:find与子文件夹搜索效果就很好)
  • 不要为可视化标签安装插件(试着习惯原生Vim缓存,:b <TAB>很有用)
  • 不要安装自动完成的插件(原生Vim已经可以使用<CTRL n>来补全)
  • 不要为多行注释安装插件(尝试使用可视化模式)
  • 不要为多游标安装插件(使用带n的/搜索,需要时重复.)

以上所要表达的重点是,很多时候插件会阻碍你学习Vim实际功能。所有上述类型的插件都很棒,可以节省时间,但是只有当你完全了解如何使用原生Vim完成相同的任务后,你才能安装这些插件。

也就是说,有一些插件,不改变vim的核心行为,且会使日常使用更方便。以下是我使用的一些插件:

  • 考虑安装auto-pairs.vim(成对插入或删除括号,花括号,引号)
  • 考虑安装endwise.vim(Ruby中,在if,do,def等之后自动添加end)
  • 考虑安装ragtag.vim(HTML,erb等中的标签助手)

第4周:用动词和名词组合Vim命令

此时你已经足够了解Vim,可以开始组合新的命令,而不是记忆新的命令。组合新的命令代表着正式将Vim视为一种语言。Chris Toomey的“掌握Vim语言”演讲很值得一看,它展示了这个概念的强大之处。

简而言之,你需要知道一些动词和名词:

  • 动词 — d(删除),c(修改),y(复制),>(缩进)
  • 名词(动作性的) — w(单词),b(前移一个单词),2j(下移两行)
  • 名词(文本对象) — iw(内部单词),it(内部标签),i""(内部引用)

然后,您可以组合动词和名词来创建任意数量的命令

  • dw:删除到单词末尾
  • diw:删除光标所在单词
  • y4j:复制四行
  • cit:修改HTML标签内的内容

演讲中指出,记住约30条命令可以让你组合超过2000个不同的命令。请注意,我在第4周提出这一点 - 这个东西是非常强大的,但只有当你对Vim有一个很好的把握时才有用。 3周后,你应该能很好的掌握30个必要的命令,以达到这个级别!

该演讲还提到安装插件以增强Vim语言。一如之前反复提及的,安装插件时应谨慎。但在这种情况下,我们讨论的是增强Vim语言性的插件(而不是与Vim的核心行为相矛盾的插件)。以下是一些值得一看的插件:

  • 考虑安装surround.vim(添加一个新的修饰符来更改包围的引号,括号等)
  • 考虑安装commentary.vim(添加一个新的动词到注释行)
  • 考虑安装repeat.vim(为特定插件添加.repeat支持)

(上述所有插件都是由Time Pope提供,一个在你学习Vim的过程中必然会遇到的名字)

提示:在演讲中,他们使用相对行号,实际上我不推荐。很多人在相对行号刚开始引入时就成了其粉丝,但我也听说过一段时间后遇到问题的人(例如代码可读性变差,有时会导致性能问题等)。因为你可以使用常规的Vim命令G或gg轻松完成相同的操作(移动到或删除特定的行),所以我个人觉得它没有实际用途。

总结

学习Vim是件繁重的任务,但也可以很有趣。如果你对花费一个月的时间来学习一个文本编辑器这件事感到畏缩,这可能不适合你。然而,我认为大多数开发者可以从第一周的建议中受益匪浅,至少能够获得直接在服务器上编辑文件的能力。你将能真正实现使用VPS在iPad或Chromebook上编写代码。至少,当Vim在你的终端中打开时,你将不会看起来很傻的困住!

如果你确实完成了4周计划,你的编程能力将提升一个等级。实际上我不知道这是否会使你更有效率(因为你可能会把编写代码的时间用来学习更多酷炫技巧并尝试新的配置)。正如之前所说,它更像是学习一个乐器(取决于你的个性),你可以从逐渐掌握Vim的过程中得到快乐。希望这些建议对你的学习有所帮助!

英文原文:https://ogmcsrgk5.qnssl.com/vcdn/1/优质文章长图/how-to-learn-vim-a-four-week-plan-cd8b376a9b85.png 译者:Chara

《Linux云计算及运维架构师高薪实战班》2018年07月16日即将开课中,120天冲击Linux运维年薪30万,改变速约~~~~

*声明:推送内容及图片来源于网络,部分内容会有所改动,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

- END -


更多Linux好文请点击【阅读原文】

↓↓↓

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2018-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玉树芝兰

如何用Python批量提取PDF文本内容?

本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析。

662
来自专栏ThoughtWorks

React Native性能之谜|洞见

在PhoneGap、RubyMotion、Xamarin、Ionic一众跨平台开发工具中,React Native能够杀出一条血路,获得目前这么大的影响力,除了...

2845
来自专栏小文博客

抓取全站图片的几个思路

好久没更新文章,最近确实忙,今天抽点时间写写我最近忙着优化网站图片的事。由于本站使用的图床SM.MS,近期不少使用电信和联通运营商的朋友说图片加载慢,网站加载完...

1072
来自专栏沈唁志

GitHub代码托管平台提交代码时emoji表情的使用

1484
来自专栏从零开始学 Web 前端

代码阅读——十个C开源项目

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以...

893
来自专栏互联网杂技

新鲜出炉! Web开发人员必备资源

摘要:我们将会为Web开发人员提供多个资源。其中包括一个着陆页设计资源、两种降低屏幕刺眼程度的方法、一个用来实现拖曳网页布局的插件、一个用于整理date-pic...

3428
来自专栏程序员与猫

We Do Sleep At Night, We Do REST Right

1111
来自专栏北京马哥教育

怎么制定一套合适的服务器命名方案

在MNX上,我们一直致力于为我们的云托管服务建立一个全新的数据中心。起初我们是一家提供管理Linux服务的咨询公司,这也就意味着我们将置身于大量的不同用户环境,...

3384
来自专栏IT大咖说

百度外卖如何做到前端开发配置化

摘要 前端开发的主要职能就是把网站的界面更好地呈现给用户,它涵盖的知识面非常广,既有具体的技术,又有抽象的理念。百度外卖高级前端工程师徐辛承,为我们带来关于百度...

3528
来自专栏云计算D1net

如何应对Heartbleed安全漏洞

? 本周早些时候,一个名为Heartbleed的大型安全漏洞浮出水面。该漏洞可让入侵者诱使服务器泄漏你的个人数据。 Heartbleed漏洞的危险性...

2625

扫码关注云+社区