在Emacs中使用带有JS-comint的Node.js

时间:2012-12-13 14:56:46

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

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

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

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

在我的初始文件中:

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

在终端呼叫中nodejs生成工作REPL。

为什么提示会以这种方式行事?我该怎么做才能纠正这个问题?

3 个答案:

答案 0 :(得分:19)

只需在.emacs中添加一行:

(setenv "NODE_NO_READLINE" "1")

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

答案 1 :(得分:18)

(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是它打印为^[的转义字符。

答案 2 :(得分:2)

不确定最近的情况,但现在可以下载并使用nodejs-repl