Vim 十年

Posted BioData

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim 十年相关的知识,希望对你有一定的参考价值。

原文链接:

https://matthias-endler.de/2018/ten-years-of-Vim/


原标题:Ten Years of Vim


我第一偶然打开Vim时,我想这个软件应该是坏了。我敲着键盘,屏幕上的内容以一种不可理喻的方式变化,我唯一的想法就是撤销操作,退出。这种体验糟透了。但因为种种原因,我又回到了Vim,它成了我的主力编辑器。


时光荏苒,十年过去了,我还在使用Vim。我也尝试过Textmates、Atom和phpStorm,但只有在Vim这才有家的感觉。不断的有人问我,为什么?


为什么是Vim?


在使用Vim之前,我用过很多编辑器,例如写字板和Nano。但它们都不尽如人意:插入文本,用方向键或者鼠标移动光标,然后用Control+S或者菜单保存。VI(和Vim,精神继承者)完全不同。


在Vim里面,一切都变了,这也是它如此高效的原因。听我细说。


Vim之禅


Vim背后的哲学跟其他编辑器不同:其他编辑器关注的是写(writing),而Vim关注的是编辑(editing)。


其实,我们大部分时间都不是在写新文本,而是在编辑已有的文本。


I mold text, form it, turn it upside down. Writing text is craftsmanship and hard work. You have to shape your thoughts with your cold, bare hands until they somewhat form a coherent whole. This painful process is what Vim tries to make at least bearable. It helps you keep control. It does that, by providing you sharp, effective tools to modify text. The core of Vim is a language for editing text.


Vim,语言


Vim命令并不神秘,你应该已经知道一些了。


输入u,撤销操作(undo);

查找(find)下一个文本(text),输入ft;

删除(delete)一个(a)单词(word),输入daw;

修改(change)一个(a)句子(sentence),输入cas;


大部分情况下,你都可以通过你想要执行的操作和操作的对象猜到正确的命令。然后就只需要输入每个单词的第一个字母就可以了。即使犯了什么错误,按ESC键,然后按u撤销即可。


  • 操作:删除(delete)、查找(find)、修改(change)、回退(back)、插入(insert)、添加(append)….


  • 对象:单词(word)、句子(sentence)、括号(parentheses)、标签(tag)…(详见help text-objects)


插入也只是一种编辑操作,用i进入。这就是默认情况下处于normal模式,即命令模式的原因,在这个模式下,你可以执行各种编辑操作。


只要你明白了这一点,Vim就很好理解了,你的效率也会大幅提高。


这些年我的工作流程是如何变化的


当我是个新手时,我很好奇有经验的人是如何使用这个编辑器的。现在我已经是老用户了,我得到的答案是:没有什么秘密。即使是对着文本干了一天的活也不会那么的烦躁,90%我所用到的命令也就是那么几个。


这些年,我的Vim使用习惯一直在变化。


我经历了这么几个阶段:

  • 第1年:我很高兴我会插入文本和推出Vim;

  • 第2年:太酷了,我要学习更多的快捷键;

  • 3-5年:让我加入所有特性!

  • 6-10年:我的.vimrc文件只有五行。


第3年是我真正开始学习Vim生态的时候。我尝试了Vim的各种流派和发行版,例如MacVim和Janus。有段时间,我甚至在维护一份我自己的Vim配置,大概有400行。


这些经历当然有助于我们学习Vim,但我并不确定这对新手是不是个好方法。其实并不是每个人都需要这一切。原生的Vim编辑器就能满足大部分需求了。


我现在Vim配置非常简单。我不再使用插件,一方面是因为懒,另一方面是因为Vim内置的命令和宏已经足够用了。


关于这些年我工作流程的变迁,举几个例子:

  1. 刚开始,我总是用数字来重复某个命令,例如,命令b表示会退一个单词,那么就可以用5b来回退5个单词。但现在,我一般用单词匹配来移动光标。

  2. 一开始,我强迫自己不使用方向键,而是用h,j,k,l来移动光标。很多人都会这样效率更高。但即使在这么做了若干年后,我依然不这么认为(至少是对我而言)。我现在也不在坚持这个习惯了。

  3. 在我自己的主力电脑上,我用Vim完成一些快速的文字编辑,用Visual Studio Codes加上一些Vim插件来开发大型的项目。两方面的优点都为我所用。


依然困扰我的问题


毕竟,我依然不是Vim高手——差距很大。就像其他每个Vim用户一样,我们一直在学习。有些事情我应该能做的更好:

  • 在长文本中跳转:我知道一些基本操作,例如查找/,跳转到匹配的括号%,或者跳到指定的行(跳到第10行,10G),但我应该更多的使用符号跳转,而不是滚动浏览。

  • 用可视化模式移动文本:有时候,要用各种命令的组合来选定我要移动的文本是很麻烦的事情。遇到这种,可视化模式(visual mode)就派上用上了。它会将选中的文本高亮。我应该更多地使用这个模式。

  • 用多个寄存器复制和粘贴:我一般只使用一个寄存器来复制文本,但Vim实际上支持多个寄存器。如果要同时移动多处文本时,这个功能非常有用。应该多用。

  • 标签(tab):我知道标签栏的原理,但这些命令让我觉得很麻烦。所以我很少使用这个功能。在处理大项目时,我经常用多个终端标签,或者是在IDE中使用Vim的快捷键绑定。


应该再学习Vim吗?


这是一个很难回答的问题。


一方面,我会说不。眼下各种智能的IDE能够很好的理解用户的目的,文本编辑正变得前所未有的便捷,而Vim陡峭的学习曲线让人生畏。


另一方面,Vim是我记录自己想法和代码的最快捷的方式。而且,即使是几十年前的计算机也能流畅的运行Vim。而诸如IntelliJ的快捷键的寿命不知能否超过10年。(如果你未来读到这篇文章时问自己“什么是IntelliJ?”,回答可能是不知道。)


锦囊


如果要我给你一个建议,那就是不要通过死记硬背命令来学习Vim。应该整理自己的工作方式,然后看看如何优化,同时考虑如何利用Vim来实现。在这个过程中可以看看其他人是如何使用Vim的。


很多时间都会消耗在文本编写上,所以花点时间学习编辑器是很划得来的——如果你是程序员的话,就更加如此了。


在使用了Vim十年之后,Vim已经成为了我思维中不可或缺的一部分。在我编辑文本时就会想到Vim。它已经成为了我的另一门自然语言。我期待下一个十年。


以上是关于Vim 十年的主要内容,如果未能解决你的问题,请参考以下文章

十年·杭研技术秀 | 分布式转码服务高可用浅析

一点心情

书:《激荡十年》

《激荡十年》波澜壮阔又混沌失控的十年

书:《激荡三十年》

技术十年-回顾自己十年技术经历