Pourquoi Windows cmd.exe est-il limité à 80 caractères de large?


104

J'adore étirer mon terminal sous unix. Quelle est l'histoire ou la raison derrière la ligne de commande Windows Lame?


2
C'est un choix, tout comme beaucoup d'autres choses sont des choix. Si vous avez une taille fixe, il est plus facile de concevoir "votre écran" car vous connaissez exactement les limites. Les inconvénients sont évidents, car quelle que soit la taille choisie, ce sera toujours faux pour quelqu'un ou quelque chose. L'écran actuel de Windows CMD était en fait le seul écran, à l'époque. Et peu de résolutions étaient disponibles, et très peu de haute résolution d'ailleurs.
tvCa

Réponses:


147

Ça ne l'est pas. Vous pouvez cliquer avec le bouton droit de la souris sur la barre de titre, sélectionner les propriétés, et dans l'onglet "Mise en page" modifier la taille de la mémoire tampon de l'écran (largeur de ligne et défilement) et la taille de la fenêtre (taille de la fenêtre). Si vous avez lancé cmd à partir d'un raccourci, vous pouvez enregistrer ces paramètres pour les sessions futures.


2
N'oubliez pas la police / la couleur. Rien n'est plus agréable que de revenir à des écrans verts rétro lorsque j'ouvre mon invite de commande. 8 ^ D
Dillie-O

13
Vous voulez dire, "rien d'autre que de changer la police en consolas" hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy

5
Je saute toujours et règle la largeur sur 180 et le défilement sur 9999. Ce n'est pas comme si vous en aviez besoin très souvent, mais je n'ai jamais rien fait de mal (même à l'époque des machines de 128 Mo et la seule fois où vous en avez besoin, vous serez VRAIMENT heureux de l'avoir défini à l'avance. La largeur est une préférence personnelle, je n'aime pas voir les retours à la ligne de mon compilateur sauf dans des conditions extrêmes, mais d'autres n'aiment jamais faire défiler.
Bill K

4
L'augmentation de la hauteur de la mémoire tampon de l'écran est très sous-estimée. Ce type de défilement est trop souvent nécessaire pour pouvoir lire entièrement la sortie d'un programme à l'écran (sauf si vous utilisez PLUS).
Codage avec style

22
Eh bien, oui ... mais non. Vous ne pouvez pas redimensionner arbitrairement la fenêtre en faisant glisser le bord de la fenêtre et nous voici en 2012 et cela n'a toujours pas changé.
Alex B

108

Si vous êtes phobique à la souris, vous pouvez également taper simplement ceci dans la fenêtre cmd:

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

11
Cela a été très utile pour traiter un appel système à "cmd / c ..." sur une application qui vérifie la taille de la fenêtre pour formater sa sortie. Je viens de lancer un "mode 200,50 &&" avant l'appel et la vie est belle
Thomas

Vous perdez cependant le parchemin vertical, au moins sur Win7
golimar

44

Ce n'est pas limité.

  1. Exécutez cmd.exe
  2. Cliquez sur l'icône en haut à gauche de l'écran.
  3. Sélectionnez Propriétés
  4. Sélectionnez l'onglet Disposition.
  5. Réglez la largeur de la mémoire tampon et de la fenêtre comme vous le souhaitez.
  6. Cliquez sur OK
  7. Sélectionnez Enregistrer les propriétés pour l'avenir ...
  8. Cliquez sur OK.

Vous voudrez peut-être consulter la console . C'est une application open source qui vous permet d'exécuter plusieurs shells dans un environnement à onglets. Vous pouvez également définir la transparence alpha des coques.


17

RE: Parce que MS valorise la "rétrocompatibilité" sur beaucoup de choses et dans ce cas je soupçonne que c'est une croyance erronée que cela dérangera d'une manière ou d'une autre les gens s'ils n'ont pas leur fenêtre standard de 80 larges.

La compatibilité ascendante fonctionne assez terriblement, cependant. Je n'imagine pas que Microsoft a été assez minutieux dans sa mise en œuvre, et je pense que Microsoft est le fer de lance pour s'assurer que les nouvelles versions ne fonctionneront pas sur les anciennes versions. Beaucoup de choses ne fonctionnent pas correctement sous COMMAND.COM, ce qui sabote considérablement l'utilité qu'il possède, sans oublier que vous devez entrer DOSONLY pour que certains programmes fonctionnent correctement, et Microsoft a supprimé les commandes utiles. Honnêtement, je ne peux pas imaginer que Microsoft ait une "compatibilité ascendante" en grande partie.

En outre, je pense que la vraie raison pour laquelle la longueur de la ligne est à une norme de 80 colonnes est que la plupart des programmes de ligne de commande, etc. fonctionnent sous l'hypothèse que l'utilisateur est limité à une invite de 80 colonnes, ce qui signifie que l'augmentation de la largeur peut entraîner des erreurs de formatage ou pire peut-être casser complètement les programmes.

Comme jmucchiello l'a mentionné, MODE fonctionnera bien pour redimensionner la fenêtre si vous en avez envie.

Configure les périphériques système.

Port série: 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]

