web-dev-qa-db-fra.com

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

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

101
minty

Ce n'est pas le cas. Vous pouvez cliquer avec le bouton droit sur la barre de titre, sélectionner des propriétés et, dans l'onglet "Disposition", modifier la taille du tampon d'écran (largeur de ligne et défilement) et la taille de la fenêtre (taille de la fenêtre d'affichage). Si vous avez démarré cmd à partir d'un raccourci, vous pouvez enregistrer ces paramètres pour les sessions futures.

146
erickson

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

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

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. Définissez la largeur du 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 vérifier Console . Il s'agit d'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.

43
Tim Stewart

RE: Parce que MS valorise la "compatibilité descendante" sur beaucoup de choses et dans ce cas, je soupçonne que c'est une croyance déplacée que cela mettra en danger les gens s'ils n'ont pas leur fenêtre standard de 80 pouces.

La rétrocompatibilité fonctionne très bien, cependant. Je n'imagine pas que Microsoft a été assez approfondi sur leur mise en œuvre, et je crois que Microsoft est le porte-affiche pour s'assurer que les versions plus récentes ne fonctionneront pas sur les anciennes versions. Beaucoup ne fonctionne 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.

De plus, je pense que la vraie raison pour laquelle la longueur de la ligne est à une norme de 80 colonnes est parce que la plupart des programmes de ligne de commande, etc. fonctionnent sous l'hypothèse que l'utilisateur est plafonné à une invite de 80 colonnes, ce qui signifie que l'augmentation de la largeur peut entraîner des erreurs de formatage ou, pire encore, une interruption complète des programmes.

Comme l'a mentionné jmucchiello, 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 indirecte: MODE LPTn [: ] = COMm [:] 
 
 Sélectionner la page de codes: MODE CON [:] CP SELECT = aaa 
 
 État de la page de codes: MODE CON [:] CP [ /STATUS diplomatique.______________.solaire.____..Mode d'affichage: MODE CON [:] [COLS = c] [LIGNES = n] 
 
 Taux type: MODE CON [:] [ TARIF = r DÉLAI = d]

Si vous avez activé DOSONLY sur votre CONFIG.NT, cependant, lorsque vous ouvrez COMMAND.COM, il héritera 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.)

DEBUG 
 A100 
 MOV AX, 1112 
 INT 10 
 INT 20 
 
 G 
 Q

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

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

G Q

Si vous entrez cela 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 devrait, et vous avez été averti , donc ce n'est pas mon problème si votre moniteur pleure. ;-) Cependant, si vous l'utilisez sans DOSONLY activé, COMMAND.COM redimensionnera à sa taille précédente dès l'application (dans ce cas, à moins que vous ne l'ayez écrit dans un fichier et exécuté que, DEBUG) se ferme.

Alternativement, vous pouvez utiliser MODE.COM de FreeDOS, qui s'exécutera 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 sur http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/ mode/2005 / .

Nouveau MODE FreeDOS par Eric Auer 2003-2005. Licence: GPL. (version 12may2005) 
 MODE [périphérique] [/ STA [TUS]] (affiche l'état d'un ou de tous les périphériques) 
 MODE LPTn [:] cols [ [lignes] [ réessayez]] (cols ou cpi, 6/8 lpi, réessayer 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 [:] baud, parité, données, arrêter, 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, les 
 2 derniers espaces/marques moyens, les données peuvent être 5. .8, arrêt 1..2. Réessayer est ignoré! 
 PLANIFIÉ: Réessayer b/e/r -> occupé/erreur/prêt si occupé, p/n infini/pas de réessayer. 
 MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]] (FreeDOS DISPLAY doit être chargé) 
 MODE CON [:] [CP | CODEPAGE] REF [RESH] (nécessite DISPLAY) 
 MODE CON [:] [CP | CODEPAGE] SEL [ECT] = nombre (nécessite AFFICHAGE) 
 MODE CON [:] [CP | CODEPAGE] PREP [ARE] = ((page de code) nom de fichier) (a besoin de 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 [:] [R ATE = ...] [DELAY = ...] (taux par défaut 20, délai par défaut 1) 
 Le taux peut être 1..32 pour 2..30 car/sec, le délai peut être 1..4 pendant 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 retrouvera immédiatement sa taille précédente une fois MODE.COM fermé.

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 -> Disposition. De même, vous pouvez définir la résolution de tous les raccourcis vers CMD.EXE et les fichiers batch (cliquez avec le bouton droit sur le raccourci -> Propriétés -> Disposition). Cela ne fonctionne que pour CMD.EXE, mais pas COMMAND.COM.

17
Coding With Style

Une commande simple pour fixer 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 avec Ctrl+C.

13
Mijacr

Je ne connais pas l'historique, mais cet article de la liste de souhaits de l'auteur de PuTTY est un article intéressant qui explique les obstacles techniques impliqués avec tout type de remplacement de 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 remplacement, mais si c'est le cas, vous pouvez également consulter certains des remplacements de cmd.exe comme Console 2 ou la commande de prise de JP Software, etc. J'ai également eu de bonnes expériences avec PuTTY-Cyg qui vous permet d'utiliser PuTTY comme un cygwin Shell.

6
Jay

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 le hauteur avec la souris, mais pas le 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 dépassera pas 80 caractères. Je ne pense pas que ce soit une raison réaliste depuis une dizaine d'années, cependant.

6
Greg Hewgill

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

Voir aussi

4
Patrick Cuff

Vous pouvez également utiliser une application de terminal différente, telle que Console2 , qui vous permet de redimensionner la fenêtre à votre guise (entre autres, comme la transparence et la possibilité d'utiliser la police de votre choix) ). C'est une excellente application, j'y suis passée et maintenant je n'utilise que cmd.exe quand je dois absolument.

2
Sasha Chedygov

Parce que MS valorise la "compatibilité descendante" sur beaucoup de choses et dans ce cas, je soupçonne que c'est une croyance déplacée que cela dérangera les gens s'ils n'ont pas leur fenêtre standard de 80 pouces.

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
Draemon

It IS limited. Check it out. (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 obtenir que 128 sur la largeur d'invite de commande. 128/1024 = 0,125

vous constaterez que ce ratio est uniforme 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 qui exécutent tous des bureaux individuels. (donc en substance, 3 résolutions 1024x768) et si je veux faire quelque chose SO SIMPLE comme étirer une invite de commande sur 2 ou plusieurs moniteurs, JE NE POUVE PAS. (Je veux quand je fais des choses avec des chemins très longs (diruse.exe/etc.) ...

-c

1
Chris King

Comme il défile 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 à être enveloppées pour la plupart, mais pas tellement que vous perdez une tonne d'espace.

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

0
Bill K