当我在命令行中运行
有没有一种方式可以调用node进行交互式操作,以便它记住我的旧命令?
node
时,没有参数,我进入交互式shell。如果我执行了一些命令,退出node,然后重新启动node,向上箭头不会做任何事情(我希望它可以滚动我的先前命令)。有没有一种方式可以调用node进行交互式操作,以便它记住我的旧命令?
node
时,没有参数,我进入交互式shell。如果我执行了一些命令,退出node,然后重新启动node,向上箭头不会做任何事情(我希望它可以滚动我的先前命令)。alias node='env NODE_NO_READLINE=1 rlwrap node'
我使用的是OSX系统,所以我将该别名添加到我的~/.bash_profile
文件中,然后通过source ~/.bash_profile
重新加载我的bash_profile文件..就可以了!
希望这可以帮到你!
rlwrap node
,并且对为什么Node REPL不能保存我的历史记录感到沮丧。这解决了我的问题! - Noah Sussman使用npm安装 (
npm install -g repl.history
),然后在命令行中运行repl.history
。io.js 2.0 包含对 持久化 REPL 历史记录 的支持。
env NODE_REPL_HISTORY_FILE=$HOME/.node_history iojs
可以使用NODE_REPL_HISTORY_SIZE
来设置历史记录的最大长度,默认为1000。
在io.js 3.0+中,默认启用REPL历史记录, NODE_REPL_HISTORY_FILE
已被弃用,改为使用NODE_REPL_HISTORY
(默认值:~/.node_repl_history
)。
alias iojs ='env NODE_REPL_HISTORY_FILE = $ HOME / .node_history iojs'
。 - Raine Revere我喜欢dreampulse和badsyntax两位的答案结合在一起。通过repl.history,再加上对我的.bash_profile的修改,我得到了我期望的行为,即在node交互式shell中具有命令历史记录和语法高亮,但是当带有参数调用(运行脚本)时绕过repl。
npm install -g repl.history
function node(){
if test "$#" -lt 1; then repl.history
else env node $@; fi; }
现在重新启动您的shell或运行. ~/.bash_profile
,然后您就可以开始了。
现在运行中
$ node
将打开repl.history nodejs交互式shell,并
$ node program.js [...]
将使用node运行program.js,如预期。