如何最好地强制自己掌握vi编辑器?

208
很久以前,我读到了 viemu 创建者的一篇文章 ,澄清了人们对vi的很多误解,并解释了为什么使用vi是个好主意(以及为什么它在过去30多年里非常受欢迎)。同一个人还有一系列很棒的图形复习资料表,可以逐步教授基础知识。

我被说服了。

实际上,我已经被说服两年了。但是学习vi作为我的主要编辑器还是没有开始,因为学习曲线太高了。当我开始工作的时候,使用当前的编辑器可以达到可接受但立即的生产力,这使得我放弃了使用vi带来的更高生产力。

有人有什么好的建议帮助克服学习曲线吗?可以直接给出一些提示、指南或文章等。

编辑:请注意,我知道 vim / gVim , Cream MacVim (等等)是vi的变体。我之所以将我的问题保持在vi家族中,是因为我想了解更多关于vi的知识。感谢所有给出的好答案。

更新(2009年4月)

自去年12月以来,我已经在我的日常专业生活中使用Vim(更确切地说是MacVim)。我不会回头了 :-)

祝愿每个人都能掌握Vim。


15
几年前,我学会了vim,因为我不知道如何更改默认编辑器。;) - unexist
由于它是对知识吸收的时间度量,陡峭的学习曲线通常是一件好事,这意味着你在快速学习。 :) - converter42
今天早上我正在苦苦挣扎地使用vi编辑器,浏览Stack Overflow以分散注意力,结果发现这篇文章排在了前面!很高兴听到你仍在使用它,希望四个月后我也能像你一样。 - Greg Noe
http://www.slideshare.net/c9s/perlhacksonvim - Cherian
3
顺便提一下:你知道吗,几乎可以为任何事情获取vim插件!你可以获取一个针对firefox的vim插件,以便所有文本框都像vim一样操作!不过这更有趣而不是实用。有用的是(尽管我还没有下载)针对eclipse的vim插件。那似乎很有用! - sixtyfootersdude
60个回答

127

首先,你可能想要选择使用 Vim;它拥有比 vi 更强大的功能集。

话虽如此,学习 Vim 需要纪律。如果你有工作并且不能承受生产力下降(不被开除),我建议你从一个仅为学习编辑器而设立的周末项目开始。在你工作时保持它的文档打开,并有纪律地不要退缩。当你学到更多、变得高效并开始依赖肌肉记忆时,坚持将不会那么难。

我使用 Vim 已经很长时间了,以至于我甚至不需要思考搜索、导航或保存需要按哪些键,我的手从来没有离开过键盘。使用 Vim 是我在编程生涯中做出的最好选择之一。


16
我在工作中学习了这个,但无法避免生产力下降。旁边有一个熟练使用Vim的人不断提问确实很有帮助。找一个熟练掌握Vim的人并与他们交朋友!快速查看导航键并掌握模式。每次尝试15分钟,你会掌握它的。 - camflan
4
我同意,继续努力。一旦你被迫使用nano或notepad而感到疯狂,你就知道你已经成功了! - Kyle Walsh
3
经过一年的开始和停止使用 Vim 后,我发现购买 Vim 书籍并强制自己认真学习对我有很大帮助。此外,我试着保持“必须有更快的方法完成这个任务”的心态,并不断查阅 :help,寻找更好地完成任务的方式。 - JD Frias
2
此外,记下你想要熟悉的功能清单很有用。我已经使用 Vim 五年了,但我仍然会在 Tomboy 笔记中记录新学到的东西,以便日后使用。 - Lucas Oman

66

我首先要做的是在箭头键和ins/home/end/pgup/down键上放一张纸或一本书。这些在Vi中不需要。

