Emacs for Erlang,具有类似vi的键绑定和方便的短引用?

Emacs for Erlang,具有类似vi的键绑定和方便的短引用?,emacs,erlang,keyboard-shortcuts,vi,key-bindings,Emacs,Erlang,Keyboard Shortcuts,Vi,Key Bindings,我已经为Emacs使用了跨vi风格的键绑定,但我过去在.Emacs文件中混合基于Lisp的配置以启用各种模式等方面的经验,到目前为止还不是很愉快 阅读了几篇关于Emacs+Erlang的文章,但是对于大多数熟悉vi的人(以及不熟悉Lisp的人)来说,有什么可能稍微容易一点的吗 所有的可能性(键绑定)都非常强大。是否有专门与Erlang开发相关的压缩键映射/快捷键参考?只需使用vi和命令行即可。有很多人在这样做,这似乎对他们很好。尽管我使用Emacs,但我使用的不是Emacs erlang交互。相

我已经为Emacs使用了跨vi风格的键绑定,但我过去在.Emacs文件中混合基于Lisp的配置以启用各种模式等方面的经验,到目前为止还不是很愉快

阅读了几篇关于Emacs+Erlang的文章,但是对于大多数熟悉vi的人(以及不熟悉Lisp的人)来说,有什么可能稍微容易一点的吗


所有的可能性(键绑定)都非常强大。是否有专门与Erlang开发相关的压缩键映射/快捷键参考?

只需使用
vi
和命令行即可。有很多人在这样做,这似乎对他们很好。尽管我使用Emacs,但我使用的不是Emacs erlang交互。相反,我通常只有一个单独的Erlang shell,然后使用
l()
命令在该shell中加载模块以进行交互


逐一回答您的问题:

  • 在Erlang中调试很有趣。首先,如果你的程序保持正常运行,你会发现你需要更少的调试来找出程序的错误之处,因为你可以简单地为众多函数中的每一个编写小测试来测试它的正确性。您可以将它们添加到单元测试框架中

    一旦您将多个进程添加到混合中,您就会发现传统的调试已经不再有效。诀窍是跟踪和断言,您需要学习一种不运行程序就读取程序的方法,并使用调试器查看程序的去向

    也就是说,尝试在Erlang shell中执行
    debugger:start()
    ),还有跟踪系统和redbug,这是构建在它们之上的第三方工具(属于
    eper
    套件)

  • 分析可以使用3-4个分析工具中的一个来完成:
    cprof
    eprof
    fprof
    在范围和对程序的影响以及它们是否可以在生产系统上运行方面都略有不同。我倾向于使用
    eprof
    ,我的程序中有一个旋钮,它将产生一个eprof,然后在程序开始时连接它

  • 在shell中尝试
    appmon:start()

  • 浏览大型代码库的标准vi方式是创建
    标记
    -文件,这样您就可以跳转到光标下事物的定义点。Emacs也可以这样做。我有一个
    make tags
    目标来创建这些文件,这样我就可以轻松地在源代码中跳转。当你跳的时候,你有一堆以前的跳,所以你可以回到你以后跳的点

  • 最后还有一些工具,如
    xref
    ,可以用来创建调用图并在代码中查找奇怪的东西。这将需要对您的部分进行一些编码,但它确实为您提供了必要的工具

提供Vi风格的键绑定。这可能是最简单的开始方式。在.emacs中启用新模式是使用emacs的一个非常基本的部分,因此这是一个学习障碍,最好尽早清除

包含有关对键绑定进行单独更改的更详细信息


您可能会发现它很有用,因为它提供了许多示例。

是的,我使用vim和命令行。至于共享或拆分窗口等等,将我的环境安装到tmux或screen中很好。@i-give-crap-answers和@rvirding,谢谢您的回复。很高兴知道人们对vi的管理非常好。但是调试、评测呢?我理解,对于一个由self或一个小型的tight teach创建的小型项目(我想小于10K LOC),使用vi进行管理应该是可以管理的。但是,如果你想学习,可以深入研究别人的代码——而且很快,一个具有源代码浏览等功能的IDE会使导航变得更容易/更快。你不觉得吗?或者你也找到了解决方法?对你的问题给出了答案。谢谢你的回答。毒蛇确实是我发现的模式之一。然而,我的困惑是,当我加载viper模式、erlang模式、distel而没有任何键绑定重新映射时会发生什么?会不会有一些冲突/混乱?最后,我的目标是使用Erlang快速提高效率,而不是掌握Emacs:-)。。。也许是一条邪恶的捷径!