2009-08-06 10 views
23

Sembra casuale: dopo una certa quantità di tempo/utilizzo di qualsiasi console che utilizzo su Windows Vista, perdo la possibilità di utilizzare la cronologia della riga di comando (o il buffer dei comandi, se preferisci ...), e di colpire o freccia giù non fa più nulla, significa che ci sono essenzialmente 0 elementi disponibili nella cronologia.Perché le console di Windows perdono la cronologia della riga di comando (freccia su) dopo un po '?

Ho visto questo comportamento in Cygwin, CMD e PowerShell.

A volte questo comportamento vale per i processi in esecuzione all'interno della console - client Python, MySQL, ecc

È questo un problema inerente in Windows? Un'impostazione da qualche parte? Ci sono altre console che non hanno questo problema?

ps - se si ritiene che ciò non sia legato alla programmazione, vedere altre domande relative agli strumenti di programmazione, ad esempio, quasi tutto contrassegnato da "eclipse" che riguarda come utilizzare l'IDE anziché programmarlo.

+0

+1 Lo vedo ogni tanto usando cygwin. Mi baso molto su CTRL + R per ricordarmi alcuni dei comandi complicati che uso sempre. Allora questo si rompe e devo capire la sintassi esatta di un gruppo di comandi –

+0

Bene? Hai mai risolto questo problema? –

+3

Sì. Ho smesso di usare Windows. – wsorenson

risposta

5

C'è una dimensione massima del buffer della cronologia in una "casella DOS" di Windows - icona in alto a sinistra, clic destro, proprietà selezionate e vedrete che la cronologia dei comandi ha una dimensione del buffer di 50 per impostazione predefinita.

+0

Tuttavia, questo non è esattamente il problema - ci si aspetterebbe che questo implichi una finestra di cronologia fluttuante, piuttosto che la cronologia ** interruzioni ** quando si preme 50 - la rottura è il comportamento notato, e talvolta ben prima di 50 – wsorenson

+0

cosa intendi per pausa? –

+0

La freccia su non richiama più alcun oggetto. – wsorenson

4

In PowerShell è possibile controllare la dimensione massima della storia tramite la variabile automatica MaximumHistoryCount (di default è 64)

PS> $ MaximumHistoryCount

17

Due modi, credo.

1) Far Manager è una buona scelta per una shell. Anche se non ne hai bisogno è tutto potere (gestione file/archivio, editor, numero enorme di plugin, macro), puoi usarlo come wrapper/executor per cmd, tcc, sh o qualsiasi altro programma, shell o processore di comandi .

Per esempio

  • prendere 3 file da distrib (Far2 o Far3): far.exe, fareng.lng e (opzionalmente) fareng.hlp
  • run "far.exe/w", premere Ctrl + BCtrl + O
  • tipo qualsiasi comando nella riga di comando: dir, impostare, blocco note, stucco, uno così via ...

Storia wil È possibile conservarlo tra le sessioni, è possibile accedervi tramite Alt + F8 (premere Ctrl + Alt + F per passare alla cronologia in modalità filtro).

Cronologia depositi (e impostazioni) nel Registro di sistema.

Storia di negozi lontani 3.0 nel database SQLite e può essere portatile.

Inoltre, Far può completare automaticamente i comandi dalla cronologia o file/percorsi dal disco. E c'è plug-in (YAC), che può completare automaticamente da alias e così via ...

2) Ho trovato progetto recentemente interessante: Clink - Portare potente editing della riga di comando di Bash per cmd Microsoft Windows'.exe

  • Potente modifica della linea Bash dalla libreria Readline di GNU. Maggiori informazioni sulle scorciatoie da tastiera di Readline.
  • Completamento percorso superiore (TAB).
  • Incolla dagli appunti (Ctrl-V).
  • Supporto per il completamento di eseguibili/comandi e variabili di ambiente.
  • Annulla/Ripeti (Ctrl-_ o Ctrl-X, Ctrl-U)
  • migliorata cronologia comandi.
    • Persiste tra le sessioni.
    • Disponibile per la ricerca (Ctrl-R e Ctrl-S).
    • Espansione cronologica (ad es. !!,!, E! $).
  • Completamento eseguibile tramite Lua.

Sembra un progetto giovane ma in erba, quindi ho creato un'opzione per usarlo nel mio Console Emulator.

+1

Perché ci sono così tanti voti? Questa è una bella informazione, ma non risponde alla domanda reale (che è probabile che l'utente prenda "Scroll Lock"). – ThisGuy

1

Tutta la cronologia in console è fornita da Doskey. Inoltre, è sempre disponibile per tutti i programmi interattivi basati su caratteri (come programmi di debugger o programmi di trasferimento file) e mantiene un buffer della cronologia dei comandi e macro per ogni programma che avvia.

Nell'era DOS, si possono ricordare software che dopo l'esecuzione hanno cancellato la cronologia. Non sono sicuro che fossero bug, comportamento previsto o il mix di due. Ma alcuni bug di Doskey erano noti come si può vedere alla fine di this link.

Suggerisco a chiunque capisca questo problema di provare le opzioni del comando Doskey e vedere se (s) può correggerlo.

4

Verificare il codice Tasto di blocco. DOH! Ho colpito la mia per sbaglio in modo che le frecce su e giù facessero scorrere la finestra.

+0

Doh, anch'io! Questa dovrebbe essere la risposta accettata. – ThisGuy

0

Non l'ho mai sperimentato, ma mi chiedo se la combinazione di tasti ALT+F7, che cancella la cronologia dei comandi in base a DOSKEY /?, potrebbe essere la causa.

2

Ho riscontrato questo problema per anni. Principalmente con python usato dalla riga di comando in una shell bash. Dopo alcuni esperimenti oggi in cui questo si è ripresentato per la millesima volta (più o meno) sono stato in grado di risolvere il problema impostando la cronologia dei comandi per la shell per avere una dimensione del buffer di 999 e un numero di buffer a 999 (ho scelto il più grande possibile impostazione per ciascuno, è possibile che qualsiasi impostazione avrebbe funzionato diverso da quello che ero prima, che era 50/50). Per accedere alla cronologia dei comandi, fare clic con il pulsante destro del mouse nell'angolo in alto a sinistra della finestra della shell, selezionare Proprietà, quindi la scheda Opzioni. Non sono sicuro delle implicazioni di queste impostazioni per le prestazioni della shell, ma finora nient'altro sembra influenzato e la cronologia della riga di comando è ancora una volta funzionante per me nella stessa shell in cui in precedenza non funzionava. Mi rendo conto che questa risposta è simile alla risposta di steve-gilham, ma forse dà un po 'più di fondo.

Devo ammettere che la mia risposta implica 1 esperimento che ha funzionato.

0

Se "all'improvviso" tutta la cronologia è sparita, forse inizia un nuovo cmd-shell? Test:

C:\Users\Guest\>doskey /history 
…long history… 
C:\Users\Guest\>cmd 
Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 
C:\Users\Guest\>doskey /history 
…no history… 
C:\Users\Guest\>exit 
C:\Users\Guest\>doskey /history 
…old long history… 

Di causa in questo esempio you'l vedere il nuovo cmd-start, ma se provate questo:

doskey /history 
    …history list… 
cmd echo /k 
doskey /history 
    …no list ! 

non si vede

Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 

Ma è stata avviata una nuova CMD-Shell. Quindi "exit" può aiutare in questo caso!

Problemi correlati