这个问题Node.js提示'>'无法在eshell中显示解决节点repl的问题,但是当你从npm调用node时,该解决方案不起作用.
举例来说,如果我做
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
^[[1G^[[0Jname: (nodo1) ^[[15G
Run Code Online (Sandbox Code Playgroud)
或者如果你有一个带有"脚本"的package.json:{"start":"node"}
$ npm start
npm WARN package.json nodo1@0.0.1 No README.md file found!
> node
^[[1G^[[0J> ^[[3G
Run Code Online (Sandbox Code Playgroud)
我知道这个可以使用"start"解决:"env NODE_NO_READLINE = 1 node",但是到处写这个并不是一个查找解决方案.也许包的其他用户不使用emacs,需要以其他方式设置env var.
我尝试使用别名为npm设置NODE_NO_READLINE = 1,但结果相同
alias npm='env NODE_NO_READLINE=1 npm'
Run Code Online (Sandbox Code Playgroud)
小智 5
这是过滤许多shell前端用于着色文本的特殊字符的comint模式.如果您通过Emacs与shell程序交互过,您可能熟悉"使用哑终端或Emacs终端"等消息.有些人可以检测到使用了Emacs或哑终端,并且不会发送那些无法解释的字符,但Node不会这样做.无论如何,你可以使用这样的东西:
(add-to-list
'comint-preoutput-filter-functions
(lambda (output)
(replace-regexp-in-string "\\[[0-9]+[GK]" "" output)))
Run Code Online (Sandbox Code Playgroud)
你的.emacs中的某个地方.
Stackoverflow不会正确复制控制字符,正则表达式中的第一个字符(在引号之后和斜杠之前)是^[字符.您可以通过执行C-q 0 3 3下一步键入的任何操作在Emacs中输入它将导致控制字符插入当前缓冲区.
| 归档时间: |
|
| 查看次数: |
1507 次 |
| 最近记录: |