【译】我是如何学会爱上 Vim 的

作者:Sanchit Gera,原文链接:How I learned to love vim

以下是译文:


我与 Vim 之间既苦涩又甜蜜的关系维持了相当长的一段时间。

在过去的几年间,我数次尝试着去学习 Vim,但每一次到最后还是放弃了。我更愿意去使用我的“初级”文本编辑器(通常是 Atom)。

但在几周以后,我发现自己无法使用 Atom 了,因为其中一个模糊的连通性问题,这个问题使得我建立在远程连接的设置完全失效了。

在经历过五个令人悲伤的阶段后(译者注:哦,天知道发生了什么),我决定咬紧牙关(再一次)试着去学习 Vim。这一次我强迫自己去使用 Vim,并且是只使用 Vim。

我知道——我可以很轻松的转向另一种更简单易用的编辑器比如说 Sublime。或者甚至可以使用非常成熟的 IDE 比如 IntelliJ

但是,我还是决定闯一闯所谓的“地狱”。下面是我学习到的一些东西:

作者:Sanchit Gera,原文链接:How I learned to love vim

以下是译文:


我与 Vim 之间既苦涩又甜蜜的关系维持了相当长的一段时间。

在过去的几年间,我数次尝试着去学习 Vim,但每一次到最后还是放弃了。我更愿意去使用我的“初级”文本编辑器(通常是 Atom)。

但在几周以后,我发现自己无法使用 Atom 了,因为其中一个模糊的连通性问题,这个问题使得我建立在远程连接的设置完全失效了。

在经历过五个令人悲伤的阶段后(译者注:哦,天知道发生了什么),我决定咬紧牙关(再一次)试着去学习 Vim。这一次我强迫自己去使用 Vim,并且是只使用 Vim。

我知道——我可以很轻松的转向另一种更简单易用的编辑器比如说 Sublime。或者甚至可以使用非常成熟的 IDE 比如 IntelliJ

但是,我还是决定闯一闯所谓的“地狱”。下面是我学习到的一些东西:

This would take some really bad luck…

学习基础

如果你没怎么用过,Vim 可能看起来像是一个非常古老的文本编辑器。说起它的来源,需要追溯到一款在七十年代出现的叫做 Vi 的程序。

由于 Vim 的设计初衷就是完全依赖键盘就能工作的编辑器,所以这也成了它既吸引人又让人讨厌的地方。毕竟当 Vi 被构思出来时,只需要鼠标点点的那些 GUI 可视化界面还并不是怎么实用的东西呢。

Vim 使用模式(mode)的方式来操作,有两种主要的模式最常被使用到:

  • 正常模式(Normal mode):这种模式是在你浏览、编辑或者操作文件的时候使用。如果你不涉及输入新的内容到文件中,该模式下你可以做任何其他事。大多数的 Vim 命令都是在这个模式下完成。
  • 插入模式(Insert mode):这种模式允许你输入新文本到文件中去,这时候 Vim 表现得更像是一个“正经”的文本编辑器,比如 Atom 或者 Sublime。当然了,还是不需要使用鼠标的,即使你想用也用不了 :)

Vim 也还有其他模式,其中一个是 虚拟模式(Visual mode),在选择大段文本的时候使用。一般来说,这些模式在平时使用的频率不高。

Vim 一般是在终端模拟器中使用的,但单独的发行版也是有的。Vim 可以被使用在任何 Unix 和 Linux 操作系统上。Vim 的爷爷——Vi,作为 UNIX 规范的一部分,很自然的,它被预装在任何基于 UNIX 的合格操作系统上。

可组合性

“可组合性”使得 Vim 在很大程度上区别于其他编辑器。它赋予了 Vim 独有的语言。

它在文本编辑和操作的语境中,引入了名词和动词的概念。

动词描述的是你能做什么(比如删除、改变、移动等)。

名词描述的是正在发生的事情(通常是单词、行或者文本中的某些地方)。

其中一些常见的动名词包括:

