Perché Windows cmd.exe è limitato a 80 caratteri?


104

Adoro allungare il mio terminale su Unix. Qual è la storia o il motivo dietro la riga di comando di Windows lame?


2
È una scelta, proprio come molte altre cose sono scelte. Se hai una dimensione fissa, è più facile progettare il "tuo schermo" perché conosci esattamente i limiti. Gli svantaggi sono evidenti, essendo che qualunque sia la dimensione scelta, sarà sempre sbagliato per qualcuno o qualcosa. L'attuale schermata CMD di Windows era in realtà l'unica schermata, ai tempi. E non erano disponibili molte risoluzioni e pochissime ad alta risoluzione per quella materia.
tvCa

Risposte:


147

Non lo è. È possibile fare clic con il pulsante destro del mouse sulla barra del titolo, selezionare le proprietà e nella scheda "Layout" modificare la dimensione del buffer dello schermo (larghezza della linea e scorrimento indietro) e la dimensione della finestra (dimensione del riquadro di visualizzazione). Se hai avviato cmd da un collegamento, puoi salvare queste impostazioni per sessioni future.


2
Non dimenticare carattere / colore. Niente è bello come tornare ad alcuni schermi verdi retrò quando apro il mio prompt dei comandi. 8 ^ D
Dillie-O

13
Vuoi dire "nient'altro che cambiare il carattere in consolas" hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy

