强迫自己去掌握vi的最好方法是什么?

很久以前,我读了viemu的创造者的一篇文章 ,清理了很多关于vi的误解,并解释了为什么它是一个好主意(为什么它在过去30年里非常受欢迎)。 同样的家伙也有一套很棒的graphics化作弊表 ,一次只教几个基础知识。

我相信。

事实上,我已经确信过去两年了。 但是我还没有强迫自己把vi当作我的主编,学习曲线太高了。 当我开始工作时,可以接受但即时的生产力(使用我现在的编辑)迄今为止赢得了更高的生产力(使用vi)。

有没有人有任何好的提示来帮助学习过去? 它可以是直接提示,其他教程或文章,无论如何。

编辑:请注意,我知道vi的vim / gVim , Cream和MacVim (等)变种。 我把我关于vi的问题作为一个整体来提及vi家族。 感谢所有伟大的答案。

更新(2009年4月)

自从去年12月份以来,我一直在使用Vim(更确切地说,MacVim)。 我不回去了:-)

祝他们Vim掌握好每一个人。

首先,你可能想要拿起Vim; 它具有极大的优越特性,以及vi的一切。

这就是说,学习需要纪律。 如果你有工作,不能承受生产力的打击(没有被解雇),我build议参加一个周末的项目,只是为了学习编辑。 在工作时保持文档的开放性,并且要有足够的纪律以防止出现问题。 随着你学到更多,变得高效,开始依靠肌肉记忆,坚持下去就不那么难了。

我一直在使用Vim这么久,甚至没有想到要按什么键来search,导航或保存。 而我的手永远不会离开键盘。 使用Vim是我在编程生涯中做出的最好的select之一。

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

接下来,我会习惯按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最大的好处之一就是它允许你的速度。 方向键也阻止你真正拥抱模态本质,掌握的时候非常强大。

第0步:学习触摸types。 说真的 – 如果你的手指不知道按键的位置,那么vim将是一个痛苦。 即使你拒绝vim,触摸打字也会改善你的程序devise (问Steve Yegge ),让你的思想监控链接的摩擦力。 有很多 软件可以帮助你改善你的打字。

第1步:使用vimtutor让你开始。 它在gvim中(我想是在帮助菜单下),或者你可以在命令行input'vimtutor'。 这将需要30-45分钟的时间,然后你的手指会知道vi / vim的基本知识,你应该能够编辑文件,而不想把你的键盘扔出窗外。

第2步:到处使用vim。 看到这个问题的提示和链接在命令行中使用vim和vi键绑定,从您的Web浏览器,用于编写电子邮件,在您的IDE …您需要使用vimembedded您的肌肉记忆中的键绑定。

第3步:了解有关vim的更多信息。 你只会用vimtutor划伤表面。 你可以看这个video或者阅读这篇文章 (关于“有效的文本编辑的七种习惯”),你可以阅读关于StackOverflow的 技巧和窍门 ,你可以浏览vimtips,经常学习一个俚语是我的build议 – 有这么多在那里坚持咬一口大块是最好的方法来使知识坚持下去。

第4步:利润:)

多年来,我一直是vim的重新用户,偶尔也是系统pipe理员。 我最近刚开始花更多的时间来做我的编程工作。 我build议从gvim开始。 它与大多数操作系统环境很好地集成在一起,(甚至更好),当你需要的时候,你可以回到鼠标。

要开始使用vim,请运行vimtutor (捆绑gVim)一两次(需要一个小时左右)。 我不能夸大对我有多大的帮助! 特别是关于不同文件移动方式的第一部分,以及如何使用动作命令logging编辑动作等。之后,情况会更加清晰。

然后,开始做快速的小编辑(记事本replace的东西),直到你足够舒适的快速剪辑做有用的编辑。 然后尝试在你的日常工作。 你会发现自己在其他编辑立即“重复上一次行动”的命令!

你要求提供很好的提示来帮助你通过vi文本编辑器的学习曲线。 许多以前的答案build议你不要使用其他编辑器。 我认为这是很好的build议。 从更graphics化的编辑器切换到vi需要改变心态。 它需要根据命令进行思考,而不是视觉上的变化。