动词
d:删除
c:改变(覆盖)
y:复制
>:缩进
<:取消缩进

操作
h,j,k,l:向左,向下,向上,向右
w:下一个单词
b:上一个单词
0:行首
$:行末
i:单词内(不含下一个字符)
a:单词周围

这份列表并不详尽,其实有非常多可使用的快捷键。但是你仅仅使用其中非常基础的几个快捷键就能够实现大部分操作。方法就是将动名词和偶尔出现的数字组合在一起,你就能创建出不同的 行为 去操作需要的文本。

举个例子,为了删除一个单词(delete a word),你可以键入组合键 dw

从当前位置删除两个单词(delect 2 word),你可以输入 d2w

从当前位置一路删除至行末,你可以输入 d$

(译者注:我其实也是一个 newbie,看到这几个例子立马去试了一下,发现真好用,试着键入 d0,哈哈,果然将当前位置至行首的内容都删除了~)

删除当前括号内的所有内容,你可能会键入 di(,是的,就是这样 :)

这种工作方式似乎没有什么好争论的,它们是那么高效优雅。如果你强迫自己每天去使用这些组合,它们会成为你的第二天性。在一段时间后,你会发现通过减少按键次数而获得的编辑速度是令人惊讶的。

Vim 让人上瘾

是的,我知道这个已经被用的不能再多了,但请允许我再用一次 :)

Vim 有着臭名昭著的学习曲线。而一旦你度过了那段艰难时期——经常对着电脑屏幕发诅咒(译者注:当你用不了鼠标,想要跳到某个字符却不知道怎么能快一点,傻傻的移动方向键,内心是多么的崩溃。。。),Vim 用起来其实挺好玩的。

学习使用 Vim 的那些神秘命令,让你能够在操作文件上飞起来~一段时间过后,当你的手指离开了键盘或者不自觉的去使用鼠标的时候,你会觉得哪些地方不对劲(译者注:Vim 让你的手指完全不需要离开键盘就能飞一般的工作,用惯了 GUI 的我在以前想都不敢想。。。怎么可能嘛,是的,Vim 做到了!)

仅仅在一个月之后,我发现自己在使用电脑的时候总是会不自觉的去用那些快捷键,尽管那些软件并没有这些快捷键。

事实上,我也曾经考虑过在浏览网页的时候尝试使用这个 扩展 来启用 Vim 快捷键。

幸运的是,编程社区都承认 Vim 的地位。大多数主流的文本编辑器都总是有那么一些方法能够启用 Vim 的快捷键。这也使得 “Vimmers” 能够脱离在世界上最好的两种事物上要做出选择的苦海。

给 Vim 一次战斗的机会

要想提高在 Vim 上的造诣,没有任何其他什么武功秘籍,唯有日夜苦练基本功。行之有效的方式就是强迫自己用 Vim。

举个例子,当你使用 Vim 编辑文件的时候,尽量不要使用你之前的旧习惯。大多数人在刚开始的时候应该尽量远离 ‘正常模式’。

相反,他们试图花尽可能多的时间在‘插入模式’上。在这个模式上,很容易让人产生舒适感。这也容易让人在编辑文件的时候学不到任何其他新的东西。很明显这是一个错误。

如果你确实有兴趣学习如何让 Vim 为你工作,那么你必须付出一些努力,花些时间去找出做事情的正确方式。

如果你发现自己为了完成任务,不停地重复按那些键,请先停下来。因为很可能你正在做的事情有更好的方式去完成。

Google 一下,记住它,加入你的知识库中。相比于去阅读整个命令清单并试图希望自己会在将来会需要用到其中一个命令,用这种方式非常容易能学到新的命令。

在一段时间后,当你在无脑敲键盘的时候,你就可能会产生一种直觉(译者注:这种直觉类似于意识到自己目前在解决这件事的方式上可能会有更好的处理办法)。那么请听从你的直觉。

感谢(?)现代编辑器

许多人回避 Vim 的另一个重要原因就是 Vim 看起来光秃秃的只有编辑这一个最最基本的功能。