5
Salto sempre e imposto la larghezza a 180 e lo scrollback a 9999. Non è che tu ne abbia bisogno molto spesso, ma non ho mai fatto male a nulla (anche ai tempi delle macchine da 128 MB e l'unica volta che ne hai bisogno, Sarai VERAMENTE contento di averlo impostato in anticipo.La larghezza è una preferenza personale, non mi piace vedere il ritorno a capo del mio compilatore se non in condizioni estreme, ma ad altri non piace mai scorrere.
Bill K

4
L'aumento dell'altezza del buffer dello schermo è molto sottovalutato. Questo tipo di scorrimento è troppo spesso necessario per poter leggere completamente l'output di un programma sullo schermo (a meno che non si usi MORE).
Coding With Style

22
Ebbene sì ... ma no. Non è possibile ridimensionare arbitrariamente la finestra trascinando il bordo della finestra ed eccoci nel 2012 e ancora non è cambiato.
Alex B

108

Se sei fobico dei topi puoi anche digitare questo nella finestra di cmd:

mode <cols>,<lines>
mode 80,25
mode 120,50
etc.

11
Questo è stato molto utile per gestire una chiamata di sistema a "cmd / c ..." su un'app che controlla la dimensione della finestra per formattare il suo output. Ho appena lanciato una "modalità 200,50 &&" prima della chiamata e la vita è bella
Thomas


44

Non è limitato.

  1. Esegui cmd.exe
  2. Fare clic sull'icona nella parte superiore sinistra dello schermo.
  3. Seleziona Proprietà
  4. Seleziona la scheda Layout.
  5. Imposta il buffer e la larghezza della finestra come preferisci.
  6. Fare clic su OK
  7. Seleziona Salva proprietà per futuro ...
  8. Fare clic su OK.

Potresti voler controllare Console . È un'app open source che ti consente di eseguire più shell in un ambiente a schede. È inoltre possibile impostare la trasparenza alfa dei gusci.


17

RE: Perché MS dà valore alla "compatibilità all'indietro" su molte cose e in questo caso sospetto che sia una convinzione mal riposta che in qualche modo innervosirà le persone se non hanno la loro finestra standard di 80.

La retrocompatibilità funziona piuttosto male, però. Non immagino che Microsoft sia stata abbastanza approfondita riguardo alla loro implementazione, e credo che Microsoft sia il ragazzo del manifesto per assicurarsi che le versioni più recenti non funzionino su versioni precedenti. Molto non funziona correttamente sotto COMMAND.COM, il che sabota notevolmente l'utilità che possiede, per non parlare del fatto che devi entrare DOSONLY per far funzionare correttamente alcuni programmi, inoltre Microsoft ha rimosso comandi utili. Onestamente, non riesco a immaginare che Microsoft consideri la "retrocompatibilità" in grande considerazione.

Inoltre, penso che il vero motivo per cui la lunghezza della riga è a uno standard di 80 colonne è perché la maggior parte dei programmi da riga di comando, ecc., Operano sotto il presupposto che l'utente sia limitato a un prompt di 80 colonne, il che significa che l'aumento della larghezza può causare errori di formattazione o, peggio ancora, possono rompere del tutto i programmi.

Come accennato da jmucchiello, MODE funzionerà bene per ridimensionare la finestra se ne hai voglia.

Configura i dispositivi di sistema.

Porta seriale: MODE COMm [:] [BAUD = b] [PARITY = p] [DATA = d] [STOP = s]
                                [to = on | off] [xon = on | off] [odsr = on | off]
                                [octs = on | off] [dtr = on | off | hs]
                                [rts = on | off | hs | tg] [idsr = on | off]

Stato del dispositivo: MODE [dispositivo] [/ STATUS]

Stampa di reindirizzamento: MODE LPTn [:] = COMm [:]

Selezionare la tabella codici: MODE CON [:] CP SELECT = yyy

Stato della tabella codici: MODE CON [:] CP [/ STATUS]

Modalità di visualizzazione: MODE CON [:] [COLS = c] [LINES = n]

Velocità tipica: MODE CON [:] [RATE = r DELAY = d]

Tuttavia, se DOSONLY è abilitato su CONFIG.NT, quando si apre COMMAND.COM, erediterà una risoluzione di riga in stile DOS appropriata da cmd.exe, ma non è possibile richiamare MODE dall'interno di COMMAND.COM. Se desideri ridimensionare all'interno di COMMAND.COM, dovrai utilizzare istruzioni di assemblaggio a 16 bit, in questo modo:

Risoluzione linea 80x50 (nessun framebuffer, nessun SVGA, supportato praticamente universalmente).

DEBUG
A100
MOV AX, 1112
INT 10
INT 20

sol
Q

Risoluzione di linea 132x60 (nessun framebuffer, richiede SVGA. Non funziona su schede ATI gfx, di solito funziona su schede nVidia gfx, afaict funziona sempre su schede Intel integrate gfx.)

DEBUG
A100
MOV AX, 4F02
MOV BX, 010C
INT 10
INT 20

sol Q

Se lo inserisci sul tuo COMMAND.COM, ti darà la risoluzione specificata. (Attenzione: se il tuo monitor è abbastanza vecchio da non supportare la modalità, potresti finire per distruggerlo. Nota a margine: se puoi eseguire Windows, il tuo monitor dovrebbe andare bene. Disclaimer: L'enfasi su dovrebbe e sei stato avvertito , quindi non è un mio problema se il tuo monitor frigge. ;-) Tuttavia, se lo usi senza DOSONLY abilitato, COMMAND.COM si ridimensionerà alla sua dimensione precedente non appena l'applicazione (in questo caso, a meno che tu non l'abbia scritto su un file ed eseguito quello, DEBUG) esce. http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/ .

In alternativa, puoi usare MODE.COM di FreeDOS, che verrà eseguito correttamente sotto COMMAND.COM impostato su DOSONLY. Puoi estrarlo dall'immagine disco sul sito web ufficiale (freedos.org) o scaricarlo all'indirizzo

Nuova modalità FreeDOS di Eric Auer 2003-2005. Licenza: GPL. (versione 12 maggio 2005)
MODE [dispositivo] [/ STA [TUS]] (mostra lo stato di uno o tutti i dispositivi)
MODE LPTn [:] cols [, [lines] [, retry]] (cols o cpi, 6/8 lpi, retry p o n)
MODE LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...] (riprova: p infinito / n nessuno)
MODE LPTn [:] = [COMn [:] | NUL] (reindirizza i dati della stampante alla porta seriale o NUL)
MODE COMn [:] baud, parity, data, stop, retry (valori vuoti consentiti)
MODE COMn [:] [BAUD [HARD] = ...] [PARITY = ...] [DATA = ...] [STOP = ...] [RETRY = ...]
  Baud può essere abbreviato in prefisso univoco, la parità può essere o / e / n / s / m, il
  gli ultimi 2 spazio / segno medio, i dati possono essere 5..8, stop 1..2. Riprova IGNORATO!
  PIANIFICATO: Riprova b / e / r -> occupato / errore / pronto se occupato, numero infinito / nessun nuovo tentativo.
MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]] (FreeDOS DISPLAY deve essere caricato)
MODE CON [:] [CP | CODEPAGE] REF [RESH] (necessita di DISPLAY)
MODE CON [:] [CP | CODEPAGE] SEL [ECT] = numero (necessita di DISPLAY)
MODE CON [:] [CP | CODEPAGE] PREP [ARE] = ((codepage) filename) (necessita di DISPLAY)
  Usa PREP = ((, cp2, cp3,, cp5) ...) per preparare le tabelle codici in altri buffer.
