2013-08-29 10 views
18

Po uruchomieniu node z wiersza poleceń bez żadnych argumentów, wprowadzam interaktywną powłokę. Jeśli wykonam niektóre polecenia, wyjdę z węzła i zrestartuję węzeł, strzałka w górę nic nie zrobi (chciałbym, aby przewijała moje poprzednie polecenia).Czy istnieje sposób na zachowanie historii wiersza poleceń między sesjami w węźle?

Czy istnieje sposób interaktywnego wywoływania węzła, który zapamięta moje stare polecenia?

+0

Więc co próbowaliście do tej pory? [węzeł-shell] (https://github.com/wdavidw/node-shell) wydaje się mieć funkcje, wśród wielu innych. – TC1

Odpowiedz

22

Można użyć rlwrap do przechowywania komend REPLN node.js w pliku historii.

Najpierw zainstaluj rlwrap (zrobione z łatwością przez menedżera pakietów, np. Apt-get, brew itd.).

Następnie dodać alias do węzła:

alias node='env NODE_NO_READLINE=1 rlwrap node' 

jestem na OSX więc dodam, że alias do mojego pliku ~/.bash_profile, i przeładować mój plik bash_profile poprzez source ~/.bash_profile .. a ja jestem dobry, aby przejść !

Mam nadzieję, że to pomoże!

+0

Używałem (niepoprawnego) polecenia: 'węzeł rlwrap' i byłem sfrustrowany tym, dlaczego REPL węzła nie zachował mojej historii. To rozwiązało mój problem! –

+3

Chociaż rlwrap sprawiają, że tracisz ładne kolory repliki węzła. – dentarg

+0

Również dopełnienie karty – Daiwei

15

Znalazłem ładny mały projekt, który rozwiązuje ten problem:

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

zainstalować używając NPM (npm install -g repl.history) i uruchomić repl.history w wierszu poleceń.

+0

Ta metoda zachowuje kolory replik i zakończenie tabulacji. Yay! –

+0

@SamH Edits nie powinien w żaden sposób zmieniać ani rozszerzać oryginalnej odpowiedzi. Mają one jedynie na celu wyjaśnienie gramatyki, ortografii, formatowania itp. Wynika to częściowo z faktu, że zmiany są zatwierdzane przez społeczność, a nie właściciela edytowanego przez ciebie wpisu. Jeśli masz sugestie, należą one do komentarzy lub twojej odpowiedzi. Zobacz: http://meta.stackexchange.com/questions/11474/what-is-the-etiquette-for-modifying-posts –

+0

Fajnie, dzięki. :) –

3

Podoba mi się połączenie odpowiedzi dreampulse i badsyntax. Dzięki repl.history oraz dodatkowi do mojego .bash_profile otrzymuję zachowanie, którego się spodziewam, czyli historię poleceń i podświetlanie składni w powłoce interaktywnej węzła, ale pomijam replikację po wywołaniu z argumentami (aby uruchomić skrypt).

npm install -g repl.history 

Następnie edytować ~/.bash_profile, dodając:

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

Teraz ponownie uruchom powłokę lub uruchomić . ~/.bash_profile i jesteś dobry, aby przejść.


Teraz działa

$ node 

otworzy repl.history nodejs interaktywną powłokę i

$ node program.js [...] 

potrwa program.js z węzła, jak oczekiwano.

5

Program io.js 2.0 obsługuje obsługę persistent REPL history.

env NODE_REPL_HISTORY_FILE=$HOME/.node_history iojs 

Maksymalna długość historii można ustawić NODE_REPL_HISTORY_SIZE, które domyślnie 1000.

W io.js 3.0+ historia REPL jest domyślnie włączona i NODE_REPL_HISTORY_FILE jest zastąpiona NODE_REPL_HISTORY (domyślnie: ~/.node_repl_history).

+0

Zrobiłem alias dla tego jak @badsyntax: 'alias iojs = 'env NODE_REPL_HISTORY_FILE = $ HOME/.node_history iojs'' –

Powiązane problemy