不久前,我读了viemu创建者的一篇文章,澄清了许多关于vi的误解,并解释了为什么它是一个好主意(以及为什么它在过去30多年里非常流行)。同一个人还有一套很棒的图形备忘单,每次教一些基本知识。

我相信。

事实上,在过去的两年里,我一直被说服。但是我仍然没有强迫自己学习vi作为我的主要编辑器,学习曲线太高了。当我开始工作时,可接受的但即时的生产力(使用我当前的编辑器)到目前为止已经超过了进一步的巨大生产力(使用vi)。

有没有人有什么好的建议来帮助你度过学习曲线?它可以是直接的提示,一些其他教程或文章,无论什么。

编辑:注意,我知道vi的vim/gVim, Cream和MacVim(等等)变体。我的问题是指vi家族作为一个整体。谢谢你的精彩回答。

更新(2009年4月)

自去年12月以来,我一直在日常的职业生活中使用Vim(更准确地说,是MacVim)。我不会回去的。

祝大家在掌握Vim的过程中好运。


当前回答

在现代vi (vim?)中,我发现真正令人困惑的一件事是输入模式允许命令模式的一些功能,但不是所有功能。当输入模式完全简化为“只覆盖,不可能移动光标”时,我感觉舒服多了,就像老Solaris vi所拥有的那样。真正的vi需要您大部分时间保持在命令模式。

话虽如此,现在已经没有必要学习vi了——emacs同样无处不在。:)

其他回答

在我16岁的时候,为了我的第一份编程工作,我被迫学习Vim(老板不让我们使用其他任何东西),但直到我读了Steve Oualline的Vim Book(如果你想认真对待Vim,强烈建议把它作为起点),我才有了任何真正的进步。

实际上,掌握Vim要比掌握一些编程语言花费更多的时间(其特性非常复杂)。试图通过打印小抄来“掌握”Vim就像试图通过阅读几篇博客文章来掌握Haskell一样。准备好投入一些认真的时间,你会得到很好的回报。

当你在工作中使用当前编辑器时,写下你在它中使用的所有快捷方式和功能。然后在周六早上坐下来,使用谷歌和stack overflow来了解如何在vi中完成这些工作。最好是使用一张(或几张)纸来完成这些工作。

现在禁用/删除工作中的其他编辑器,这样查找和重新安装它们的时间就会比查看比较表并在vi中进行更长的时间——也就是说,你别无选择。

最后,在你的博客上发布从旧编辑器到新编辑器的交叉快捷键列表。

好运!

我要做的第一件事是在方向键和ins/home/end/pgup/down键上放一张纸或一本书。这些在Vi中不需要。

接下来,我习惯了按ctrl+[每当你被告知要按escape。它更快,你不需要把你的手从键盘上拿开。

然后我会看我的截屏:

http://www.youtube.com/watch?v=FcpQ7koECgk

http://www.youtube.com/watch?v=c6WCm6z5msk

http://www.youtube.com/watch?v=BPDoI7gflxM

http://www.youtube.com/watch?v=J1_CfIb-3X4

然后,练习,练习,再练习。

编辑 避免使用方向键的原因是它们会减慢你的速度。Vim最大的好处之一是它提供的速度。方向键还会阻止你真正拥抱模态的本质,这在掌握后是非常强大的。

面对这样的事实,它将立即造成性能损失。在学习一种新工具时,你需要能够做一些你已经知道如何用其他工具做的事情,这样问题就不是你的问题。在使用新工具一段时间后,它将消失,你将只关注潜在的问题。

对于像vim这样的东西(正如其他人所说,vim比vi优越得多),定期重读和浏览文档是很重要的。如果没有它,界面是完全无法被发现的。每读一篇新文章,你就会发现一个特点,然后说:“啊哈,这就解决了我上周想要解决的问题”,然后把它记在脑子里。对于你来说,与现实问题相关的解决方案比随机的捷径更容易记住。

最后,您可以使用vim的一个相当小的功能子集,所以不要被所有花哨的功能搞得不知所措。想想Word中的所有功能,99%的人都在使用它们吗?

我的做法是,一开始花几分钟复习最基本的内容——移动光标,前后搜索,跳转到下一个和上一个单词/句子/段落,等等。插入、添加。你脑子里装得下什么都行。然后,当你有事情要做而又不需要在15秒内完成时,强迫自己去做。

当你对基本的命令非常熟悉时,慢慢地学习更高级的命令——尤其是那些利用你之前学习过的命令(比如替换接下来的3个单词,或者删除到下一个搜索目标)。

我喜欢使用VI,一旦我学会了。高级命令比大多数GUI编辑器提供的功能强大得多,而且它无处不在且基于文本,因此可以通过ssh使用,这一点就更好了。