我打算重新使用Emacs作为我的主要编辑器。这里的诀窍是我从来没有真正用Emacs做过大型项目工作。到目前为止,我一直使用Visual Studio,但在我最近的项目中,我使用的是Node(翻译一些CoffeeScript --不是我能改变的)和Java,我想做一个完全的转换。我现在使用IntelliJ/WebStorm,但如果我有这些编辑器中的一些特性,我会愿意将其作为整个销售的一部分。令人惊讶的是,WebStorm中有一个针对CoffeeScript的Go to Usage和Go to Declaration特性(我想纯JavaScript也是如此)。
Emacs的老手们是如何以类似的方式遍历代码的,也就是说他们通常是如何Go to Usage或Go to Declaration的?Java和JavaScript可能是不同的,但是我想知道用Emacs设置这个的区别和可能的麻烦。
4条答案
按热度按时间j0pj023g1#
我不是Emacs的老手,但我确实对Emacs着迷。
对于Java:
对于Javascript:Javascript有一些非常复杂的作用域样式,不幸的是,这些样式很常见,所以基于正则表达式的解决方案有时会跳到错误的定义。
总的来说,如果可以的话,我真的建议你使用邪恶,这是极好的。如果你认为邪恶是,嗯,邪恶,那么:
最后,这里有一些代码,我几乎所有的跳转都用到它,它让你选择要跳转到的任何函数,并且使用imenu,所以你可以跳转到当前符号点之外的其他地方。
31moq8wy2#
我在我的项目文件夹上运行了exuberant ctags,并使用
-e
作为etags选项。一旦TAGS文件被加载,您可以使用M-.
、M-,
和M-*
来导航它。包etags-select
非常有助于在同名的多个方法中进行选择。其他有用的查找工具是
helm
,特别是helm-for-files
和helm-find-files
(它可以进入TAGS文件来缩小文件和关键字搜索),以及rgrep
。我读到wgrep
也是一个很好的搜索和替换工具,但我还没有机会使用它。当然,在你掌握它之前,它比IntelliJ稍微手动一些。关于切换,你仍然需要一个合适的IDE来调试你的代码,因为我还没有找到解决方案。
uurity8g3#
使用malabar-mode,你可以使用
C-c C-v C-y
来查找jump-to-thing-at-point
。这适用于查找变量定义,也适用于查找类的源代码(只要下载了源jar)。当然,malabar-mode依赖于Maven。bf1o4zei4#
目前实现正确跳转到定义的最好方法是使用LSP插件,lsp-mode或eglot都应该支持标准的
M-.
密钥绑定。