接下来,当你被告知按下escape键时,试着习惯使用ctrl+[替代它。这样更快,并且你不需要将手从键盘上拿开。

然后观看我的屏幕录像:

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最大的好处之一就是它能够提高你的速度。箭头键也会阻止你真正掌握模态性,而这种能力在掌握后非常强大。


26
我已将键盘上的大写锁定键映射为Esc键。比按Ctrl+[还要快! - Chris AtLee
8
我曾经使用箭头键来移动光标,直到我在我的 .vimrc 文件中禁用了它们: map <Up> "" map <Down> "" map <Right> "" map <Left> ""现在我的手腕感谢我戒掉了这个习惯! - Johan Kotlinski
2
Joey,箭头键确实很有用,但通常最好离开插入模式,导航到您想要的位置,然后重新进入插入或更改或其他模式以执行所需操作。按下Escape或^[比移动手部来回更快。 - Aaron Jensen
@ChrisAtLee:将<kbd>Caps Lock</kbd>映射到<kbd>Esc</kbd>是个好主意吗?如果我想要锁定大写怎么办? - einpoklum
@einpoklum,我不是克里斯,但我觉得我能理解。我总是使用shift键而不是大写锁定键。所以大写锁定键就一直闲置着无用。因此我们还不如使用它,因为它比ESC键更接近手指。 - Suhaib
显示剩余7条评论

40

步骤0:学会盲打。认真地说,如果你的手指不知道键在哪里,那么使用vim将会很痛苦。即使你拒绝vim,盲打也可以通过消除心理和身体之间的阻力来提高你的编程(向Steve Yegge询问)。有很软件可以帮助你提高打字速度。

Step 1: 使用vimtutor开始。它在gvim中(我想在帮助菜单下)或者你可以在命令行中直接输入'vimtutor'。这将花费您30-45分钟的时间,然后您的手指将掌握vi/vim的基础知识,您应该能够编辑文件,而不会想把键盘扔出窗外。
Step 2: 到处使用vim。查看此问题,获取有关在命令行、Web浏览器、撰写电子邮件、IDE中使用vim和vi键绑定的提示和链接... 您需要使用vim将键绑定嵌入您的肌肉记忆中。

第三步: 学习更多关于vim的知识。通过vimtutor只是初步了解。你可以观看这个视频或者阅读这篇文章(都是关于“有效文本编辑的七个习惯”的)。你可以阅读有关技巧窍门StackOverflow上。你可以浏览vimtips。我建议你经常学一点,因为有很多内容,坚持小口吃着会是让知识牢固的最佳方式。

步骤4:利润 :)

2
打字速度一定要快,如果你想达到一定的熟练程度。但是,如果你真的想在计算机方面变得更加优秀,你肯定不需要有人告诉你这个道理,你会很容易地自己发现的。=) - sjas
vimtutor非常棒 :-) - user454083
这是一种非常亲和且科学的掌握Vim的方法。我会尝试使用它来引导自己走向 Vim 大师之路。希望我能坚持到最后。 - YinchaoOnline

26

多年来,我一直是Vim的偶尔用户(做一些系统管理员的工作)。最近我开始花更多时间用它来编程。我建议也从gvim开始。它与大多数操作系统环境很好地集成在一起,甚至更好的是,当需要时,您可以回归鼠标 :).

要使用vim,运行一两次(bundled with gVim) vimtutor(大约需要一小时)。我无法过分强调它对我有多大帮助!尤其是关于如何通过不同的方式浏览文档以及如何记录编辑动作的部分等等。之后,事情会变得非常清晰。

然后,从快速、小的编辑开始(而不是替代Notepad),直到你足够熟练可以快速进行有用的编辑为止。然后尝试在其中进行日常工作。您很快就会发现自己渴望在其他编辑器中执行"重复上一动作"命令!


你可以通过运行“:set mouse=a”在正常的vim中使用鼠标。 - Stephen Paulger

