2013-08-29 8 views
18

Wenn ich node von der Befehlszeile ohne Argumente ausführen, gebe ich eine interaktive Shell ein. Wenn ich einige Befehle ausführe, den Knoten verlasse und den Knoten neu starte, tut der Pfeil nach oben nichts (ich möchte, dass er durch meine vorherigen Befehle scrollt).Gibt es eine Möglichkeit, Knoten zwischen den Sitzungen den Befehlszeilenverlauf beizubehalten?

Gibt es eine Möglichkeit, Knoten interaktiv aufzurufen, so dass es sich an meine alten Befehle erinnert?

+0

Was haben Sie bisher versucht? [node-shell] (https://github.com/wdavidw/node-shell) scheint die Features zu haben, neben vielen anderen. – TC1

Antwort

22

Sie können rlwrap verwenden, um node.js REPL-Befehle in einer Verlaufsdatei zu speichern.

Zuerst installieren Sie rlwrap (einfach mit einem Paket-Manager wie apt-get oder brauen usw.).

Dann einen Alias ​​für Knoten hinzufügen:

alias node='env NODE_NO_READLINE=1 rlwrap node' 

ich auf OSX bin so ich, dass alias meine ~/.bash_profile Datei hinzufügen, und würde meine bash_profile Datei über source ~/.bash_profile .. nachladen und ich bin gut zu gehen !

Hoffe, das hilft!

+0

Ich benutzte den (inkorrekten) Befehl: 'rlwrap node' und war frustriert, warum die Node REPL meinen Verlauf nicht gespeichert hat. Das hat mein Problem gelöst! –

+3

Obwohl rlwrap Sie die hübschen Knoten repl Farben verlieren lässt. – dentarg

+0

Auch die Tab-Vervollständigung – Daiwei

15

fand ich ein nettes kleines Projekt, das das Problem löst:

https://www.npmjs.org/package/repl.history

Installation mit npm (npm install -g repl.history) und laufen repl.history auf der Kommandozeile.

+0

Bei dieser Methode bleiben die Farben und die Tabulatorvervollständigung erhalten. Yay! –

+0

@SamH Edits sollten die ursprüngliche Antwort in keiner Weise ändern oder erweitern. Sie dienen nur dazu, Grammatik, Rechtschreibung, Formatierung usw. zu verdeutlichen. Dies liegt zum Teil an der Tatsache, dass Änderungen von der Community genehmigt werden und nicht vom Eigentümer des zu bearbeitenden Posts. Wenn Sie Vorschläge haben, gehören sie in Kommentare oder Ihre eigene Antwort. Siehe: http://meta.stackexchange.com/questions/11474/what-is-the-tiquette-for-modifying-posts –

+0

Cool, danke. :) –

3

Ich mag die Kombination von Dreampulse und Badsyntax Antworten. Mit repl.history, plus einem Zusatz zu meinem .bash_profile, bekomme ich das erwartete Verhalten, nämlich Befehlsverlauf und Syntaxhervorhebung in der interaktiven Shell des Knotens, aber umgehen repl, wenn es mit Argumenten aufgerufen wird (um ein Skript auszuführen).

npm install -g repl.history 

dann Ihre ~/.bash_profile bearbeiten, und fügte hinzu:

function node(){ 
    if test "$#" -lt 1; then repl.history 
    else env node [email protected]; fi; } 

Jetzt Shell neu starten oder . ~/.bash_profile laufen und Sie sind gut zu gehen.


Jetzt

$ node 

öffnet die repl.history läuft NodeJS interaktive Shell und

$ node program.js [...] 

wird program.js mit Knoten laufen wie erwartet.

5

io.js 2.0 enthält Unterstützung für persistent REPL history.

env NODE_REPL_HISTORY_FILE=$HOME/.node_history iojs 

Die maximale Länge der Geschichte kann mit NODE_REPL_HISTORY_SIZE, eingestellt werden, die standardmäßig auf 1000.

In io.js 3.0+, REPL Geschichte standardmäßig aktiviert wird, und NODE_REPL_HISTORY_FILE wird zugunsten NODE_REPL_HISTORY veraltet (Standard: ~/.node_repl_history).

+0

Ich habe einen Alias ​​dafür gemacht wie @badsyntax: 'alias iojs = 'env NODE_REPL_HISTORY_FILE = $ HOME/.node_history iojs'' –

Verwandte Themen