确实,默认情况下,Vim 本身并没有自带什么插件或者好用的功能的。并且,Vim 认为好用的功能可能与程序员使用的现代 IDE 认为的好用的功能有着比较大的差别。

Vim 其实是有语法高亮功能的(但默认情况下是被禁用的)。Vim 也没有行号显示(也需要你去将其开启)。

不用惊讶了,下面这些东西也是默认没有的:

  • 默认的 Git 集成
  • 代码提示
  • 自动标点配对
  • 代码片段
  • 自定义的颜色试图

这些都是不预装在 Vim 中的。

译者注:其实写到这里,我觉得已经有很多人萌生了退却之意,确实要想玩好 Vim,需要花不少时间,免不了诸多的折腾。爱折腾的人自然是兴奋不已,比如译者自己。但不爱折腾的,译者还是鼓励去试着玩玩看,虽然现代 IDE 自带了相当多的功能,但是很多功能你也是需要去折腾才能熟练的使用。

这似乎是一个巨大的转折点——尤其是对于那些使用强大的 IDE 的开发者们。大量的插件和扩展被预装在上面,为了能够使工作更有效率。

从这个角度上来看,Vim 却有其局限性。

然而,在另一个方面,即便你欣赏现代 IDE 提供的东西,以及通过它们构建出的东西——你也会意识到,大多数的 IDE (甚至是一些普通的编辑器,如 Atom)都带来了大量的膨胀。

高级的 IDE 充斥着许许多多普通用户几乎很少使用的特性。

学习有效地使用 Vim 在某种程度上其实是一种锻炼,你可以慢慢发现哪些插件对你来说是至关重要的。重点是打造出一款适合你的需求和工作流的独一无二的编辑器。(译者注:这一点太能打动我了 TAT)

多数情况下,使用 IDE 这些完全成熟体无可厚非。这些高级功能给你带来的好处确实可能远超使用 Vim 带来的。

但是!Vim 能够让你搞清楚自己,因为它是直面你的内心的 :P

尽管 Vim 看起来光秃秃的,但是它其实是拥有一个非常完备、蓬勃发展的插件生态系统。

Vim 拥有几乎所有你能在其他编辑器中用到的插件。你只需要找到那些你需要 的就好了。

让我惊讶的是,在只有少量插件的情况下我能走得有多远。目前我的 Vim 大概只有 5 到 6 个“基本”插件组成,但我真不觉得我错过了什么。

Vim 并不是完美的,而且也绝对不是适合所有人的。

但是至少,学好 Vim 有一个好处,万一你哪一天突然不小心打开了 Vim,然后找不到如何退出的方法。。。! ;)
[图片上传失败...(image-e1fcdb-1511753861770)]

学习基础

如果你没怎么用过,Vim 可能看起来像是一个非常古老的文本编辑器。说起它的来源,需要追溯到一款在七十年代出现的叫做 Vi 的程序。

由于 Vim 的设计初衷就是完全依赖键盘就能工作的编辑器,所以这也成了它既吸引人又让人讨厌的地方。毕竟当 Vi 被构思出来时,只需要鼠标点点的那些 GUI 可视化界面还并不是怎么实用的东西呢。

Vim 使用模式(mode)的方式来操作,有两种主要的模式最常被使用到:

  • 正常模式(Normal mode):这种模式是在你浏览、编辑或者操作文件的时候使用。如果你不涉及输入新的内容到文件中,该模式下你可以做任何其他事。大多数的 Vim 命令都是在这个模式下完成。
  • 插入模式(Insert mode):这种模式允许你输入新文本到文件中去,这时候 Vim 表现得更像是一个“正经”的文本编辑器,比如 Atom 或者 Sublime。当然了,还是不需要使用鼠标的,即使你想用也用不了 :)

Vim 也还有其他模式,其中一个是 虚拟模式(Visual mode),在选择大段文本的时候使用。一般来说,这些模式在平时使用的频率不高。

