【问题标题】:Refactoring with emacs while editing javascript在编辑 javascript 时使用 emacs 进行重构
【发布时间】:2014-04-03 18:01:13
【问题描述】:

您好,我正在编写大量服务器端 javascript,我希望能够在使用 emacs 进行编辑时进行重构。这可能吗?谢谢!

我所说的重构是指在 Eclipse 中编辑 Java 时,您可以将一个名为“variableOne”的变量重构为“variable1”,现在您编写“variableOne”的所有其他 15 次都变成了“variable1”。

【问题讨论】:

  • 如果“重构”是指“改变代码结构”,那么当然可以。这就是编辑器的用途,创建和修改文本(代码就是文本)。或者你到底是什么意思?
  • 您是在谈论自动重构,就像某些 IDE 允许的那样 - 例如,选择一个函数调用并单击“内联”之类的东西?
  • 我的意思是,就像在 Eclipse 中编辑 Java 时一样,您可以将一个名为“variableOne”的变量重构为“variable1”,现在您编写“variableOne”的所有其他 15 次都变成了“variable1”。跨度>
  • 另请参阅Emacs Rename Variable 了解更多通用选项。他们没有编辑器理解语言的优势,但他们在大多数情况下都能胜任。

标签: javascript emacs refactoring


【解决方案1】:

您的问题似乎更多是关于重命名变量,而不是关于一般的重构。有关使用 Emacs 重命名部分代码的信息的两个起点是:

  • Emacs Wiki Search and Replace 类别页面。这包括跨多个文件(例如您的项目)的搜索和替换。
  • Emacs 手册:使用 C-h r 从 Emacs 进入手册。

    然后使用键i 在索引中查找某些内容(完成):

    i search and replace commands 带您进入替换命令部分。

    i search and replace in multiple files 带您进入使用标签表搜索和替换部分。

有关 Emacs 对项目的支持,请参阅 Emacs Wiki Projects 类别页面。

【讨论】:

    【解决方案2】:

    如果您只是在寻找renaming 变量,您可能还想查看tern。与js2-refactor(我也使用)相比,它的优势在于它具有项目的概念,因此您可以在项目中的多个文件中重命名某个变量。它还提供了其他功能,例如jump-to-definitionauto-completions(非常准确)。

    这里有一些用于重命名变量的通用选项

    1) Multiple cursors - 它有一个有用的命令mc/mark-all-like-this-dwim,它标记了当前context中所选文本的所有出现,然后您可以同时编辑所有出现。

    2) Wgrep - 此软件包使您能够将在 grep 缓冲区中所做的更改应用到各个文件。当我必须在多个文件中替换一个单词时,这很有用,在这种情况下使用rgrep 在多个文件中搜索单词。然后在生成的grep 缓冲区中启用wgrep,将要替换的单词标记为multiple-cursors(您也可以使用查询替换),进行更改,然后执行wgrep-save-all-buffers,我的所有更改都将保存!

    【讨论】:

      【解决方案3】:

      可能最复杂的 Emacs JavaScript 重构库是 Magnar Sveen 的 js2-refactor。它的list of supported refactorings 包括

      rvrename-var:重命名变量 on point 和所有出现在其词法范围内的变量。

      这听起来很像您正在寻找的东西。它还支持许多其他非常有用的常见分解操作。

      假设您使用的是 Emacs 24,我建议使用 MELPA 存储库安装它。如果您仍在使用 Emacs 23,则必须先升级或手动安装 package.el,然后才能使用 MELPA。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-04
        • 1970-01-01
        • 1970-01-01
        • 2019-03-03
        • 2014-09-14
        • 1970-01-01
        • 1970-01-01
        • 2016-01-19
        相关资源
        最近更新 更多