我遇到了 Emacs 的 vi 样式键绑定,但我过去在 .emacs 文件中混合基于 Lisp 的配置以启用各种模式等的经验,到目前为止还不是很愉快。
阅读了几篇关于 Emacs + Erlang 的文章,但是对于主要熟悉 vi 的人(以及不熟悉 Lisp 的人)来说,有没有什么东西可能会稍微容易一些?
整个可能性(键绑定)是相当压倒性的。是否有与 Erlang 开发特别相关的简明键映射/快捷方式参考?
我遇到了 Emacs 的 vi 样式键绑定,但我过去在 .emacs 文件中混合基于 Lisp 的配置以启用各种模式等的经验,到目前为止还不是很愉快。
阅读了几篇关于 Emacs + Erlang 的文章,但是对于主要熟悉 vi 的人(以及不熟悉 Lisp 的人)来说,有没有什么东西可能会稍微容易一些?
整个可能性(键绑定)是相当压倒性的。是否有与 Erlang 开发特别相关的简明键映射/快捷方式参考?
只需使用vi
和命令行。有很多人这样做,这对他们来说似乎工作得很好。即使我使用 Emacs,它也不是我使用的 Emacs-erlang 交互。相反,我通常只有一个单独的 Erlang shell,然后使用l()
交互命令在该 shell 中加载模块。
一一回答你的问题:
在 Erlang 中调试很有趣。首先,如果您的程序保持功能正常,您会发现您需要更少的调试来找出程序不正确的地方,因为您可以简单地为众多功能中的每一个编写小测试来测试其正确性。您可以将它们添加到单元测试框架中。
一旦您将多个进程添加到混合中,您就会发现传统的调试不再起作用了。诀窍是跟踪和断言,您需要学习一种在不运行程序的情况下读取程序的方法,并使用调试器查看它们的去向。
也就是说,尝试debugger:start()
在 Erlang shell 中执行 :) 还有跟踪系统和redbug,一个构建在它们之上的第 3 方工具(eper
套件的一部分)。
可以使用 3-4 个分析器之一进行分析:cprof
,eprof
并且fprof
在范围和它们对您的程序的影响程度以及它们是否可以在生产系统上运行方面都略有不同。我倾向于使用eprof
并且我的程序中有一个旋钮,它将产生一个 eprof,然后在程序启动时附加它。
appmon:start()
在外壳中尝试。
浏览大型代码库的标准 vi 方式是创建tags
-files,以便您可以跳转到光标下事物的定义点。Emacs 也可以这样做。我有一个make tags
创建这些文件的目标,这样我就可以轻松地在源代码中跳转。跳跃时,您有一堆以前的跳跃,因此您可以返回到稍后跳跃的点。
最后,还有类似的工具xref
可以用来创建调用图并在代码中找到奇怪的东西。它需要您进行一些编码,但它确实为您提供了必要的工具。
Viper 模式提供 Vi 风格的键绑定。这可能是最简单的开始方式。在您的 .emacs 中启用新模式是使用 Emacs 的一个非常基本的部分,因此最好尽早清除它的学习障碍!
Emacs 手册包含有关对键绑定进行单独更改的更多详细信息。
您可能会发现Xah 的键绑定教程很有帮助,因为它提供了许多示例。