我多年以来一直使用vi,只有记住你经常使用的命令。 我这样做的方式是做一个最常见的键盘命令的简短列表。 我按function对这些命令进行分组和颜色编码,即移动光标,编辑,search等。我小心地只包含了我不知道的最常用的命令。 这个想法是创build一个快速参考,这也是一个记忆的帮助,而不是取代可用的帮助屏幕。 然后,我打印这个清单,并将其粘贴到监视器后面的墙上,以便我可以轻松地看到它。 (您提到的graphics备忘单可能对某些人更好,但可能比记忆工具更好的参考源。)

这是关键。 当我熟悉其中的一个命令时,我用铅笔画了一条线。 如果我需要的话,我仍然可以看到它,但是我已经掌握了这个命令,这对我来说是象征性的。 这让我有信心和动力,因为我可以看到有规律的进展。 一旦我把他们中的大多数人划掉了,我将他们删除了,并添加了一些更less使用的命令。 我继续这个过程直到我对vi的命令感到满意。 当我意识到自己没有任何指令,甚至很长一段时间没有看清目录时,我就知道自己已经达到了这个程度。

几年前,我需要在一个UNIX平台上工作,其中vi是唯一可用的编辑器。 我在vi上买了一本小口袋的参考书,但很less用到它。 我结束了列表并把它们贴在墙上,就像我第一次使用vi一样。 在第一周结束的时候,尽pipe我已经使用了六年,但是我还是很舒服的。

对我来说,VI是一个很好的紧急编辑器,但是如果有其他的select,我不会使用它。 我意识到这不是每个人,但我不是说这是可怕的或任何东西,我个人更喜欢一个可发现的用户界面。

但是如果你在Linux中做什么重要的事,你真的必须知道VI。

所以只要学习一下基本知识:i =插入模式esc =离开插入模式:wq =保存并退出:q!=不保存并退出x =当不处于插入模式时,删除字符。 / =search

这会让你通过任何编辑的紧急情况。 这几个命令(当然,导航)是没有办法的。 其他的你可以在你需要的时候“坚持下去”。

请保留一个参考或书籍 – 当你需要使用VI时,你可能无法浏览网页 – 但手册页可能有些用处。

强迫自己不要。 掌握爱情的道路是。

你应该从vim (Vi IMproved)开始,尤其是它的GUI – gVim 。 GUI具有菜单,在Windows上可以使用复制,剪切和粘贴快捷方式,因此可以立即更换记事本。 由于菜单显示快捷键(VIM命令),你可以学到很多。

你应该从一开始就做的另一件事是为你的需要configurationvi。 例如,你可以把vim转换成一个Python IDE 。 通过这样做,你将无法使用另一个编辑器,因为vi会为你提供你所需要的一切。

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

那么你将不得不学习它。

强制自己的最简单的方法可能就是从您的机器中删除所有其他编辑器。 摆脱诱惑:)

编辑:我已经创build了一个flashcard设置在网上间隔重复网站flashcarddb.com ,万一你有兴趣…

  1. 使用间隔重复闪存卡程序,如mnemosyne , supermemo或anki ,将学习和保留新的命令纳入日常工作。 将vim用作日常编辑是不够的。 要掌握它,你必须将这些代码存储在你的头脑中,等待时间,这是他们理想的解决scheme。
  2. 使用自定义维护.vimrc
  3. 编写或编辑一个vim插件

每当你做一个复杂的编辑任务,不要怀疑是否有一个更有效的方法来做到这一点。 大多数情况下,当你用简单的术语来描述的时候(比如“交换段落的文本”或者“在注释行中的X字符之后删除所有内容”),你可以在vim中做几个按键。

有一些非常有用的关键function,你会一直使用。 我最喜欢的是:

  • 块select(Ctrl-V)
  • macros录制(q)
  • 虚拟编辑(:set ve = all)
  • 常用expression
  • pipe道到外部的Unix程序
  • 键映射
  • 自动完成(Cp,Cx Cp,Cx Cf)
  • 操作+动作组合(这是惊人的强大)

向其他程序员询问他们认为最有用的function,并采用那些更适合你的大脑的function。 从其他人的.vimrc窃取想法( 这是我的 )

我写了一个使用Vim进行高效编辑的指南。 您可能会发现它有帮助。