Vim 一般是在终端模拟器中使用的,但单独的发行版也是有的。Vim 可以被使用在任何 Unix 和 Linux 操作系统上。Vim 的爷爷——Vi,作为 UNIX 规范的一部分,很自然的,它被预装在任何基于 UNIX 的合格操作系统上。

可组合性

“可组合性”使得 Vim 在很大程度上区别于其他编辑器。它赋予了 Vim 独有的语言。

它在文本编辑和操作的语境中,引入了名词和动词的概念。

动词描述的是你能做什么(比如删除、改变、移动等)。

名词描述的是正在发生的事情(通常是单词、行或者文本中的某些地方)。

其中一些常见的动名词包括:

动词
d:删除
c:改变(覆盖)
y:复制
>:缩进
<:取消缩进

操作
h,j,k,l:向左,向下,向上,向右
w:下一个单词
b:上一个单词
0:行首
$:行末
i:单词内(不含下一个字符)
a:单词周围

这份列表并不详尽,其实有非常多可使用的快捷键。但是你仅仅使用其中非常基础的几个快捷键就能够实现大部分操作。方法就是将动名词和偶尔出现的数字组合在一起,你就能创建出不同的 行为 去操作需要的文本。

举个例子,为了删除一个单词(delete a word),你可以键入组合键 dw

从当前位置删除两个单词(delect 2 word),你可以输入 d2w

从当前位置一路删除至行末,你可以输入 d$

(译者注:我其实也是一个 newbie,看到这几个例子立马去试了一下,发现真好用,试着键入 d0,哈哈,果然将当前位置至行首的内容都删除了~)

删除当前括号内的所有内容,你可能会键入 di(,是的,就是这样 :)

这种工作方式似乎没有什么好争论的,它们是那么高效优雅。如果你强迫自己每天去使用这些组合,它们会成为你的第二天性。在一段时间后,你会发现通过减少按键次数而获得的编辑速度是令人惊讶的。

Vim 让人上瘾

是的,我知道这个已经被用的不能再多了,但请允许我再用一次 :)

[图片上传失败...(image-5ef64b-1511753861770)]

Vim 有着臭名昭著的学习曲线。而一旦你度过了那段艰难时期——经常对着电脑屏幕发诅咒(译者注:当你用不了鼠标,想要跳到某个字符却不知道怎么能快一点,傻傻的移动方向键,内心是多么的崩溃。。。),Vim 用起来其实挺好玩的。

学习使用 Vim 的那些神秘命令,让你能够在操作文件上飞起来~一段时间过后,当你的手指离开了键盘或者不自觉的去使用鼠标的时候,你会觉得哪些地方不对劲(译者注:Vim 让你的手指完全不需要离开键盘就能飞一般的工作,用惯了 GUI 的我在以前想都不敢想。。。怎么可能嘛,是的,Vim 做到了!)

仅仅在一个月之后,我发现自己在使用电脑的时候总是会不自觉的去用那些快捷键,尽管那些软件并没有这些快捷键。

事实上,我也曾经考虑过在浏览网页的时候尝试使用这个 扩展 来启用 Vim 快捷键。

幸运的是,编程社区都承认 Vim 的地位。大多数主流的文本编辑器都总是有那么一些方法能够启用 Vim 的快捷键。这也使得 “Vimmers” 能够脱离在世界上最好的两种事物上要做出选择的苦海。

给 Vim 一次战斗的机会

要想提高在 Vim 上的造诣,没有任何其他什么武功秘籍,唯有日夜苦练基本功。行之有效的方式就是强迫自己用 Vim。

举个例子,当你使用 Vim 编辑文件的时候,尽量不要使用你之前的旧习惯。大多数人在刚开始的时候应该尽量远离 ‘正常模式’。

相反,他们试图花尽可能多的时间在‘插入模式’上。在这个模式上,很容易让人产生舒适感。这也容易让人在编辑文件的时候学不到任何其他新的东西。很明显这是一个错误。

如果你确实有兴趣学习如何让 Vim 为你工作,那么你必须付出一些努力,花些时间去找出做事情的正确方式。

