不久前,我读了viemu创建者的一篇文章,澄清了许多关于vi的误解,并解释了为什么它是一个好主意(以及为什么它在过去30多年里非常流行)。同一个人还有一套很棒的图形备忘单,每次教一些基本知识。
我相信。
事实上,在过去的两年里,我一直被说服。但是我仍然没有强迫自己学习vi作为我的主要编辑器,学习曲线太高了。当我开始工作时,可接受的但即时的生产力(使用我当前的编辑器)到目前为止已经超过了进一步的巨大生产力(使用vi)。
有没有人有什么好的建议来帮助你度过学习曲线?它可以是直接的提示,一些其他教程或文章,无论什么。
编辑:注意,我知道vi的vim/gVim, Cream和MacVim(等等)变体。我的问题是指vi家族作为一个整体。谢谢你的精彩回答。
更新(2009年4月)
自去年12月以来,我一直在日常的职业生活中使用Vim(更准确地说,是MacVim)。我不会回去的。
祝大家在掌握Vim的过程中好运。
我要做的第一件事是在方向键和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最大的好处之一是它提供的速度。方向键还会阻止你真正拥抱模态的本质,这在掌握后是非常强大的。
对我来说,VI是一个很好的应急编辑器,但如果有其他可用的替代方案,我就不想使用它。我知道这并不适合所有人,我并不是说这很糟糕,我只是个人更喜欢可发现的UI。
但是如果你想在Linux中做任何重要的事情,你真的必须了解VI !
所以只需要学习基础知识:
i =插入模式
Esc =leave插入模式
:wq=save and quit
:问!=不要存钱就放弃
X =当不在插入模式时,删除该字符。
/ =搜索
这能帮你度过任何剪辑上的难关。使用这几个命令(当然还有导航)没有什么是做不到的。其余的你可以根据需要“附加”。
不过,要有参考资料或书籍可用——当您需要使用VI时,可能无法浏览网页——但是手册页可能有些用处。
您要求获得一些好的技巧来帮助您度过vi文本编辑器的学习曲线。以前的许多答案建议您不要使用其他编辑器。我认为这是一个很好的建议。从更图形化的编辑器切换到vi需要改变心态。它需要从命令的角度思考,而不是从视觉变化的角度。
I used nothing but vi for many years and believe the only way you can be productive is to memorize the commands you regularly use. The way I did this was to make a short list of the most common keyboard commands. I grouped and color-coded these commands by function, i.e. Moving the Cursor, Editing, Searching, etc. I was careful to only include the most commonly used commands I did not know. The idea is to create a quick reference that is also an aid in memorization – not to replace the available help screens. Then I printed this list and taped it to the wall behind my monitor so I could see it easily. (The graphical cheat sheets you mentioned might work better for some, but are probably a better reference source than a memorization tool.)
Here's the key. As I became comfortable with one of the commands, I drew a line through it with a pencil. I could still see it if I needed it, but it was symbolic to me that I had mastered that command. That gave me confidence and motivation as I could see regular progress. Once I had most of them crossed off, I removed them and added some of the more rarely used commands. I continued this process until I was satisfied with my command of vi. I knew I had reached that point when I realized I had not crossed off any commands or even looked at the list in a long time.
几年前,我需要在一个UNIX平台上工作,其中vi是唯一可用的编辑器。我买了一本关于vi的袖珍参考书,但几乎没用过。最后,我像第一次使用vi一样做了清单,并把它们贴在墙上。到第一周结束时,我感到非常舒服,尽管我已经有五年没有使用vi了。
我记得当我第一次开始学习emacs时,那是在我已经非常熟悉Vim之后,我和你处于相同或相似的境地,我知道如何在另一个编辑器中完成很多工作,所以当我开始使用emacs时,它总是非常缓慢。
然而,我认为你要做的只是承受一点点痛苦,并且总是,总是,总是确保你在以前的编辑器中做一些你知道可以做的事情时查找文档,比如移动到一行的末尾,或者选择文本的一个区域。
如果你身边有一个本地的vi专家,你可以问问题,或者如果你像我们公司一样,你提倡结对编程,这也是有帮助的。这样当你试图做一些应该很容易的事情时,你可以简单地问别人,他们会告诉你如何做,如果你经常使用编辑器几个星期,你不应该在它成为第二天性之前再问几次。
如果你没有任何本地资源,网上有大量的书籍/教程/参考资料,应该可以回答你的大部分问题。
最终,学习Vi就像学习其他技能一样,没有银弹,你必须接受这一点,在一段时间内,你使用Vi的效率将低于当前的编辑器。只要不断告诉自己,“其他人已经能够学习Vi,我至少和他们一样聪明”(这就是我告诉自己的:))
每次你在做一项复杂的编辑任务时,都要思考是否有更有效的方法来完成它。大多数情况下,当您可以用简单的术语描述它时(如“交换文本段落”或“删除注释行中X字符后面的所有内容”),您只需在vim中敲击几下键就可以完成。
有一些关键特性非常有用,你会一直用到它们。我最喜欢的是:
方块选择(Ctrl-V)
宏记录(q)
虚拟编辑(:set ve=all)
正则表达式
连接到外部Unix程序
键映射
自动补全(C-p, C-x C-p, C-x C-f)
操作+移动组合(这是非常强大的)
询问其他程序员他们认为最有用的功能是什么,然后采用那些更适合你大脑的功能。从别人的。vimrcs中窃取想法(这是我的)
我的建议是:从小事做起。只要从记住一小部分最有用的命令开始。当我开始创建vi时,以下是我最喜欢的10个:
(Esc)返回命令模式(最重要!)
在光标后添加文本
在当前行的末尾添加文本
X删除1个字符
Dd删除一行
用R替换文本(覆盖)
U撤销
:问!(Enter)不保存退出
:w(输入)保存
ZZ保存并退出
只需使用这些命令就可以完成许多基本的编辑工作。一旦你适应了,剩下的看起来就不太难了。
顺便说一句,我想补充一点,我曾经依赖vi作为我的主要文本编辑器,但现在只有在我不得不这样做的时候。就我而言,当我使用Emacs或Visual Studio这样的工具时,工作效率会更好(请注意:“在我的情况下”)。尝试不止一种工具,选择最能提高效率的那一种。好运!
虽然我是vi的忠实粉丝,特别是vim,但有很多功能强大的编辑器,你不应该觉得你必须使用vi,或者它在某种程度上是某种绝对完美的编辑器,因为它不是。
If you have to force yourself to use vi, I would be concerned that you don't feel productive using it. However, if you insist on persisting, I would probably just make sure I used vi for every single editing task. Whenever I need to do something and I don't quite no the best way to do it, I'd try to find the optimal (in terms of minimal keystrokes) to do it in vi after I did it a non-optimal normal way. I'd then make a post-it note with this little tip (or maybe just a text file) so I would remember it for next time.
随着时间的推移,您使用vi的效率将显著提高。
使用便利贴方法:-)
在使用gvim时,允许自己使用菜单。
读一本关于vim的书或教程,这样你就知道基本知识了。
(插入和命令模式)
选择一些你认为你需要的很酷的功能,并把它们写在便利贴上
然后把它们贴在显示器下方。
一个好的开始可能是
i, a, o, gg, G,:10,/一些
还有一些剪切和粘贴
Yy dd p
最后再加上
v, v(可视模式)+剪切粘贴
然后当你知道它们的时候,用一个功能更酷的新便利贴代替它们,
重复这个过程,直到你满意为止。
/Johan
步骤0:学会触摸打字。说真的,如果你的手指不知道键在哪里,那么vim将是一种痛苦。而且,即使你拒绝vim,触摸输入也会改善你的编程(问Steve Yegge),因为它可以让你的大脑去监视链接。有很多软件可以帮助你提高打字水平。
步骤1:使用vimtutor开始。它在gvim(下
我想是帮助菜单)或者你可以在命令中输入“vimtutor”
线。这将花费你30-45分钟的时间,然后你的手指会
了解vi/vim的基础知识,你应该能够编辑文件
想把键盘扔出窗外。
步骤2:在所有地方使用vim。看到这个
问题
在命令中使用vim和vi键绑定的提示和链接
行,从您的web浏览器,编写电子邮件,在您的IDE…你
需要使用vim将键绑定嵌入到肌肉记忆中。
步骤3:了解更多关于vim的知识。你只会划伤
表面与vimtutor。你可以看这个
视频或
阅读这篇文章(都是关于
“有效编辑文本的七个习惯”。你可以
读
关于
提示
而且
技巧
在
StackOverflow。
您可以浏览vimtips。学习一门
我的建议是“很少经常”——外面有太多这样的东西
坚持一口大小的知识块将是获取知识的最佳方式
棍子。
第四步:利润