Node.js 有没有办法让节点在会话之间保留命令行历史记录?
当我在没有参数的情况下从命令行运行Node.js 有没有办法让节点在会话之间保留命令行历史记录?,node.js,read-eval-print-loop,Node.js,Read Eval Print Loop,当我在没有参数的情况下从命令行运行node时,我会输入一个交互式shell。如果执行一些命令、退出节点和重新启动节点,则向上箭头不起任何作用(我希望它滚动查看我以前的命令) 是否有一种方法可以交互调用node,以便它记住我的旧命令?您可以使用它将node.js REPL命令存储在历史文件中 首先,安装rlwrap(使用apt-get或brew等软件包管理器即可轻松完成) 然后为节点添加别名: alias node='env NODE_NO_READLINE=1 rlwrap node' 我在O
node
时,我会输入一个交互式shell。如果执行一些命令、退出节点和重新启动节点,则向上箭头不起任何作用(我希望它滚动查看我以前的命令)
是否有一种方法可以交互调用node,以便它记住我的旧命令?您可以使用它将node.js REPL命令存储在历史文件中
首先,安装rlwrap(使用apt-get或brew等软件包管理器即可轻松完成)
然后为节点添加别名:
alias node='env NODE_NO_READLINE=1 rlwrap node'
我在OSX上,所以我将该别名添加到我的~/.bash\u配置文件
文件中,并将通过source~/.bash\u配置文件
重新加载我的bash\u配置文件。。我可以走了
希望这有帮助 我找到了一个不错的小项目,它解决了这个问题: 使用npm安装(
npm安装-g repl.history
)
然后在命令行上运行
repl.history
。我喜欢dreampulse和badsyntax答案的组合。通过repl.history,再加上对.bash_概要文件的添加,我得到了我期望的行为,即在节点交互shell中突出显示命令历史和语法,但在使用参数调用时绕过repl(以运行脚本)
然后编辑~/.bash_配置文件,添加:
function node(){
if test "$#" -lt 1; then repl.history
else env node $@; fi; }
现在重新启动shell或运行~/。bash_profile
你就可以开始了
正在运行
$ node
将打开repl.history节点js交互式shell,然后
$ node program.js [...]
将按预期使用节点运行program.js。io.js 2.0包括对的支持 历史记录的最大长度可以使用
节点\u REPL\u history\u SIZE
设置,默认值为1000
在io.js 3.0+中,默认情况下启用REPL history,而
NODE\u REPL\u history\u文件
被弃用,取而代之的是NODE\u REPL\u history
(默认值:~/.NODE\u REPL\u history
)。节点本机支持此功能
在节点REPL中时,只需发出以下命令来保存历史记录:
$> .save ./file/to/save.js
还要检查用户主目录中的file.node\u repl\u历史记录。到目前为止,您尝试了什么?我使用了(不正确的)命令:
rlwrap node
,对于node REPL没有保存我的历史记录感到沮丧。这解决了我的问题!虽然rlwrap会使您失去漂亮的节点repl颜色。此外,制表符完整性仅供参考,但dreampulse的答案会保留颜色和制表符完整性。:)此方法保留repl颜色和制表符完成。耶@SamH编辑不应以任何方式更改或扩展原始答案。它们只是为了澄清语法、拼写、格式等。这部分是因为编辑是由社区批准的,而不是您正在编辑的帖子的所有者。如果你有建议,它们属于评论或你自己的答案。请参阅:我为它创建了一个别名,如@badsyntax:alias iojs='env NODE\u REPL\u HISTORY\u FILE=$HOME/.NODE\u HISTORY iojs'
env NODE_REPL_HISTORY_FILE=$HOME/.node_history iojs
$> .save ./file/to/save.js