【问题标题】:Using Node.js with JS-comint in Emacs在 Emacs 中使用带有 JS-comint 的 Node.js
【发布时间】:2012-12-01 11:56:50
【问题描述】:

我使用 Emacs 24.2。我已经从MELPA 安装了js-comintjs-mode,执行了run-js,现在在REPL 中而不是> 中,我有这个乱码:

^[[1G> ^[[0K^[[3G

REPL 本身在 Inferior Javascript 模式下工作得很好,只是 > 符号被改变了。如果您输入未完成的表达式,它甚至会打印出^[[1G... ^[[0K^[[5G^[ 是系统字符,不是通过复制粘贴复制的,我添加它们供您参考。

在我的初始化文件中:

(require 'js-comint)
(setq inferior-js-program-command "nodejs")

在终端调用 nodejs 会产生有效的 REPL。

为什么提示会有这种行为?我应该怎么做才能纠正这个问题?

【问题讨论】:

    标签: node.js emacs read-eval-print-loop js2-mode


    【解决方案1】:

    只需在 .emacs 中添加一行:

    (setenv "NODE_NO_READLINE" "1")
    

    答案来自这篇文章: Node.js prompt '>' can not show in eshell

    【讨论】:

    • +1。这基本上对我有用,谢谢。我在我的应用程序目录中创建了一个名为“repl”的文件,并在其中放置了 NODE_NO_READLINE=1 节点。然后只需从 emacs shell 中调用 ./repl,您就会在 emacs 中获得一个节点 repl,它具有正确的模块范围,并且没有输出乱码。
    【解决方案2】:
    (setq inferior-js-mode-hook
          (lambda ()
            ;; We like nice colors
            (ansi-color-for-comint-mode-on)
            ;; Deal with some prompt nonsense
            (add-to-list
             'comint-preoutput-filter-functions
             (lambda (output)
               (replace-regexp-in-string "\033\\[[0-9]+[GK]" "" output)))))
    

    \033 是它打印为^[ 的转义字符。

    【讨论】:

    • 但是为什么prompt会产生垃圾呢?
    • 对最后一条语句进行了小修改:(replace-regexp-in-string "\033\\[[0-9]+[A-Z]" "" output)))))
    【解决方案3】:

    不确定最近多久,但现在可以下载并使用nodejs-repl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      相关资源
      最近更新 更多