MODE [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [, righe] (le righe possono essere 25, 28, 43 o 50)
  Usa 8, 14 o 16 come valore "righe" se desideri modificare solo il carattere.
MODE [CO40 | CO80 | ...], [R | L] [, T] (sposta CGA sinistra / destra, T è la modalità interattiva)
MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = valore
  Il valore può essere: + o - per i lucchetti o un carattere per switchar.
MODE CON [:] [COLS = ...] [LINES = ...] (i valori possibili dipendono dal tuo hardware)
MODE CON [:] [RATE = ...] [DELAY = ...] (tasso predefinito 20, ritardo predefinito 1)
  La velocità può essere 1..32 per 2..30 caratteri / sec, il ritardo può essere 1..4 per 1 / 4..4 / 4 sec.

Per gli stessi motivi del codice ASM che ho fornito, a meno che non lo esegui in COMMAND.COM con DOSONLY aggiunto al tuo file CONFIG.NT, la finestra tornerà immediatamente alla sua dimensione precedente una volta che MODE.COM esce.

Infine, come altri hanno affermato, è anche possibile modificare queste impostazioni semplicemente facendo clic con il pulsante destro del mouse sulla barra del titolo del prompt dei comandi e modificando Proprietà -> Layout. Allo stesso modo, è possibile impostare la risoluzione per qualsiasi collegamento a CMD.EXE e file batch (fare clic con il pulsante destro del mouse sul collegamento -> Proprietà -> Layout). Ciò funziona solo per CMD.EXE, tuttavia, non per COMMAND.COM.


14

Un semplice comando per correggere la dimensione della finestra che uso sempre:

wmic

Si aprirà la riga di comando di Strumentazione gestione Windows e rimuoverà i limiti di dimensione. Quindi chiudilo con Ctrl+ C.


6

Non conosco la storia dietro di esso, ma questo elemento della lista dei desideri dell'autore di PuTTy è un post interessante che spiega gli ostacoli tecnici coinvolti con qualsiasi tipo di sostituzione di cmd.exe che non sia zoppo:

http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/win-command-prompt.html

Non dici che stai cercando un sostituto, ma in tal caso potresti anche controllare alcune delle sostituzioni di cmd.exe come Console 2 o Take Command di JP Software ecc. Ho anche avuto buone esperienze con PuTTy- Cyg che ti consente di utilizzare PuTTy come una shell cygwin.


6

Sebbene la larghezza non sia limitata come mostrano altre risposte, ho sempre trovato strano che si possa trascinare e ridimensionare l' altezza con il mouse, ma non la larghezza .

Penso che la larghezza predefinita di 80 caratteri sia correlata alla compatibilità con i vecchi programmi che presumono che il terminale non sia più largo di 80 caratteri. Tuttavia, non credo che questa sia stata una ragione realistica per un decennio o giù di lì.


9
Sia la larghezza che l'altezza possono essere ridimensionate, succede solo che la larghezza della finestra predefinita è uguale alla larghezza del buffer. Non è possibile ingrandire la finestra del buffer, quindi l'unica opzione (con l'impostazione predefinita di 80 colonne) è ridurre la larghezza.
efotinis

4

Come altri hanno sottolineato, non è limitato a 80 caratteri di larghezza, ma la mia ipotesi sul motivo per cui il valore predefinito è 80 caratteri sarebbe che è rimasto dai giorni del DOS in cui i display CRT erano larghi 80 caratteri.

Guarda anche


Il monitor moderno può essere più largo di 80 caratteri in modalità testo?
macropas

potresti dover essere in esecuzione con una modalità framebuffer per farlo funzionare (ma potrei sbagliarmi, è passato del tempo.)
andersop

Ci sono alcune modalità SVGA che sono larghe 132 caratteri senza utilizzare una modalità framebuffer, ma sono supportate in modo piuttosto casuale. Una di queste modalità è elencata nella mia risposta.
Coding With Style

3
Va più indietro di così: il motivo per cui IBM ha realizzato i suoi display CRT di 80 colonne di larghezza era che le sue schede perforate erano larghe 80 colonne.
dan04

2

Puoi anche utilizzare un'applicazione terminale diversa, come Console2 , che ti consente di ridimensionare la finestra quanto vuoi (tra le altre cose, come la trasparenza e la possibilità di utilizzare qualsiasi carattere desideri). È un'ottima applicazione, ci sono passato e ora la uso solo cmd.exequando è assolutamente necessario.


1

Poiché scorrerà da sinistra a destra così come su e giù, la prima cosa che faccio su un sistema è definire la mia larghezza come 180 e salvarla. In genere è sufficiente in modo che le tracce dello stack non debbano avvolgersi per la maggior parte, ma non così tanto da aspettare un sacco di spazio.

Già che ci sei, imposta la dimensione verticale (buffer di scorrimento all'indietro) su tutti i 9. Sarai felice di averlo fatto un giorno.


1

Perché MS attribuisce valore alla "compatibilità all'indietro" su molte cose e in questo caso sospetto che sia una convinzione mal riposta che in qualche modo innervosirà le persone se non hanno la loro finestra standard di 80.

Ovviamente potrebbe essere che fosse programmato per una larghezza fissa di 80 caratteri quando era praticamente universale, e le impostazioni delle proprietà aggiuntive erano un po 'un trucco.


1

È limitato. Controlla. (Intendo la dimensione della finestra NON buffer)

Scoprirai che la larghezza massima che puoi impostare è limitata ma varia in base alla risoluzione dello schermo. Se la risoluzione è impostata su 1024 x 768, scoprirai che puoi solo arrivare a 128 sulla larghezza del prompt dei comandi. 128/1024 = 0,125

troverete quel rapporto coerente su tutta la linea. Ho una sessione RDP in esecuzione a 2000x768 (su due dei miei tre monitor) e ottengo una larghezza massima di 250.

Ora, quello effettivamente risulta essere un po 'più grande delle dimensioni del tuo monitor, ma ho tre monitor che eseguono tutti i desktop individuali. (quindi in sostanza, 3 risoluzioni 1024x768) e se voglio fare qualcosa di COSÌ SEMPLICE come allungare un prompt dei comandi su 2 o più monitor, NON POSSO. (Lo voglio quando faccio cose con percorsi molto lunghi (diruse.exe / ecc.) ...

-c


2
Se riduci la dimensione del carattere, puoi ottenere dimensioni della finestra (relativamente) più grandi. Ho appena ottenuto più di 300 di larghezza su uno schermo 1600x1200.
Michael Myers

Puoi comunque ingrandire la larghezza della linea e scorrere la finestra. Ho fatto il mio 160 o 180 di larghezza dai giorni VGA.
Bill K

0

-1

Perché migliorare l'usabilità e la funzionalità di tutto ciò che richiede uno sviluppo simile a Unix / GNU indebolirà Windows come piattaforma commerciale per i partner di Microsoft. Prevenire ciò significa che i prodotti per sviluppatori di altre grandi aziende, come terminali migliorati e altri prodotti generici di terze parti, come elaboratori di testi, lettori video, ecc. Non sono in concorrenza con il software Unix / GNU esistente. Senza questo, Windows non sarebbe una piattaforma redditizia e Microsoft perderebbe il monopolio del desktop.

Questo è il motivo per cui il terminale fa schifo, non c'è API POSIX, nessun supporto C99 in MSVC e l'elenco potrebbe continuare. Per chiarire, le tecnologie e lo sviluppo Unix / GNU comuni sono intenzionalmente non supportati in modo che le grandi software house commerciali non debbano competere con loro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.