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

Mir*_*lov 14 emacs js2-mode node.js read-eval-print-loop

我使用Emacs 24.2.我已安装js-comintjs-modeMELPA执行run-js,现在在REPL而不是>签名我有这个胡言乱语:

^[[1G> ^[[0K^[[3G
Run Code Online (Sandbox Code Playgroud)

在Inferior Javascript模式下的REPL本身工作正常,只是>标志被更改.如果输入未完成的表达式,它甚至会打印出来^[[1G... ^[[0K^[[5G.该^[是在系统的字符,不与复制-粘贴复制的,我加他们为你有一个想法.

在我的init文件中:

(require 'js-comint)
(setq inferior-js-program-command "nodejs")
Run Code Online (Sandbox Code Playgroud)

在终端呼叫中nodejs产生工作REPL.

为什么提示这样做?我该怎么做才能纠正这个问题?

tan*_*nfa 19

只需在.emacs中添加一行:

(setenv "NODE_NO_READLINE" "1")
Run Code Online (Sandbox Code Playgroud)

答案来自这篇文章: Node.js提示'>'无法在eshell中显示


小智 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)))))
Run Code Online (Sandbox Code Playgroud)

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