État du périphérique: MODE [périphérique] [/ STATUS]

Impression de redirection: MODE LPTn [:] = COMm [:]

Sélectionnez la page de codes: MODE CON [:] CP SELECT = yyy

État de la page de codes: MODE CON [:] CP [/ STATUS]

Mode d'affichage: MODE CON [:] [COLS = c] [LINES = n]

Taux typique: MODE CON [:] [RATE = r DELAY = d]

Cependant, si vous avez activé DOSONLY sur votre CONFIG.NT, lorsque vous ouvrez COMMAND.COM, il hérite d'une résolution de ligne de style DOS appropriée à partir de cmd.exe, mais vous ne pouvez pas appeler MODE à partir de COMMAND.COM. Si vous souhaitez redimensionner dans COMMAND.COM, vous devrez utiliser des instructions d'assemblage 16 bits, comme ceci:

Résolution de ligne 80x50 (pas de framebuffer, pas de SVGA, pratiquement universellement pris en charge.)

DÉBOGUER
A100
MOV AX, 1112
INT 10
INT 20

g
Q

Résolution de ligne 132x60 (pas de framebuffer, nécessite SVGA. Ne fonctionnera pas sur les cartes ATI gfx, fonctionne généralement sur les cartes nVidia gfx, afaict fonctionne toujours sur les cartes Intel gfx intégrées.)

DÉBOGUER
A100
MOV AX, 4F02
MOV BX, 010C
INT 10
INT 20

g Q

Si vous entrez ceci sur votre COMMAND.COM, il vous donnera la résolution spécifiée. (Avertissement: si votre moniteur est suffisamment ancien pour ne pas prendre en charge le mode, vous risquez de le détruire. Remarque: si vous pouvez exécuter Windows, votre moniteur devrait fonctionner correctement. Clause de non-responsabilité: mettez l'accent sur le devoir, et vous avez été averti , donc ce n'est pas mon problème si votre moniteur frit. ;-) Cependant, si vous l'utilisez sans DOSONLY activé, COMMAND.COM sera redimensionné à sa taille précédente dès que l'application (dans ce cas, sauf si vous l'avez écrit à un fichier et exécuté que, DEBUG) se termine.

Vous pouvez également utiliser MODE.COM de FreeDOS, qui fonctionnera correctement sous COMMAND.COM défini sur DOSONLY. Vous pouvez soit l'extraire de l'image disque sur le site officiel (Freedos.org), soit l'obtenir surhttp://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/ .

Nouveau MODE FreeDOS par Eric Auer 2003-2005. Licence: GPL. (version 12mai2005)
MODE [appareil] [/ STA [TUS]] (affiche l'état d'un ou de tous les appareils)
MODE LPTn [:] cols [, [lines] [, retry]] (cols ou cpi, 6/8 lpi, retry p ou n)
MODE LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...] (réessayer: p infini / n aucun)
MODE LPTn [:] = [COMn [:] | NUL] (redirige les données de l'imprimante vers le port série ou NUL)
MODE COMn [:] bauds, parité, données, arrêt, réessayer (valeurs vides autorisées)
MODE COMn [:] [BAUD [HARD] = ...] [PARITY = ...] [DATA = ...] [STOP = ...] [RETRY = ...]
  Baud peut être abrégé en préfixe unique, la parité peut être o / e / n / s / m, le
  dernier 2 espace / marque moyen, les données peuvent être 5..8, stop 1..2. Réessayer est IGNORÉ!
  PRÉVU: réessayer b / e / r -> occupé / erreur / prêt si occupé, p / n infini / pas de réessai.
MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]] (FreeDOS DISPLAY doit être chargé)
MODE CON [:] [CP | CODEPAGE] REF [RESH] (nécessite AFFICHAGE)
MODE CON [:] [CP | CODEPAGE] SEL [ECT] = nombre (nécessite AFFICHAGE)
MODE CON [:] [CP | CODEPAGE] PREP [ARE] = ((codepage) filename) (nécessite DISPLAY)
  Utilisez PREP = ((, cp2, cp3,, cp5) ...) pour préparer les pages de codes dans d'autres tampons.