如果你发现自己为了完成任务,不停地重复按那些键,请先停下来。因为很可能你正在做的事情有更好的方式去完成。

Google 一下,记住它,加入你的知识库中。相比于去阅读整个命令清单并试图希望自己会在将来会需要用到其中一个命令,用这种方式非常容易能学到新的命令。

在一段时间后,当你在无脑敲键盘的时候,你就可能会产生一种直觉(译者注:这种直觉类似于意识到自己目前在解决这件事的方式上可能会有更好的处理办法)。那么请听从你的直觉。

感谢(?)现代编辑器

许多人回避 Vim 的另一个重要原因就是 Vim 看起来光秃秃的只有编辑这一个最最基本的功能。

确实,默认情况下,Vim 本身并没有自带什么插件或者好用的功能的。并且,Vim 认为好用的功能可能与程序员使用的现代 IDE 认为的好用的功能有着比较大的差别。

Vim 其实是有语法高亮功能的(但默认情况下是被禁用的)。Vim 也没有行号显示(也需要你去将其开启)。

不用惊讶了,下面这些东西也是默认没有的:

  • 默认的 Git 集成
  • 代码提示
  • 自动标点配对
  • 代码片段
  • 自定义的颜色试图

这些都是不预装在 Vim 中的。

译者注:其实写到这里,我觉得已经有很多人萌生了退却之意,确实要想玩好 Vim,需要花不少时间,免不了诸多的折腾。爱折腾的人自然是兴奋不已,比如译者自己。但不爱折腾的,译者还是鼓励去试着玩玩看,虽然现代 IDE 自带了相当多的功能,但是很多功能你也是需要去折腾才能熟练的使用。

这似乎是一个巨大的转折点——尤其是对于那些使用强大的 IDE 的开发者们。大量的插件和扩展被预装在上面,为了能够使工作更有效率。

从这个角度上来看,Vim 却有其局限性。

然而,在另一个方面,即便你欣赏现代 IDE 提供的东西,以及通过它们构建出的东西——你也会意识到,大多数的 IDE (甚至是一些普通的编辑器,如 Atom)都带来了大量的膨胀。

高级的 IDE 充斥着许许多多普通用户几乎很少使用的特性。

学习有效地使用 Vim 在某种程度上其实是一种锻炼,你可以慢慢发现哪些插件对你来说是至关重要的。重点是打造出一款适合你的需求和工作流的独一无二的编辑器。(译者注:这一点太能打动我了 TAT)

多数情况下,使用 IDE 这些完全成熟体无可厚非。这些高级功能给你带来的好处确实可能远超使用 Vim 带来的。

但是!Vim 能够让你搞清楚自己,因为它是直面你的内心的 :P

尽管 Vim 看起来光秃秃的,但是它其实是拥有一个非常完备、蓬勃发展的插件生态系统。

Vim 拥有几乎所有你能在其他编辑器中用到的插件。你只需要找到那些你需要 的就好了。

让我惊讶的是,在只有少量插件的情况下我能走得有多远。目前我的 Vim 大概只有 5 到 6 个“基本”插件组成,但我真不觉得我错过了什么。

Vim 并不是完美的,而且也绝对不是适合所有人的。

但是至少,学好 Vim 有一个好处,万一你哪一天突然不小心打开了 Vim,然后找不到如何退出的方法。。。! ;)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,837评论 25 707
  • 本文由编程派-EarlGrey翻译,原文出自realpython,是Vim的爱好者专门针对利用Sublime Te...
    EarlGrey阅读 28,723评论 7 143
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • 1 妇人悉悉簌簌又在裂嘴骂着老汉“你这个不争气的东西,我当初是瞎了眼,才会跟着你,这么多年,没过过一天好日子。”老...
    林小仙仙仙阅读 776评论 10 12
  • 灯火阑珊的街角有着不为人知的秘密,有着这样一群人,不被任何人关注,他们流浪在各个城市的街角,行走在阴暗中,他们是黑...
    苏a晨啊阅读 169评论 0 1