我正在寻找以智能方式学习Vim或Emacs的技巧

时间:2009-11-28 16:23:12

标签: vim emacs ide editor

我是Eclipse的一个非常开心的用户(我主要使用PHP和Python开发),但是我发现"What specific productivity gains does Vim/Emacs provide over GUI text editors?"的答案很有趣,足以让我希望尝试Vim或{{3同样,看看它们对我来说是否会成为更好的解决方案。

我普遍认为Vim和Emacs并不是你通过“玩它”而学习的那种编辑器。我有这样的印象,你必须投入一些时间和精力来“研究”它们,然后才能从它们的力量中获益。

所以,我对社区有两个问题:

  1. 在链接的帖子中,响应者基本上通过评论Vim来回答(经常提到:“我确信Emacs有相同的”)。 Emacs似乎表明Vim是两者之间最常采用的,但我的第一个问题是:知道我之前没有任何经验,而且我使用和开发(主要是PHP和Python)在GNU / Linux系统上(Ubuntu,Google trends),是否有两个代表更好的选择?(要明确:我的问题是不是关于编辑的质量,但它是关于在我的情况下在战略上更好地学习的内容。

  2. 您对如何使用它/他们有什么建议?我知道这是一个广泛的问题,但故意是这样。看看Arch Linux(不相关的主题),了解我正在寻找的那种信息/风格的答案[但不要觉得有必要回答这个问题...任何贡献都会受到欢迎,任何形成!]

  3. 编辑(选择“已接受答案”)

    我选择了一个答案作为刚才接受的答案,但我想对那些分享经验和建议的人所有说“谢谢”:几乎所有这些对我都有用某种程度上来说。这个帖子肯定超出了我的期望!谢谢! :)

18 个答案:

答案 0 :(得分:34)

我建议检查两者是值得的,因为其他答案或“Emacs vs vim vs XY”线程已经涵盖了各种原因。

如果你不得不选择其中一个,我会选择vim,因为有一件事:

<强>状况

Vi(m)的优势在于它几乎可以在任何* nix系统上安装(不仅可用)。因此,无论是您的系统还是其他人,或者您是否被允许对其进行更改,您最喜欢的文本编辑和朋友都在那里等着您。

一旦你知道 vi(m),在你进入机器并需要对文本进行操作(浏览文件,编辑等等)的情况下,它会感觉很棒。你会觉得自己像个国王。我记得有几次我几乎吓坏了,因为没有安装nano或pico而且我不得不使用“这个丑陋的野兽vi”,当我开始打字时这会产生不可预知的事情(因为我没有插入模式,甚至不知道那是什么)当我很高兴用google搜索“:wq!”让我退出地狱。现在我可以回顾一下并对此微笑。

  

我有一般的感觉,即vim   和emacs不是那种编辑器   你通过“玩它”来学习

Vim和Emacs肯定是你“通过实践来学习”的编辑。

当然,问题是要包括这些高度科学的文本编辑器学习曲线图=)

classical learning curves for some common text editors

Vim在开始时可能会有点困难,因为它的模态编辑起初可能会让人感到非常陌生。我认为动力是关键。文章“Why, oh WHY, do those #?@! nutheads use vi?”很好地解释了我认为的优点。在我看来,即使学习曲线可能比其他编辑更陡峭,也值得尝试一下,听起来你带来了必要的动力。

返回边做边学

我希望我第一次做的事情:

结帐Vimtutor。这是一个交互式教程,通过展示它的基本命令以及它们如何组合来演示vim的强大功能。只需在终端中输入vimtutor即可。

在过去尝试用vim多次学习编辑后,这让我真的“得到它”。该教程大大简化了学习曲线,因为它解释了命令并使您实际执行这些命令,从而成为一种习惯。与因为感到残疾而感到沮丧相比,这确实有所不同。使用vimtutor你也会看到模态编辑的好处,而不是战斗或忽略它,你会接受它,因为你已经体验到了第一手的优势。我想这一切都很难自学。所以这30分钟非常值得。

答案 1 :(得分:14)

  

我普遍认为vim和emacs不是你通过“玩它”而学习的那种编辑器。

我对emacs的体验实际上恰恰相反。我尝试过阅读教程,但似乎没什么帮助。我最终学习的方式是使用reference card并强迫自己在我的代码上使用emacs,直到我得到它正确*。然后,我也有一个螺丝松动。你的milage可能会有所不同。在禁止的地方提供无效你明白了。

我记得在某个地方读到的另一条建议是尝试写下你想要学习的大约10个命令的列表,并在编码时保留它。一旦掌握了这些命令,再制作另外10个命令。继续这样做,直到你有足够多的编辑器致力于记忆。

*请注意,链接的参考卡已过期。如果你谷歌,你可以得到一个更新的参考卡。

  知道我之前没有   任何经历的任何经历   二,我用和开发   (主要是PHP和Python)在GNU / linux上   系统(ubuntu,archlinux)就在那里   代表a的两个中的任何一个   更好的选择?

我是一个emacs人,所以我的意见应该是显而易见的。也就是说,你可能最好尝试一下你认识的人似乎更多。有经验使用emacs的人(我假设是vim)是一个很好的帮助。

如果您不认识使用任何一个的人,请选择您认为最漂亮或最酷的名字。你不会知道你想要哪一个,所以你也可以任意选择。

答案 2 :(得分:10)

对于vim尝试vimtutor

答案 3 :(得分:7)

我在经过多年的Windows开发后开始使用Linux时来到Vim,并且必须通过ssh在远程系统上做很多工作。前几周讨厌它。在那之后,我离不开它。

可能最好的方法是在简易模式下使用Vim([g] vim -y),大多数安装都有一个名为evim的快捷方式。这在默认处于插入模式的模式下运行vim,并将键重新映射到通常的Windows(ctrl-S保存,ctrl-X切割等)。然后,您可以像常规Windowsy编辑器一样使用它,但仍然可以访问Vim的强大功能。

还有Cream是Vim +一堆脚本,使其更像Windows编辑器。

我开始使用evim和Cream,但发现我逐渐过渡到使用100%vim。

此外,如果你使用gvim,那么大多数功能也可以通过菜单获得,你可以看到相同功能的按键。

另请阅读文档 - 每个方面都有广泛的帮助文件。我仍然不时浏览它们并找到新的东西。

答案 4 :(得分:4)

使用VIM,我发现以下快速参考卡非常有用,特别是对于我每天不做的事情: VIM QuickReference

对于emacs,您应该阅读GNU Emacs Manual。不要试图一次完成所有事情。 从基本的东西开始,然后一旦你对更容易的东西感到满意,就转向更强大的功能。

答案 5 :(得分:4)

前段时间我决定在Eclipse旁边学习vim,因为它具有强大的文本编辑,搜索和导航功能。但是 - 同时 - 我喜欢Eclipse的项目处理,代码完成,重构和调试功能,我不想丢失它们。

现在我使用一个名为vrapper的Eclipse插件,它在Eclipse中提供了几乎所有vim 的基本功能,而不会丢失任何Eclipse功能。当然它不是一个功能齐全的vim,但它给了我'预期'的生产力增益(运动,点运算符,寄存器和标记)。此外,此插件可被视为vim的“试用版”,您可以在“最知名”的环境中学习所有基本内容和一些高级内容。

还有一种名为eclim的有趣方法。 Eclim将vim与vim集成了vim,因此你可以在vim中使用Eclipse的许多功能。

为了学习vim的基础知识,this graphical cheatsheet帮助了我很多。

答案 6 :(得分:3)

我会选择Emacs。 显式命令名称将使您的任务更容易。 在我有了多年的vi经验后,我转而使用emacs,从不回头。 先学习教程。 在irc的#emacs闲逛,人们很乐意为您提供实时帮助,无论您需要什么。

答案 7 :(得分:2)

如果您了解Python,那么支持Vim的一个论点就是您可以用Python编写Vim脚本。见:h python。 Emacs要求你学习elisp。

我发现自己倾向于使用像Ruby这样的脚本语言,如Ruby / Perl / Python / PHP,以及Emacs用于更具交互性的语言(基本上是Lisp)。如果您使用交互式Python shell开发Python代码很多,Emacs可能会很好,因为您可以将Python shell直接嵌入到Emacs中。如果您编写代码并从命令行运行很多代码,Vim可以通过:make:!轻松处理。

我真的建议你学习两者并选择你喜欢的任何一个。他们都值得了解。

答案 8 :(得分:2)

哇,vi / vim vs emacs,这真是一种诱惑......

从vi用户的角度来看......

  • 始终存在
    有关所有已发布的unix系统的默认安装,并且可用于Win
  • 可以帮助您远离RSI
    vi几乎可以使用home-row键,控件和meta等修饰符仅用于很少调用的函数,甚至Shift键使用也适中。这可能只是一个幸运的意外,但不要嘲笑RSI。它可能发生在任何人身上,它是非常痛苦的,它可能是职业生涯的终结,而且很难治疗。
  • 立即启动
    在过去,这是一个优于emacs的巨大优势。 Emacs用户只需启动一次,并在emacs中随处导航。今天它开始得更快,但在vi中,完全退出每个编译或测试周期是完全合理的。
  • 有一个很棒的行模式
    vi中的行模式向后兼容原始Unix ed(1)程序,该程序只有 线模式。也就是说,vi的regular-expression-substitution-engine - / - 行编辑器本身就是一个编辑器。
  • 易于编写脚本
    您想对项目中的每个.whatever文件做些什么?编写一个将编辑文件序列的声明性脚本很容易。无需命令式或程序式编程。
  • 易于扩展
    至少Vim可以在Python中扩展。

答案 9 :(得分:2)

首先,要谦虚。

只要您意识到它们是非常强大的工具,您就可以了。如果你发现任务非常困难,并且你在想“只是我不喜欢编辑”,那么你就是在正确的思想中学习和改进。

布拉姆的7个习惯是一个很好的原则 http://www.moolenaar.net/habits.html

另外,我强烈建议你去编写一个插件。它的作用并不重要。它为您提供深入了解手册的动力。

答案 10 :(得分:2)

我对学习emacs的建议是要了解所有内容都是通过连接(绑定)到你所做的击键的命令(用elisp编写)完成的。 emacs的强大之处在于能够编写新命令并使用未绑定到键的命令(有太多命令将每个命令绑定到命令。)当然,读取和修改已经存在的命令emacs的。

接下来学习如何使用帮助键以及如何创建键绑定列表,然后了解如何搜索相关命令(apropos)并查看它们是否已被绑定。

准备好将学习转移到emacs手册中(帮助,阅读手册,Emacs手册)。

答案 11 :(得分:1)

也许,一个好方法是在使用eclipse时学习vim / emacs。尝试使用vimpluginemacsplus插件进行日食。

答案 12 :(得分:1)

这应该只是一个评论,但针对哪个答案......

使用 Vim 我建议首先使用GUI版本,只需深入了解内置帮助非常好(:h 并且屏幕拆分添加一个包含全面“超链接”帮助页面的面板。对于vim,唯一有潜在危险的操作是写入,您执行的所有其他操作都可以按命令或编辑进行恢复(撤消和重做)。

获得的权力很容易激发学习。

答案 13 :(得分:1)

以下是您学习的方式:开始输入。如果你想要做一些除了打字之外的事情,请查看你是如何做的。重复。它有助于从一些基础开始,比如7个基本命令。除此之外,当您遇到想要进行某些操作时,请查阅并使用它。

答案 14 :(得分:1)

对于我在Vim的第一步,这个伟大的教程对我来说是一个很大的帮助。这是一个温和的介绍,同时以愉快的方式解释了vim的哲学:

aByteOfVim

答案 15 :(得分:1)

我学习emacs的方式主要是通过以下两种方式来实现:

  1. 所有GUI菜单都显示可用于执行与该菜单项相同的命令的键绑定。请注意您经常选择的菜单项的绑定,并在下次有机会时手动尝试。
  2. ctrl-h ctrl-h(想想“帮助!帮助!”)会显示一个缓冲区,显示各种可用的帮助。如果然后按下“b”键(缓冲区将其称为“describe-bindings”),您将获得正在处理的缓冲区中可用的所有键绑定的列表。只是仔细阅读,不时地注意看起来有用的命令。当你有机会的时候尝试一下。
  3. 对于vi,我在vim之前的几天内学到了它,所以我几乎不得不使用man vi来解决它。我们大多数emacs用户都会告诉你,你需要知道的所有vi都是:q!(“退出,我的意思是”)。 :-)

    但实际上如果你是一个Unix用户,你需要学习至少足够的vi来进行简单的编辑来配置文件并保存它们。当你尝试在一个奇怪的系统Unix系统上启动emacs时,你永远不知道你会得到什么(如果有的话),但是vi总是在那里。

答案 16 :(得分:1)

您在Emacs中看到或与之互动的几乎所有内容都可以告诉您自己 - 您只需要知道如何提问。

要学习Emacs,请了解当前的Emacs上下文:事物的价值是什么,它们之间的关系是什么,它们如何表示,如何更改它们或以其他方式与它们交互。

最重要的是要了解Emacs Emacs Lisp - 它是一个Lisp 生态系统。学习Emacs也意味着学习Emacs Lisp - 你知道的越多越好。 Lisp是最灵活,最强大的方式,Emacs将自己实现为 “自我记录,可扩展的编辑器”

Icicles可以帮助您学习Emacs和Emacs Lisp。它可以帮助你向Emacs询问自己。此页面概述了它的执行方式:Emacs Newbie with Icicles

答案 17 :(得分:1)

不要陷入vi(m)与emacs宗教战争。他们都是伟大的编辑。我最初开始使用VI(真正的VI而非VIM),后来开始使用Emacs。这些天,我倾向于使用两者,但emacs更多,因为emacs具有我需要的一些不在vim中的功能。

真正的挑战和你应该瞄准的是如何使用你选择的编辑器尽可能高效,快速和准确。在这方面,VI和Emacs都有很多东西可以提供。然而,其中很大一部分归结为你需要开发的两个主要习惯

  1. 不要使用鼠标。当老鼠不是他们现在的瘟疫时,两位编辑都是创造出来的。在编辑,剪切,粘贴,突出显示等方面,两位编辑都提供键盘等效功能。使用它们并将手指放在键盘上。你会惊讶地发现你会变得多快多少

  2. 避免使用箭头键。这是出于类似的原因。箭头键往往会让您将手从主键盘上移开。最后,这也会减慢你的速度,降低效率。两个编辑器都提供了更加便捷的功能,而且速度更快。

  3. 在学习这些编辑器时,这两个主要关注点。还有很多,但首先,重点是使用主键盘。

    在完成这项工作之后,开始考虑如何调整您的环境以满足您的需求。到这时,您将熟悉所选编辑器的强大功能,并可能会有一些想法。这两个编辑器都是非常可配置的。我发现emacs是最容易配置的,但是你很容易迷失在写elisp来配置东西之前和你知道它之前,你是一个做一些PHP和Python的elisp程序员。在某种程度上,VIM也会发生同样的情况,但程度较轻。但请注意,默认设置通常由具有丰富经验且可能知道您不知道的人设置。避免错误地尝试修改任何编辑器以使其成为您的用途。首先了解它如何使用最小配置,然后在了解为什么以某种方式完成后再进行更改 - 在破坏它们之前了解规则。

    如果您认真对待编程,您的编辑器将是您最重要的工具。其他重要的工具是您的屏幕,椅子和键盘。其余的是偶然的。