MODE [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [, lignes] (les lignes peuvent être 25, 28, 43 ou 50)
  Utilisez 8, 14 ou 16 comme valeur de «lignes» si vous souhaitez uniquement modifier la police.
MODE [CO40 | CO80 | ...], [R | L] [, T] (décalage CGA gauche / droite, T est le mode interactif)
MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = valeur
  La valeur peut être: + ou - pour les verrous ou un caractère pour switchar.
MODE CON [:] [COLS = ...] [LINES = ...] (les valeurs possibles dépendent de votre matériel)
MODE CON [:] [RATE = ...] [DELAY = ...] (taux par défaut 20, délai par défaut 1)
  Le taux peut être de 1..32 pour 2..30 car / s, le retard peut être de 1..4 pour 1 / 4..4 / 4 sec.

Pour les mêmes raisons qu'avec le code ASM que j'ai fourni, à moins que vous ne l'exécutiez dans COMMAND.COM avec DOSONLY ajouté à votre fichier CONFIG.NT, la fenêtre rebondira immédiatement à sa taille précédente une fois que MODE.COM sortira.

Enfin, comme d'autres l'ont indiqué, il est également possible de modifier ces paramètres simplement en cliquant avec le bouton droit sur la barre de titre de l'invite de commande et en modifiant Propriétés -> Mise en page. De même, vous pouvez définir la résolution de tous les raccourcis vers CMD.EXE et les fichiers de commandes (cliquez avec le bouton droit sur le raccourci -> Propriétés -> Disposition). Cela fonctionne uniquement pour CMD.EXE, mais pas COMMAND.COM.


14

Une commande simple pour corriger la taille de la fenêtre que j'utilise tout le temps:

wmic

Il ouvrira la ligne de commande de Windows Management Instrumentation et supprimera les limites de taille. Ensuite, fermez-le simplement avec Ctrl+ C.


6

Je ne connais pas l'historique derrière cela, mais cet élément de liste de souhaits de l'auteur de PuTTy est un article intéressant qui explique les obstacles techniques impliqués dans tout type de remplacement cmd.exe qui n'est pas boiteux:

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

Vous ne mentionnez pas que vous cherchez un remplaçant, mais si c'est le cas, vous pouvez également consulter certains des remplacements cmd.exe comme Console 2 ou Take Command de JP Software, etc. J'ai également eu de bonnes expériences avec PuTTy- Cyg qui vous permet d'utiliser PuTTy comme shell cygwin.


6

Bien que la largeur ne soit pas limitée comme le montrent d'autres réponses, j'ai toujours trouvé étrange que l'on puisse faire glisser et redimensionner la hauteur avec la souris, mais pas la largeur .

Je pense que la largeur par défaut de 80 caractères est liée à la compatibilité avec les anciens programmes qui supposent que le terminal ne fera pas plus de 80 caractères. Je ne pense pas que ce soit une raison réaliste depuis une dizaine d'années.


9
La largeur et la hauteur peuvent être redimensionnées, il se trouve simplement que la largeur de la fenêtre par défaut est égale à la largeur du tampon. Vous ne pouvez pas rendre la fenêtre plus grande que la mémoire tampon, la seule option (avec le paramètre par défaut de 80 colonnes) est de réduire la largeur.
efotinis

4

Comme d'autres l'ont souligné, il n'est pas limité à 80 caractères de large, mais je suppose que la raison pour laquelle il est par défaut à 80 caractères serait qu'il reste de l'époque DOS où les écrans CRT avaient 80 caractères de large.

Voir également


Le moniteur moderne peut-il contenir plus de 80 caractères en mode texte?
macropas

vous devrez peut-être utiliser un mode framebuffer pour que cela fonctionne (mais je me trompe peut-être, cela fait un moment.)
andersop

Il existe quelques modes SVGA d'une largeur de 132 caractères sans utiliser de mode de framebuffer, mais ils sont pris en charge au hasard. L'un de ces modes est répertorié dans ma réponse.
Codage avec style

3
Cela remonte plus loin que cela: la raison pour laquelle IBM a fait ses écrans CRT de 80 colonnes de large était que ses cartes perforées avaient 80 colonnes de large.
dan04

2

Vous pouvez également utiliser une autre application de terminal, telle que Console2 , qui vous permet de redimensionner la fenêtre autant que vous le souhaitez (entre autres, comme la transparence et la possibilité d'utiliser n'importe quelle police de votre choix). C'est une super application, je suis passé à elle et maintenant je ne l'utilise que cmd.exelorsque j'en ai absolument besoin.


1

Comme il défilera de gauche à droite ainsi que de haut en bas, la toute première chose que je fais sur un système est de définir ma largeur à 180 et de la sauvegarder. C'est généralement suffisant pour que les traces de pile n'aient pas à s'enrouler pour la plupart, mais pas au point de perdre une tonne d'espace.

Pendant que vous y êtes, définissez la taille verticale (tampon de défilement) sur les 9. Vous serez heureux de l'avoir fait un jour.


1

Parce que MS valorise la "rétrocompatibilité" sur beaucoup de choses et dans ce cas je soupçonne que c'est une croyance erronée que cela dérangera d'une manière ou d'une autre les gens s'ils n'ont pas leur fenêtre standard de 80 larges.

Bien sûr, il se pourrait qu'il ait été programmé pour une largeur fixe de 80 caractères alors que c'était à peu près universel, et les paramètres de propriété supplémentaires étaient un peu un hack.


1

C'est limité. Vérifiez-le. (Je veux dire la taille de la fenêtre PAS le tampon)

Vous constaterez que la largeur maximale que vous pouvez définir est limitée mais varie en fonction de la résolution de votre écran. Si votre résolution est définie sur 1024 x 768, vous constaterez que vous ne pouvez atteindre 128 que sur la largeur de l'invite de commande. 128/1024 = 0,125

vous constaterez que ce ratio est cohérent dans tous les domaines. J'ai une session RDP fonctionnant à 2000x768 (sur deux de mes trois moniteurs) et j'obtiens une largeur maximale de 250.

Maintenant, cela s'avère être un peu plus grand que la taille de votre moniteur Actaul, mais j'ai trois moniteurs exécutant tous des ordinateurs de bureau individuels. (donc en substance, 3 résolutions 1024x768) et si je veux faire quelque chose d'aussi simple que d'étirer une invite de commande sur 2 moniteurs ou plus, je ne peux pas. (Je veux quand je fais des choses avec des chemins très longs (diruse.exe / etc.) ...

-c


2
Si vous réduisez la taille de votre police, vous pouvez obtenir des tailles de fenêtre (relativement) plus grandes. Je viens d'avoir plus de 300 de large sur un écran 1600x1200.
Michael Myers

Vous pouvez toujours agrandir la largeur de votre ligne et faire défiler la fenêtre. J'ai fait le mien 160 ou 180 de large depuis les jours VGA.
Bill K

0

-1

Parce que l'amélioration de la convivialité et de la fonctionnalité de tout ce qui nécessite un développement de type Unix / GNU sapera Windows en tant que plate-forme commerciale pour les partenaires de Microsoft. Empêcher cela signifie que les produits d'autres grandes entreprises pour les développeurs, tels que les terminaux améliorés, et d'autres produits tiers généraux, comme les traitements de texte, les lecteurs vidéo, etc., ne sont pas en concurrence avec les logiciels Unix / GNU existants. Sans cela, Windows ne serait pas une plate-forme rentable et Microsoft perdrait son monopole de bureau.

C'est pourquoi le terminal est nul, il n'y a pas d'API POSIX, pas de support C99 dans MSVC et la liste est longue. Pour clarifier, les technologies et le développement Unix / GNU communs sont intentionnellement non supportés afin que les grands éditeurs de logiciels commerciaux n'aient pas à les concurrencer.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.