¿Por qué el cmd.exe de Windows está limitado a 80 caracteres de ancho?

104

Me encanta estirar mi terminal en Unix. ¿Cuál es la historia o la razón detrás de la línea de comandos de Windows lame?

menta
fuente
2
Es una elección, al igual que muchas otras cosas son elecciones. Si tiene un tamaño fijo, es más fácil diseñar "su pantalla" porque conoce exactamente los límites. Las desventajas son obvias, ya que sea cual sea el tamaño elegido, siempre será incorrecto para alguien o algo. La pantalla actual de Windows CMD en realidad FUE la única pantalla, en los días. Y no había muchas resoluciones disponibles, y muy pocas de alta resolución para el caso.
tvCa

Respuestas:

147

No lo es. Puede hacer clic con el botón derecho en la barra de título, seleccionar propiedades y, en la pestaña "Diseño", modificar el tamaño del búfer de la pantalla (ancho de línea y retroceso) y el tamaño de la ventana (tamaño de la ventana gráfica). Si inició cmd desde un acceso directo, puede guardar esta configuración para futuras sesiones.

erickson
fuente
2
No olvide la fuente / color. Nada es tan agradable como volver a algunas pantallas verdes retro cuando abro mi símbolo del sistema. 8 ^ D
Dillie-O
13
Quiere decir, "nada más que cambiar la fuente a consolas" hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy
5
Siempre salto y configuro el ancho en 180 y el retroceso en 9999. No es que lo necesites muy a menudo, pero nunca me ha dolido nada (incluso en los días de las máquinas de 128 MB y la única vez que lo necesitas, REALMENTE se alegrará de haberlo configurado de antemano. El ancho es una preferencia personal, no me gusta ver los cambios de línea de mi compilador, excepto en condiciones extremas, pero a otros nunca les gusta desplazarse.
Bill K
4
El aumento de la altura del búfer de la pantalla está muy subestimado. Ese tipo de desplazamiento es necesario con demasiada frecuencia para poder leer completamente la salida de un programa en la pantalla (a menos que use MÁS).
Codificación con estilo
22
Bueno, sí ... pero no. No puede cambiar el tamaño de la ventana arbitrariamente arrastrando el borde de la ventana y aquí estamos en 2012 y todavía no ha cambiado.
Alex B
108

Si tiene fobia al ratón, también puede escribir esto dentro de la ventana de cmd:

mode <cols>,<lines>
mode 80,25
mode 120,50
etc.
jmucchiello
fuente
11
Esto fue muy útil para lidiar con una llamada del sistema a "cmd / c ..." en una aplicación que verifica el tamaño de la ventana para formatear su salida. Acabo de lanzar un "modo 200,50 &&" antes de la llamada y la vida es buena
Thomas
Sin embargo, pierde el desplazamiento vertical, al menos en Win7
golimar
44

No es limitado.

  1. Ejecute cmd.exe
  2. Haga clic en el icono en la parte superior izquierda de la pantalla.
  3. Seleccionar propiedades
  4. Seleccione la pestaña Diseño.
  5. Establezca el ancho de la ventana y el búfer como desee.
  6. Haga clic en Aceptar
  7. Seleccione Guardar propiedades para el futuro ...
  8. Haga clic en Aceptar.

Es posible que desee consultar Console . Es una aplicación de código abierto que le permite ejecutar múltiples shells en un entorno con pestañas. También puede establecer la transparencia alfa de las conchas.

Tim Stewart
fuente
17

RE: Porque MS valora la "compatibilidad con versiones anteriores" sobre muchas cosas y, en este caso, sospecho que es una creencia equivocada de que de alguna manera pondrá nerviosa a la gente si no tiene su ventana estándar de 80 anchos.

Sin embargo, la compatibilidad con versiones anteriores funciona bastante mal. No creo que Microsoft haya sido muy minucioso en su implementación, y creo que Microsoft es el modelo para asegurarse de que las versiones más nuevas no funcionen en versiones anteriores. Mucho no funciona correctamente en COMMAND.COM, lo que sabotea considerablemente la utilidad que posee, sin mencionar que tienes que ingresar DOSONLY para que algunos programas se ejecuten correctamente, además de que Microsoft ha estado eliminando comandos útiles. Honestamente, no puedo imaginar que Microsoft tenga la "compatibilidad con versiones anteriores" en gran medida.

Además, creo que la verdadera razón por la que la longitud de la línea está en un estándar de 80 columnas es porque la mayoría de los programas de línea de comandos, etc. operan bajo el supuesto de que el usuario tiene un límite en un indicador de 80 columnas, lo que significa que aumentar el ancho puede causar errores de formato o algo peor, posiblemente rompan los programas por completo.

Como mencionó jmucchiello, MODE funcionará bien para cambiar el tamaño de la ventana si lo desea.

Configura los dispositivos del sistema.

Puerto serie: 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 = encendido | apagado | hs | tg] [idsr = encendido | apagado]

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