20
您希望获取一些有益的提示,以帮助您克服使用vi文本编辑器的学习曲线。之前的回答很多都建议您不要再使用其他编辑器了,我认为这是一个好建议。从一个更图形化的编辑器切换到vi编辑器需要改变思维方式,需要考虑命令,而不是视觉上的变化。
我多年来只用vi编辑器,并且认为您必须记住您经常使用的命令才能提高工作效率。我做到这一点的方法是列出最常用的键盘命令清单,并将它们按功能分组和着色,如“移动光标”、“编辑”、“搜索”等。 我只精选了我不知道的最常用的命令。这样可以创建一个快速参考清单,同时也是记忆辅助工具,而不是取代可用的帮助屏幕。接下来,我将这个清单打印出来,贴在显示器后面的墙上,以便于查看。(您提到的图形化备忘单可能对某些人更有效,但它们可能是一个更好的参考来源而不是记忆工具。)
关键在于,当我熟悉其中一个命令时,我会用铅笔划掉它。如果需要,我仍然可以看到它,但对我来说,那是象征性的,表示我已经掌握了该命令。这使我充满信心和动力,因为我可以看到定期的进步。一旦我将大多数命令都划掉了,我就把它们删除,并添加了一些不太常用的命令。我继续这个过程,直到我对vi编辑器满意为止。当我意识到我很久没有划掉任何命令或查看清单时,我知道我已经掌握了它。
几年前,我需要在一个只有vi编辑器可用的UNIX平台上工作。我买了一本关于vi编辑器的小口袋参考书,但几乎没用过它。我最终像第一次使用vi编辑器时那样列出清单并贴在墙上。尽管我已经五年没有使用vi编辑器了,但在第一周结束时,我非常熟悉它。

3
我认为这是非常好的建议,同样适用于学习其他工具(如IDE,调试器甚至类似Excel的东西)。 - davidavr

12

对我来说,VI是一个很好的应急编辑器,但如果有其他选择,我不想使用它。尽管我知道这不适用于每个人,我并不是说它很糟糕或者什么的,我只是个人更喜欢界面易于发现的编辑器。

但是在Linux中,如果你要做任何重要的事情,你真的必须了解VI!

所以只需要学习一些基础命令: i=插入模式 esc=退出插入模式 :wq=保存并退出 :q!=不保存并退出 x=在非插入模式下删除字符 /=搜索

这些命令足以帮你度过任何编辑紧急情况。使用这些命令(当然还有导航)你可以完成任何操作。其余的命令可以在需要时“添加”。

注意保留参考书或手册——当你需要使用VI时,可能无法浏览网页,但man页面可能会有所帮助。


4
“:help” 命令是您最初可以学习的最有用的命令之一 - 当它内置在编辑器中时,谁还需要参考书或网络呢? - zigdon
2
如果你学会使用 :help,就不需要参考书了。至于“你可能无法浏览网页”,要熟悉 lynx 和 links 浏览器。在紧急情况下,甚至可以使用它们来浏览文件系统。 - converter42

12

不要强制自己。掌握编程技能之路需要爱。


11

你应该从vim(Vi 改进版)开始,尤其是它的图形界面 - gVim。该 GUI 具有菜单,在 Windows 上你可以使用复制、剪切和粘贴快捷键,因此你可以立即替换 Notepad。由于菜单显示了快捷键(vim 命令),所以你可以学到很多东西。

另外一件你应该从一开始就做的事情是为你的 vi 配置环境。例如,你可以将 vim 转变为一个Python IDE。这样做,你将没有使用其他编辑器的借口,因为 vi 将为你提供所有你需要的东西。


根据终端仿真器的不同,使用图形用户界面也更快。 :) - Arafangion

11
每次进行复杂的编辑任务时,都会想是否有更高效的方法。大多数情况下,如果你可以用简单的术语来描述它(比如“交换文本段落”或“删除注释行中X字符之后的所有内容”),那么在vim中只需要按几个按键就可以完成。
有一些关键功能非常有用,你将经常使用。我最喜欢的功能包括:
- 块选择(Ctrl-V) - 宏录制(q) - 虚拟编辑(:set ve=all) - 正则表达式 - 管道到外部Unix程序 - 键映射 - 自动完成(C-p、C-x C-p、C-x C-f) - 操作+移动组合(这非常强大)
询问其他程序员他们认为哪些功能最有用,并采纳适合你思维方式的功能。从其他人的.vimrc中窃取想法(这是我的)。

10

删除所有其他文本编辑器应用程序。

然后你将不得不学习它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接