我会退后一分钟,问自己:“为什么我要学习这个编辑器?是什么让我觉得它会比我现在的文本编辑器更快或更好? 然后学习那些使Vi(m)不可或缺的function。

例如,Vim的CTags整合对我来说是完全不可或缺的。 我使用一个非常非常大的代码库,并且能够在一个按键中跳转到一个函数或类定义(无论它在哪个文件中)是一个绝对的杀手级function,我有一个麻烦工作没有。

使用.vimrc文件来制作可以自动执行常见任务的macros。

你的自动驾驶编辑器select器将select编辑器,以最快的速度和最less的精力完成工作。 一些准备工作将确保编辑器是Vim。 🙂

有两件事会大大提高你的vi技能:

  1. 练习,练习,练习
  2. Nethack

我的build议:从小处着手。 首先记住一小组最有用的命令。 当我开始六,这是我的前十名:

  • (Esc)返回到命令模式(最重要!)
  • 在光标后添加文字
  • A在当前行的末尾添加文本
  • x删除1个字符
  • dd删除1行
  • R取代文字(覆盖)
  • 你撤消
  • :Q! (回车)退出而不保存
  • :w(回车)保存
  • ZZ保存并退出

只有使用这些命令才能完成许多基本的编辑。 一旦你感到舒服,其余的看起来并不难。

顺便说一句,我想补充说,我曾经依靠vi为我的主要文本编辑器,但现在只有当我必须。 就我而言,当我使用Emacs或Visual Studio等工具时,生产力会更好(请注意:“就我而言”)。 尝试多个工具,并select最有助于提高生产力的工具。 祝你好运!

这听起来很愚蠢,但玩roguelike游戏(如Nethack或Angband )是一个有趣的方式来使用h / j / k / l键来进行游标导航。

记下当前编辑器在工作中使用的所有快捷方式和function。 然后在星期六上午坐下来,使用谷歌和堆栈溢出了解如何做vi中的每一个。 如果你使用一张纸(或多张纸),可能是最好的。

现在,在工作中禁用/删除其他编辑器,以便查找并重新安装它们比查看比较表更快,而且在vi中执行 – 也就是说,您别无select。

最后,将您的旧编辑器的交叉快捷方式列表发布到您的博客上。

祝你好运!

不要使用X11

 $ sudu rm /usr/local/bin/emacs 

更改你的loginshell到vi

首先,强迫自己使用ed ,那么vi会看起来像是一种奢侈?

bash中使用vi键绑定?

一直开始使用vi

在我看来,学习编辑与学习语言并没有太大的不同。 沉浸效果最好。

我使用vi进行快速编辑,或者因为某些原因无法使用X11 ,但我住在emacs中 。 真正强大的编辑是值得花时间学习的。

我的build议是想出一些简单的程序,并使用VI开始写完。

可能的情况是,首先学习曲线会使你在工作中或任何时间敏感的环境中使用它们,你会感到非常沮丧。

我之前已经完成了这个工作,以熟悉环境/编辑器,它工作得很好。

如果您在写东西时遇到问题,我build议重做您在学校所做的项目(或以前完成的任何其他项目)。 这种方法有额外的好处,让你看看你有多less更好的开发者。 🙂

编辑:忘了提及,你应该完全从控制台做到这一点,以避免任何诱惑,使用鼠标!

我记得刚开始学习emacs的时候,那是在我已经非常适应Vim的情况下,我和你在相同或相似的地方,在另一个编辑器里我知道怎么做很多,所以我开始使用emacs,它总是痛苦地慢。

不过,我认为你所要做的只是吸收一点点的痛苦,而且总是要始终确保你查阅文档来做一些你知道你可以在之前的编辑器中做的事情,例如移动到行尾,或者select文本区域。

如果您有一位当地的vi专家,您可以提出问题,或者您喜欢我们的公司,那么您也可以帮助您推广配对编程。 这样,当你试图做一些应该很容易的事时,你可以简单地问一个人,他们会告诉你怎么做,如果你经常使用编辑几个星期,你不应该再问更多然后几次,然后成为第二性质。

如果您没有任何本地资源,网上有大量的书籍/教程/参考资料可以回答您的大部分问题。

