What is the best way to force yourself to master vi?
很久以前,我读过viemu创作者的一篇文章,清除了很多关于vi的误解,并解释了为什么这是一个好主意(以及为什么它在过去的30年里非常受欢迎+)。同一个人也有一套很棒的图形备忘单,可以一次教几个基础知识。
我相信。
事实上,我已经相信过去两年了。但我仍然没有强迫自己学习vi作为我的主编,学习曲线太高了。当我开始工作时,可接受但立即的生产力(使用我当前的编辑器)到目前为止已经超越了生产线(使用vi)。
有没有人有任何好的建议来帮助我们超越学习曲线?它可以是直接的提示,一些其他教程或文章,无论如何。
编辑:请注意,我知道vi的vim / gVim,Cream和MacVim(等)变种。我保留了关于vi的问题来引用整个vi家族。感谢所有的好答案。
更新(2009年4月)
自去年12月以来,我一直在使用Vim(更确切地说,MacVim)。我不回去了:-)
祝他们的Vim掌握好运。
首先,你可能想要拿起Vim;它具有非常出色的功能集以及vi所具有的一切。
也就是说,学习需要纪律。如果你有一份工作并且负担不起生产力(没有被解雇),我建议你去参加一个周末项目,其唯一目的就是学习编辑。在工作时保持文档开放,并保持足够的纪律,不要吝啬。随着你学到更多,变得高效并开始依赖肌肉记忆,坚持下去并不困难。
我一直在使用Vim这么久以至于我甚至都没想过要按哪些键来搜索,导航或保存。我的手永远不会离开键盘。使用Vim是我在编程生涯中做出的最佳选择之一。
我要做的第一件事就是在你的方向键和你的ins / home / end / pgup / down键上放一张纸或一本书。在Vi中不需要那些。
接下来我会习惯按ctrl + [每当你被告知要逃脱时。它更快,你不需要把手从键盘上移开。
然后我会看我的截屏视频:
然后,只是练习练习。
编辑
避开箭头键的原因是它们减慢了你的速度。 Vim最大的好处之一就是它允许你的速度。箭头键也可以防止你真正拥抱模态本质,这在掌握时非常强大。
第0步:学习触摸式。说真的 - 如果你的手指不知道钥匙在哪里,那么vim会很痛苦。即使你拒绝vim,触摸打字也会改善你的编程(请问Steve Yegge)让头脑保持链接无摩擦。有很多软件可以帮助您改善打字。
第1步:使用vimtutor帮助您入门。它是在gvim(在
我想的帮助菜单,或者您只需在命令中输入'vimtutor'即可
线。这需要30-45分钟的时间,然后你的手指会
了解vi / vim的基础知识,你应该能够在没有的情况下编辑文件
想把你的键盘扔出窗外。
第2步:到处使用vim。看到这个
题
有关在命令中使用vim和vi键绑定的提示和链接
在您的网络浏览器中,用于撰写电子邮件,在您的IDE ...中
需要使用vim将键绑定嵌入肌肉记忆中。
第3步:了解有关vim的更多信息。你只会划伤
与vimtutor表面。你可以看这个
视频或
阅读这篇文章(两者都有关于
"有效文本编辑的七大习惯"。您可以
读
关于
提示
和
技巧
上
堆栈溢出。
您可以浏览vimtips。学习一个
litle经常是我的建议 - 那里有很多
坚持一口大小的块将是获得知识的最佳方式
棒。
第4步:获利:)
多年来,我一直是vim的再次使用者(偶尔进行系统管理工作)。我刚刚开始花更多时间在其中进行编程工作。我建议也开始使用gvim。它与大多数操作系统环境很好地集成,并且(甚至更好),您可以在需要时回退到鼠标:)。
要使用vim,请通过vimtutor(与gVim捆绑)运行一次或两次(大约需要一个小时左右)。我不能夸大它对我有多大帮助!特别是关于在文档中移动的不同方式的第一部分,以及如何使用动作命令等记录编辑动作等。之后,事情将变得更加清晰。
然后,开始用它进行快速,轻微的编辑(记事本替换的东西),直到你足够舒服,以快速剪辑进行有用的编辑。然后尝试在其中进行日常工作。你会发现自己很快就会想到其他编辑器中的"重复上一个动作"命令!
您要求提供有助于超越vi文本编辑器学习曲线的好技巧。许多以前的答案建议您不要使用其他编辑器。我认为这是一个很好的建议。从更加图形化的编辑器切换到vi需要改变思维方式。它需要考虑命令而不是视觉变化。
多年来我一直使用vi,并且相信唯一可以提高效率的方法就是记住你经常使用的命令。我这样做的方法是列出最常见的键盘命令。我按功能对这些命令进行了分组和颜色编码,即移动光标,编辑,搜索等。我小心地只包括我不知道的最常用的命令。我们的想法是创建一个快速参考,这也有助于记忆 - 而不是替换可用的帮助屏幕。然后我打印了这个清单并将其粘贴到显示器后面的墙上,这样我就能轻松看到它。 (您提到的图形备忘单可能对某些人来说效果更好,但可能是比记忆工具更好的参考源。)
这是关键。当我对其中一个命令感到满意时,我用铅笔画了一条线。如果我需要的话,我仍然可以看到它,但是我掌握了这个命令对我来说是象征性的。这给了我信心和动力,因为我可以看到定期的进步。一旦我把它们中的大部分划掉了,我就删除了它们并添加了一些较少使用的命令。我继续这个过程,直到我对vi的命令感到满意为止。我知道自己已经达到了这一点,当时我意识到我没有完成任何命令甚至长时间查看列表。
几年前,我需要在UNIX平台上工作,其中vi是唯一可用的编辑器。我在vi上买了一本小口袋参考书,但几乎没用过它。我最后制作了列表并将它们贴在墙上,就像我第一次使用vi时那样。到第一周结束时,即使我使用vi已经五年了,我也很舒服。
强迫自己不要。掌握爱的途径是。
你应该从vim(Vi IMproved)开始,特别是它的GUI - gVim。 GUI具有菜单,在Windows上您可以使用复制,剪切和粘贴快捷方式,因此您可以立即替换记事本。由于菜单显示快捷方式(vim命令),您可以学到很多东西。
从一开始你应该做的另一件事是根据你的需要配置vi。例如,您可以将vim转换为Python IDE。通过这样做,您将没有理由使用其他编辑器,因为vi将为您提供所需的一切。
对我来说VI是一个很好的紧急编辑器,但如果还有其他选择,我不想使用它。我意识到这并不适合所有人,我并不是说它很可怕或者其他什么,我个人更喜欢可发现的用户界面。
但是如果你在Linux中做了很多重要事情,你真的必须知道VI!
所以只需学习基础知识:
i =插入模式
esc =离开插入模式
:wq =保存并退出
:q!=不保存并退出
x =未处于插入模式时,删除该字符。
/ =搜索
这将帮助您完成任何编辑紧急情况。对于那些少数命令(当然还有导航),你无法做任何事情。其余的你可以在你需要的时候"搞定"。
保留参考或书籍 - 当您需要使用VI时,您可能无法浏览网页 - 但手册页可能有些用处。
删除所有其他文本编辑器应用。
然后你将不得不学习它。
强迫自己最简单的方法可能就是从计算机中删除所有其他编辑器。摆脱诱惑:)
每当您执行复杂的编辑任务时,请不断想知道是否有更有效的方法来执行此操作。大多数情况下,当你可以用简单的术语描述的东西(比如"交换文本段落"或"删除注释行中X字符后的所有内容")时,你可以在vim中进行几次击键。
有一些非常有用的关键功能,您将始终使用。我最喜欢的是:
- 块选择(Ctrl-V)
- 宏录制(q)
- 虚拟编辑(:设置ve = all)
- 常用表达
- 管道到外部Unix程序
- 关键映射
- 自动完成(C-p,C-x C-p,C-x C-f)
- 操作+动作组合(这非常强大)
向其他程序员询问他们认为最有用的功能,并采用更适合您大脑的功能。窃取其他人
编辑:我已经在在线间隔重复网站flashcarddb.com创建了一个闪卡,以防你感兴趣...
我写了一篇关于Vim高效编辑的指南。你会发现它很有用。
我退后一步,问问自己"为什么我要学习这个编辑器?是什么让我觉得它会比我现在的文本编辑器更快或更好?"然后学习那些使Vi(m)对您不可或缺的功能。
例如,Vim的CTags集成对我来说是完全不可或缺的。我使用非常非常大的代码库,能够在一次击键中跳转到一个函数或类定义(无论它在哪个文件中)都是一个绝对杀手级的功能,我无法工作。
使用.vimrc文件制作可自动执行常见任务的宏。
您的自动驾驶仪编辑选择器将选择能够以最少的精力完成工作的编辑器。一点准备工作将确保编辑器是Vim。 :-)
两件事会大大提高你的vi技能:
我的建议:从小做起。首先记住一小组最有用的命令。当我开始vi时,这些是我的前十名:
- (Esc)返回命令模式(最重要!)
- a在光标后添加文本
- A在当前行的末尾添加文本
- x删除1个字符
- dd删除1行
- R替换文本(覆盖)
- 你要撤消
- :Q! (输入)退出而不保存
- :w(回车)保存
- ZZ保存并退出
只使用这些命令就可以完成很多基本编辑。一旦你感到舒服,其余的看起来并不太难。
顺便说一句,我想补充一点,我曾经依赖vi作为我的主要文本编辑器,但现在只有我必须这样做。就我而言,当我使用Emacs或Visual Studio等工具时,效率更高(请注意:"在我的情况下")。尝试多种工具,并选择最能帮助您提高工作效率的工具。祝好运!
这听起来很愚蠢,但玩roguelike游戏(如Nethack或Angband)是一种有趣的方式,可以轻松使用
在工作中使用它时,记下当前编辑器中使用的所有快捷方式和功能。然后在星期六早上坐下来使用Google和堆栈溢出找出如何在vi中执行每个操作。如果您使用一张(或多张)纸张,可能效果最好。
现在禁用/删除工作中的其他编辑器,这样您需要花费更长的时间来查找和重新安装它们,而不是查看比较表并在vi中执行 - 即您别无选择。
最后,将您的旧编辑器中的交叉快捷方式列表发布到您博客上的新编辑器。
祝好运!
不要使用X11?
1 | $ sudu rm /usr/local/bin/emacs |
将您的登录shell更改为vi?
首先,强迫自己使用ed,然后vi看起来像奢侈品?
在bash中使用vi键绑定?
刚开始使用vi?
在我看来,学习编辑与学习语言并没有太大的不同。沉浸效果最佳。
我使用vi进行快速编辑,或者当我因某些原因无法使用X11时,我生活在emacs中。真正强大的编辑值得花时间学习。
我记得当我第一次开始学习emacs的时候,就在我对Vim已经非常熟悉之后,我和你在同一艘或者类似的船上,在那里我知道如何在另一个编辑器中完成很多工作,所以当我开始使用emacs,它总是非常缓慢。
但是,我认为你要做的只是吸收一点点痛苦,而且总是,总是要确保你查看文档,做一些你知道在以前的编辑器中可以做的事情,比如移动到行尾或选择文本区域。
如果您手头有当地的vi专家,您可以提出问题,或者如果您喜欢我们的公司,那么您也可以提升结对编程。这样,当你尝试做一些应该很容易的事情时,你可以简单地问一个人,他们会告诉你如何,如果你经常使用编辑器几周,你不应该问更多然后在它成为第二天性之前的几次。
如果您没有任何本地资源,那么网上有大量的书籍/教程/参考表应该可以回答您的大部分问题。
最终,学习Vi就像学习其他技能一样,没有灵丹妙药,你必须接受这一点,一段时间后,你的当前编辑器的效率会降低。只是不断告诉自己,"其他人已经能够学习Vi,我至少和他们一样聪明"(这就是我告诉自己的:)但是:)
我的建议是提出一些简单的程序并使用VI编写,从头到尾。
可能的情况是,你最初会因为学习曲线而过于沮丧,迫使自己在工作或任何时间敏感的环境中使用它们。
我之前已经完成了这个以熟悉环境/编辑器,并且它运行良好。
如果您在编写要写的内容时遇到问题,我建议您重做在学校中完成的项目(或者您之前完成的任何其他项目)。这种方法有额外的好处,让你看到你有多少更好的开发人员。 :)
编辑:忘了提到你应该完全从控制台做到这一点,以避免任何使用鼠标的诱惑!
我使用
还有一本像VI Editor Pocket Reference这样的书有很大帮助。
gVIM有一个非常好的教程(开始菜单组中的链接)。
我发现通过这项工作有助于克服最初的学习困境;然后将我的Visual Studio切换到ViEMU帮助我磨练了我的VI技能。
此外,http://vimcasts.org/上的截屏视频也很棒!
您可以使用原始的Happy Hacker键盘之一(无箭头键),并在每次开始编辑时放置(无线)鼠标。
在您使用的所有平台上安装
然后运行vimtutor(命令行中的
观看以下讲座并遵循其建议:有效文本编辑的7个习惯2.0
我说你肯定想开始使用它进行所有编辑。如果你害怕生产力的损失,那么花一个周末来练习它(我曾经这样做,从qwerty切换到dvorak,并且在周一之前我的生产力足够高,之后设法坚持下去)。
这是值得的努力,你不会回头!
我的头号建议:学习快速打字,无需看键盘。
如果你不能触摸类型并且总是狩猎和啄食结肠或hjkl或:%s / foo / bar,那就别忘了。打字可能比使用鼠标更快,但如果你不是这样,vi不会起作用。
但结合良好的打字技巧,ssh和屏幕和vi将是自然的。
你可能想要从奶油开始。 Cream将自己描述为vim的"现代配置"。基本上,它是vim的特殊版本,其外观和感觉与任何其他文本编辑器一样,用于所有实际目的。但启用"专家模式",你就拥有了vim的所有功能和行为。
因此,您可以开始使用Cream作为常规文本编辑器,然后尝试"专家模式",直到您足够舒适地完全切换到vim。
写出一大堆命令/快捷方式很容易,但如果没有练习,很难记住这些命令/快捷方式。
一次关注一个新命令。当它变为自动时,比如在使用它一两周后,再添加另一个曲目。
你将花很长的时间在短期内完成某些事情 - 这些是获得新捷径的明显机会。
根据我的经验,当我尝试不立刻承担太多时,这会更容易。
面对这样一个事实,它将立即创造性能。学习新工具时,您需要能够做一些您知道如何使用其他工具的事情,这样问题就不是您的问题了。使用新工具一段时间后它会消失,你将只关注潜在的问题。
像vim这样的东西(正如其他人所说,vim远远优于vi),重要的是要定期重读和浏览文档。没有它,界面是完全不可发现的。随着每一个新的阅读,你会看到一个功能,并说,"啊哈,这将解决我上周试图弄清楚的这个问题",并将它存档在你的大脑。与您所拥有的现实问题相关的解决方案比随机快捷方式更容易记住。
最后,你可以使用vim的一小部分功能,所以不要被所有的花里胡哨所淹没。想想Word中的所有功能,99%的人会使用它们吗?
通过
开始使用vim进行简单编辑,如配置文件或html。根据需要学习命令。
在google上搜索一个使用类似于你的工具链的人使用的.vimrc。打开语法高亮显示。找一个漂亮的配色方案。
学习宏,因为Vim最适合自动化任务和代码段插入,例如将几个单词格式化为复杂的XML标记或将CSV转换为HTML表格。
十多年前,当我做我的主人时,我学会了vim / vi。那时我唯一可以访问的机器是Sun Sparc站(我认为是Sparc 20)。而vi是它唯一的东西。所以你可以做的一件事就是"强行"自己就是卸载你拥有的任何其他编辑器!
当我年轻的时候(十一岁),我的家人搬到了德国几年。我能够通过沉浸式学习语言 - 我别无选择,只能说这种语言(尽管如果我处境艰难,我可以找到一位英语演讲者)。
我的建议是你做同样的事情 - 除非你处于一个绝对绝望的境地(例如"好吧,我刚刚删除了/ etc / passwd并且需要放回root"),做出有意识的决定,用vi做到最好。如果你愿意,实际上学习基础知识并不需要那么长时间。
正如其他人所说,
1 | vim-tutor |
可以是一个非常好的起点,就像这个形象一样。
使用便利贴方法:-)
使用gvim时,请允许自己使用菜单。
阅读有关vim的书籍/教程,以便了解基础知识。
(插入和命令模式)
选择一些您认为需要的非常酷的功能,并在便利贴上写下这些功能
然后将那些放在显示器的下部。
可能是个好的开始
我,a,o,gg,G,:10,/某事
还有一些切割和粘贴之类的
yy,dd,p
并且最重要的是
v,V(视觉模式)+剪切和粘贴
然后当你知道它们时,用一个具有更冷功能的新机器替换它。
并重复,直到你快乐。
/约翰
就个人而言,我必须做的是确保我可以在多个应用程序中使用Vim键绑定(或至少足够接近)。每当我改变编辑器时,必须完全切换我编辑文本的方式,这使得将Vim编辑风格变为肌肉记忆变得非常困难。
就我而言,Viemu + vimperator就是这样做的。
如何强迫自己?我的建议是在一个工作环境中,你必须通过从windows中telnetting / puttying来维护10个unix盒子。您将很快意识到,在* nix的多个变体上有效编辑文本的唯一方法是使用几乎每个我知道的发行版附带的标准编辑器。此外,当X11没有在全新安装时启动时,vi是你唯一的朋友:)
当我16岁时,我被迫学习Vim,这是我第一次编程的工作(老板不会让我们使用其他任何东西),但在我阅读Steve Oualline的Vim Book之前我没有取得任何实际进展 - 强烈推荐如果你想认真对待vim,那就是一个起点。
实际上,Vim比一些编程语言需要更多的时间来掌握(功能非常复杂)。试图通过打印备忘单来"掌握"Vim就像试图通过阅读几篇博客文章来掌握Haskell一样。准备投入一些重要的时间,你会得到很好的回报。
嗯,这更像是一个生理学问题,而不是一个编程问题,但是我能够做的事情最好的方式就是我真的不想做的事情就是去做,然后不要试图激励自己。去做吧。
把它想象成刷牙。你必须激励自己去做吗?不,你就是这样做的。
等到你必须在一个实时环境中调试一个奇怪且令人难以置信的问题,你可以做的就是进入命令行。你可能最终不喜欢VI,但它会节省你很多时间,你将学习大量的技巧来逐步浏览大量(日志)文件。
打印出互联网上可以找到的许多Vi / Vim备忘单之一,并强迫自己坚持使用几周。
一旦你学习了一些基本命令,你就可以非常高效。从那里开始,每隔一段时间就一直保持堵塞并学习新的命令。你无法学习所有的vi命令。我相信有比宇宙中的原子更多的vi命令! :)
我试过保留一个小的备忘单或常见的vi命令的粘滞便笺。我对我使用的IDE做同样的事情。我发现如果我在我的显示器上放置键盘快捷键或命令的便签,它可以帮助我学习它们。一旦我使用了足够的捷径并认为我记得很清楚,我就会删除粘滞便笺。
删除notepad.exe并创建vim的快捷方式,而不是名为notepad :)
或者通过ssh或没有GUI的机器进行所有编码;)
花费十年时间从只有vi和emacs的机器上发布到Usenet(以及emac从'rn'调用时有很长的启动时间)。
这就是我学习它的方式。
但是对于更快的方法,我所能推荐的只是你只是承诺学习它,花几个小时来处理一些源代码。如果您还没有vim,请安装它 - 它具有出色的语法突出显示功能。
这非常值得。我知道我可以在西方世界的任何地方使用任何Unix机器,甚至可以通过慢速拨号连接或无GUI的机器,并在几分钟内完全高效。
我开始使用VI,因为除了Windows之外,它几乎是每个操作系统的默认编辑器。然后,我不再在Windows上进行大量编码,这样有所帮助。
如果你想强迫自己使用* NIX / OSX系统,只需删除其他编辑器或别名。对于其他人来说,这取决于你自己。每当您不使用VI编辑文件时,您将无法获得cookie。
虽然我是vi的忠实粉丝,特别是vim,但是有很多强大的编辑器,你不应该觉得你需要使用vi,或者它在某种程度上是一个绝对完美的编辑器,因为它不是。
如果你不得不强迫自己使用vi,我会担心你使用它感觉不高效。但是,如果你坚持坚持,我可能会确保我为每一个编辑任务使用vi。每当我需要做某些事情并且我不是最好的方法时,我会尝试找到最佳(在最小击键方面)在vi中执行它之后我做了非正常的正常方式。然后我会用这个小提示(或者只是一个文本文件)做一个便利贴,所以下次我会记住它。
随着时间的推移,vi的生产力将大大提高。
我为自己制作了一个方便的单页备忘单,并用它来学习所有非基本功能。然而,练习是掌握任何东西的唯一方法。
vi很不错,因为它适用于所有UNIX类型的计算机,Mac OS X,Solaris,Linux。在eBay上找一个旧的decstation盒子?它有vi。 Sun OS 4怎么样?再次。
玩很多nethack。这就是我在大学时所做的事情,后来我发现光标移动是一样的。虽然此时您可能需要更改设置以使用vi样式键映射。
我在Windows上有VI,我使用的版本如下所示,如果我在控制台窗口中我总是默认为VI,那么无论我运行什么操作系统,我都知道我可以编辑该文件。相反,如果我处于UI模式,我使用Notepad ++ go figure。
NT VI - 版本0.23
由开发:
托尼安德鲁斯
基于以下程序:
蒂姆汤普森
如果你强迫自己使用它几天,你会发现命令很快变成了第二天性。如果你在posix系统上,我建议你从BSD许可的nvi开始,这是一个经典的1:1 vi克隆,然后转到vim。如果从vim开始,可能只使用编辑命令的子集,因为它的INSERT模式与GUI编辑器非常相似。
我这样做的方法是最初花几分钟来完成最基本的东西 - 移动光标,搜索前进和后退,跳到下一个和前一个单词/句子/段落等。插入,追加。无论你能适应什么。然后,当你有事可做时,不必在接下来的15秒内完成,请自己使用它。
如果您对基础知识非常熟悉,请慢慢学习更高级的命令 - 尤其是利用您之前学习的命令(例如替换接下来的3个单词,或删除到下一个搜索目标)
一旦我学会了,我喜欢使用VI。高级命令比大多数GUI编辑器提供的功能强大得多,并且它无处不在且基于文本,并且通过ssh可用,这一事实更好。
符号链接系统上的每个终端编辑器,将系统上的每个图形编辑器vim和符号链接到一个脚本,该脚本打开一个运行vim的新终端窗口。
我从优秀的O'Reilly书"学习vi编辑器"中学到了vi。
我用它来编辑网络服务器上的文件,而不是使用FTP。那是在9年前,我已经掌握了这些技能。
另一件事是在VI中找到一些很棒的东西,比如全局搜索和替换,或者更强大的东西,并在需要的时候使用VI。
最好的方法?将终端设置为使用vi keybindings。
花了几个小时在vi爱好者的网站http://nereida.deioc.ull.es/html/vilovers.html - 大量的教程,链接等与热情的vi粉丝。
我会从argdo开始,一旦你爱上了它,其余的很容易......
做我做的。将它用于一切,并在freenode上的#vim中闲逛。
当您需要快速搜索某些内容时,将其全部放在一个页面上可以提供帮助。
为什么我不能用我自己的低摩擦力量来强迫自己? :-)
我做的很简单:我尝试使用vim创建我的git提交消息(当你没有在命令行指定消息时使用默认编辑器)。
当然,提交消息很短,几乎没有帮助。但是当用
谷歌是你的朋友。保持一个窗口或标签方便,当你有几次你需要做的事情,比如缩进代码或用正则表达式搜索时,查找它。最好的提示网站将变得熟悉,标记一些,也许打印出一个备忘单。
当我开始为ISP工作时,我只学习了vi,其中用于编辑域的脚本仅在终端上打开vi。我别无选择,只能学习它,但我从来没有后悔过。
简而言之,让自己处于一种情况,你别无选择,只能学习它。
我发现在现代vi(vim?)中真正令人困惑的一件事是输入模式允许命令模式的一些但不是所有功能。当输入模式被完全愚蠢到"只覆盖,没有光标移动"这种旧Solaris vi所具有的东西时,我感觉更舒服。真正的vi要求您在大多数时间保持命令模式。
话虽如此,现在没有必要学习vi - emacs就像普遍存在一样。 :)