Impresión de redireccionamiento: MODE LPTn [:] = COMm [:]

Seleccione la página de códigos: MODE CON [:] CP SELECT = yyy

Estado de la página de códigos: MODE CON [:] CP [/ STATUS]

Modo de visualización: MODE CON [:] [COLS = c] [LINES = n]

Tasa tipográfica: MODE CON [:] [RATE = r DELAY = d]

Sin embargo, si tiene DOSONLY habilitado en su CONFIG.NT, cuando abra COMMAND.COM, heredará una resolución de línea de estilo DOS adecuada de cmd.exe, pero no puede invocar MODE desde dentro de COMMAND.COM. Si desea cambiar el tamaño dentro de COMMAND.COM, tendrá que usar instrucciones de ensamblaje de 16 bits, así:

Resolución de línea 80x50 (sin framebuffer, sin SVGA, prácticamente universalmente compatible).

DEPURAR
A100
MOV AX, 1112
INT 10
INT 20

GRAMO
Q

Resolución de línea 132x60 (sin framebuffer, requiere SVGA. No funciona en tarjetas ATI gfx, normalmente funciona en tarjetas nVidia gfx, afaict siempre funciona en tarjetas Intel integradas gfx).

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

GRAMO Q

Si ingresa esto en su COMMAND.COM, le dará la resolución especificada. (Advertencia: si su monitor es lo suficientemente antiguo como para no admitir el modo, es posible que termine destruyéndolo. Nota al margen: si puede ejecutar Windows, su monitor debería estar bien. Exención de responsabilidad: El énfasis en debería, y ha sido advertido , por lo que no es mi problema si su monitor se fríe. ;-) Sin embargo, si usa esto sin DOSONLY habilitado, COMMAND.COM cambiará de tamaño a su tamaño anterior tan pronto como la aplicación (en este caso, a menos que lo haya escrito en un archivo y ejecutado que, DEBUG) sale.

Alternativamente, puede usar MODE.COM de FreeDOS, que se ejecutará correctamente en COMMAND.COM configurado en DOSONLY. Puede extraerlo de la imagen del disco en el sitio web oficial (freedos.org) o obtenerlo enhttp://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/ .

Nuevo MODO FreeDOS de Eric Auer 2003-2005. Licencia: GPL. (versión 12may2005)
MODE [dispositivo] [/ STA [TUS]] (muestra el estado de uno o todos los dispositivos)
MODE LPTn [:] cols [, [líneas] [, reintentar]] (cols o cpi, 6/8 lpp, reintentar p o n)
MODE LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...] (reintentar: p infinito / n ninguno)
MODE LPTn [:] = [COMn [:] | NUL] (redirige los datos de la impresora al puerto serie o NUL)
MODO COMn [:] baudios, paridad, datos, detener, reintentar (se permiten valores vacíos)
MODO COMn [:] [BAUDIOS [DURO] = ...] [PARIDAD = ...] [DATOS = ...] [DETENER = ...] [REINTENTAR = ...]
  Los baudios se pueden abreviar como un prefijo único, la paridad puede ser o / e / n / s / m, el
  2 últimos espacios medios / marca, los datos pueden ser 5..8, parada 1..2. ¡Reintentar es IGNORADO!
  PLANEADO: Reintentar b / e / r -> ocupado / error / listo si está ocupado, p / n infinito / sin reintento.
MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]] (FreeDOS DISPLAY debe estar cargado)
MODO CON [:] [CP | CODEPAGE] REF [RESH] (necesita DISPLAY)
MODE CON [:] [CP | CODEPAGE] SEL [ECT] = número (necesita DISPLAY)
MODE CON [:] [CP | CODEPAGE] PREP [ARE] = ((codepage) filename) (necesita DISPLAY)
  Utilice PREP = ((, cp2, cp3,, cp5) ...) para preparar páginas de códigos en otros búferes.
MODO [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [, filas] (las filas pueden ser 25, 28, 43 o 50)
  Use 8, 14 o 16 como valor de 'filas' si solo desea cambiar la fuente.
MODO [CO40 | CO80 | ...], [R | L] [, T] (desplaza CGA hacia la izquierda / derecha, T es el modo interactivo)
MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = valor
  El valor puede ser: + o - para las cerraduras o un carácter para switchar.
MODE CON [:] [COLS = ...] [LINES = ...] (los valores posibles dependen de su hardware)
MODE CON [:] [RATE = ...] [DELAY = ...] (tasa predeterminada 20, demora predeterminada 1)
  La velocidad puede ser 1..32 para 2..30 caracteres / seg, el retardo puede ser 1..4 para 1 / 4..4 / 4 seg.

Por las mismas razones que con el código ASM que proporcioné, a menos que lo ejecutes en COMMAND.COM con DOSONLY agregado a tu archivo CONFIG.NT, la ventana volverá inmediatamente a su tamaño anterior una vez que MODE.COM salga.

Por último, como han dicho otros, también es posible modificar estas configuraciones simplemente haciendo clic derecho en la barra de título del símbolo del sistema y modificando Propiedades -> Diseño. De manera similar, puede establecer la resolución para cualquier acceso directo a CMD.EXE y archivos por lotes (haga clic con el botón derecho en el acceso directo -> Propiedades -> Diseño). Sin embargo, esto solo funciona para CMD.EXE, no para COMMAND.COM.

codificando con estilo
fuente
14

Un comando simple para arreglar el tamaño de la ventana que uso todo el tiempo:

wmic

Abrirá la línea de comandos de Instrumental de administración de Windows y eliminará los límites de tamaño. Luego ciérrelo con Ctrl+ C.

Mijacr
fuente
6

No sé la historia detrás de esto, pero este artículo de la lista de deseos del autor de PuTTy es una publicación interesante que explica los obstáculos técnicos involucrados con cualquier tipo de reemplazo de cmd.exe que no sea escaso:

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

No mencionas que estás buscando un reemplazo, pero si es así, también puedes ver algunos de los reemplazos de cmd.exe como Console 2 o Take Command de JP Software, etc. También he tenido buenas experiencias con PuTTy- Cyg, que le permite usar PuTTy como un shell cygwin.

Arrendajo
fuente
6

Si bien el ancho no está limitado como muestran otras respuestas, siempre me ha parecido extraño que uno pueda arrastrar y cambiar el tamaño de la altura con el mouse, pero no el ancho .

Creo que el ancho predeterminado de 80 caracteres está relacionado con la compatibilidad con programas antiguos que asumen que el terminal no tendrá más de 80 caracteres de ancho. Sin embargo, no creo que esta haya sido una razón realista durante una década más o menos.

Greg Hewgill
fuente
9
Tanto el ancho como el alto se pueden cambiar de tamaño, simplemente sucede que el ancho predeterminado de la ventana es igual al ancho del búfer. No puede hacer que la ventana sea más grande que el búfer, por lo que la única opción (con la configuración predeterminada de 80 columnas) es reducir el ancho.
efotinis
4

Como han señalado otros, no está limitado a 80 caracteres de ancho, pero supongo que por qué el valor predeterminado es de 80 caracteres sería que queda de los días de DOS, donde las pantallas CRT tenían 80 caracteres de ancho.

Ver también

Patrick Cuff
fuente
¿Puede el monitor moderno tener más de 80 caracteres en modo texto?
macropas
es posible que tenga que estar ejecutando con un modo framebuffer para que esto funcione (pero puedo estar equivocado, ha pasado un tiempo)
andersop
Hay algunos modos SVGA que tienen 132 caracteres de ancho sin usar un modo framebuffer, pero son compatibles de manera bastante desordenada. Uno de esos modos aparece en mi respuesta.
Codificación con estilo
3
Se remonta más allá: la razón por la que IBM hizo sus pantallas CRT de 80 columnas de ancho fue porque sus tarjetas perforadas tenían 80 columnas de ancho.
dan04
2

También puede usar una aplicación de terminal diferente, como Console2 , que le permite cambiar el tamaño de la ventana todo lo que desee (entre otras cosas, como la transparencia y la capacidad de usar cualquier fuente que desee). Es una gran aplicación, la cambié y ahora solo la uso cmd.execuando es absolutamente necesario.

Sasha Chedygov
fuente
1

Dado que se desplazará de izquierda a derecha, así como de arriba a abajo, lo primero que hago en un sistema es definir mi ancho como 180 y guardarlo. En general, eso es suficiente para que los rastros de pila no tengan que ajustarse en su mayor parte, pero no tanto como para que esté ocupando una tonelada de espacio.

Mientras lo hace, configure el tamaño vertical (búfer de desplazamiento hacia atrás) en todos los 9. Te alegrarás de haberlo hecho algún día.

Bill K
fuente
1

Porque MS valora la "compatibilidad con versiones anteriores" sobre muchas cosas y, en este caso, sospecho que es una creencia equivocada que de alguna manera pondrá nerviosa a la gente si no tiene su ventana estándar de 80 anchos.

Por supuesto, podría ser que estuviera programado para un ancho fijo de 80 caracteres cuando eso era prácticamente universal, y la configuración de propiedades adicionales era un poco complicada.

Draemon
fuente
1

ES limitado. Echale un vistazo. (Me refiero al tamaño de la ventana NO al búfer)

Verá que el ancho máximo que puede establecer es limitado pero varía según la resolución de su pantalla. Si su resolución está configurada en 1024 x 768, encontrará que solo puede llegar a 128 en el ancho del símbolo del sistema. 128/1024 = .125

encontrará que esa proporción es consistente en todos los ámbitos. Tengo una sesión RDP que se ejecuta a 2000x768 (en dos de mis tres monitores) y obtengo un ancho máximo de 250.

Ahora, eso en realidad resulta ser un poco más grande que el tamaño de su monitor de actaul, pero tengo tres monitores que ejecutan escritorios individuales. (en esencia, 3 resoluciones de 1024x768) y si quiero hacer algo TAN SENCILLO como extender un símbolo del sistema en 2 o más monitores, NO PUEDO. (Quiero hacerlo cuando hago cosas con rutas muy largas (diruse.exe / etc.) ...

-C


fuente
2
Si reduce el tamaño de fuente, puede obtener tamaños de ventana (relativamente) más grandes. Acabo de tener más de 300 de ancho en una pantalla de 1600x1200.
Michael Myers
Aún puede aumentar el ancho de su línea y desplazarse por la ventana. He hecho el mío de 160 o 180 de ancho desde los días de VGA.
Bill K
0

Esto no está cerrado. Por lo tanto, debe tenerse en cuenta que Windows Terminal ahora está cambiando todo esto:

https://github.com/microsoft/terminal https://www.theverge.com/2020/1/9/21059316/microsoft-windows-terminal-crt-effects-retro-search-tabs-features https: // devblogs.microsoft.com/commandline/windows-command-line-backgrounder/ https://github.com/microsoft/terminal/blob/master/doc/terminal-v1-roadmap.md https://www.microsoft.com / es-us / p / windows-terminal-preview / 9n0dx20hk701? activetab = pivot: overviewtab

rferrisx
fuente
-1

Porque mejorar la usabilidad y funcionalidad de cualquier cosa que requiera el desarrollo tipo Unix / GNU socavará a Windows como plataforma comercial para los socios de Microsoft. Evitar esto significa que los productos de otras grandes empresas para desarrolladores, como terminales mejorados y otros productos generales de terceros, como procesadores de texto, reproductores de vídeo, etc., no compiten con el software Unix / GNU existente. Sin esto, Windows no sería una plataforma rentable y Microsoft perdería su monopolio de escritorio.

Es por eso que el terminal apesta, no hay API POSIX, no hay soporte C99 en MSVC y la lista continúa. Para aclarar, las tecnologías y el desarrollo comunes de Unix / GNU no son compatibles intencionalmente para que las grandes empresas de software comercial no tengan que competir con ellos.

Matt Joiner
fuente