最终,学习Vi就像学习其他技能一样,没有银弹,而且你必须接受这个问题,一段时间以后,你现在的编辑就会变得不那么富有成效。 只要不断告诉自己,“其他人已经能够学习Vi了,而且我至less和他们一样聪明”(这就是我自己告诉自己:))

我使用vi主要原因是ssh (或Windows上的Putty):当您远程login到Unix服务器时, vi始终可用。 当光标键和退格/删除都没有映射时,它可以与VT100一起使用。

还有一本像VI Editor Pocket Reference这样的书很有帮助。

gVIM有一个非常好的教程(链接在开始菜单组)。

我发现通过这种方式帮助克服了最初的学习困难。 然后将我的Visual Studio切换到ViEMU帮助我磨练了我的VI技能。

此外,在http://vimcasts.org/的屏幕录像是伟大的!;

您可以将手放在原始的快乐黑客键盘上(无箭头键),并且每次开始编辑时都无法将您的(无线)鼠标放在触手可及的位置。

写出一大串命令/快捷方式很容易,但是如果没有练习就很难记住它们。

一次集中一个新的命令。 当它变成自动的时候,比方说在使用一两个星期后,再添加一个到你的曲目。

你将会在短期内完成某些事情 – 这些对于学习新的捷径是显而易见的机会。

根据我的经验,当我尽量不要一次承担太多的工作时就容易多了。

我的第一个build议:学会快速打字,无需看键盘。

如果你不能触摸types,并且总是盯着冒号或者hjkl或者:%s / foo / bar,那就把它忘掉吧。 打字可以比使用鼠标更快,但是,如果不是这样的话,vi不会工作。

但结合良好的打字技巧,SSH和屏幕和六将是自然的。

面对这一事实,它将立即造成业绩。 当学习一个新的工具,你需要能够做一些你知道如何处理其他工具,所以问题不是你的问题。 使用新工具一段时间后,它将消失,你将只关注潜在的问题。

像vim之类(正如其他人所说的,vim远远优于vi),定期重读和浏览文档非常重要。 没有它,界面是完全不可发现的。 随着每一个新的阅读,你会看到一个特点,并说:“啊,哈,这将解决这个问题,我想弄清楚上周”,并将其存档在你的大脑。 连接到现实世界的问题的解决scheme比随机的快捷方式更容易记住。

最后,你可以使用vim的一个相当小的function子集,所以不要被所有的花里胡哨的东西淹没。 想想Word中的所有function,99%的人使用它们吗?

ESC gg=G来重新编码,并且:retab把选项卡转换成空格或空格到制表符被hook到vim。 所以实际上你不需要被迫使用它,你只需要学习什么时候可以帮助你提高速度。

通过vimtutor

开始使用vim进行简单的编辑,比如configuration文件或者html。 根据需要了解这些命令。

search谷歌一个很好的.vimrc使用的人使用类似于你的工具链。 打开语法高亮显示。 find一个不错的配色scheme。

学习macros是因为Vim是自动化任务和片段插入的最佳select,比如将一些单词格式化成复杂的XML标签或将CSV转换为HTML表格。

你可能想要开始与奶油。 Cream将自己描述为vim的“现代configuration”。 基本上,它是一个特殊版本的vim,它看起来和所有其他文本编辑器的感觉一样,都是实用的。 但启用“专家模式”,你有所有的VIM的权力和行为。

所以你可以开始使用Cream作为普通的文本编辑器,然后尝试“专家模式”,直到你足够舒适,完全切换到vim。

在您使用的所有平台上安装gVim

然后在命令行运行vimtutor( :help vimtutorvimtutor )。

观看以下演讲并遵循其build议: 7有效的文本编辑习惯2.0

我说你一定要开始使用它进行所有的编辑。 如果你担心生产力的下降,那就花一个周末的时间练习一下吧(我曾经这样做过,从qwerty切换到dvorak,星期一我的生产力已经足够高了,并且坚持下去)。

这是值得的努力,你不会回头看!

就我个人而言,我所要做的就是确保我可以在几个应用程序中使用Vim键绑定(或者至less足够接近)。 当我改变编辑器的时候,不得不彻底改变我编辑文本的方式,这使得很难将Vim编辑风格提交给肌肉记忆。

在我的情况下,Viemu + vimperator做了诡计。