Подтвердить что ты не робот

Почему Windows cmd.exe ограничен шириной до 80 символов?

Мне нравится растягивать мой терминал на unix. Какова история или причина командной строки Windows lame?

4b9b3361

Ответ 1

Это не так. Вы можете щелкнуть правой кнопкой мыши по строке заголовка, выбрать свойства, а на вкладке "Макет" изменить размер буфера экрана (ширина строки и прокрутка) и размер окна (размер видового экрана). Если вы запустили cmd из ярлыка, вы можете сохранить эти настройки для будущих сеансов.

Ответ 2

Если вы являетесь фобией мыши, вы также можете просто ввести его в окне cmd:

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

Ответ 3

Это не ограничивается.

  • Запустите cmd.exe
  • Нажмите на значок в левой верхней части экрана.
  • Выберите "Свойства"
  • Выберите вкладку "Макет".
  • Установите ширину буфера и окна на все, что вам нравится.
  • Нажмите "ОК"
  • Выберите Сохранить свойства для будущего...
  • Нажмите "ОК".

Возможно, вы захотите проверить Console. Это приложение с открытым исходным кодом, которое позволяет запускать несколько оболочек в среде с вкладками. Вы также можете установить альфа-прозрачность оболочек.

Ответ 4

RE: Потому что значение MS "обратная совместимость" над многими вещами, и в этом случае я подозреваю, что это неуместное убеждение, что оно каким-то образом убьет людей, если у них нет стандартного широкоугольного окна.

Обратная совместимость работает довольно ужасно. Я не думаю, что Microsoft довольно тщательно изучила их реализацию, и я верю, что Microsoft - мальчик-плакат, чтобы убедиться, что более новые версии не будут работать в более старых версиях. Многое не работает должным образом в COMMAND.COM, что значительно саботирует полезность, которой он обладает, не говоря уже о том, что вам нужно войти в DOSONLY, чтобы некоторые программы запускались правильно, а Microsoft удаляла полезные команды. Честно говоря, я не могу представить, что Microsoft придерживается "обратной совместимости" в значительной степени.

Кроме того, я думаю, что реальная причина, по которой длина строки составляет 80 столбцов, связана с тем, что большинство программ в командной строке и т.д. работают в предположении, что пользователь закрыт в 80 столбце, что означает, что увеличение ширина может привести к ошибкам форматирования или, что еще хуже, может вообще разорвать программы.

Как упоминалось в jmucchiello, MODE отлично работает для изменения размера окна, если вам это нравится.

Configures system devices.

Serial port:       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]

Device Status:     MODE [device] [/STATUS]

Redirect printing: MODE LPTn[:]=COMm[:]

Select code page:  MODE CON[:] CP SELECT=yyy

Code page status:  MODE CON[:] CP [/STATUS]

Display mode:      MODE CON[:] [COLS=c] [LINES=n]

Typematic rate:    MODE CON[:] [RATE=r DELAY=d]

Если у вас включен DOSONLY на вашем CONFIG.NT, однако, когда вы открываете COMMAND.COM, он наследует правильное разрешение строки в стиле DOS из cmd.exe, но вы не можете вызывать MODE изнутри COMMAND.COM. Если вы хотите изменить размер внутри COMMAND.COM, вам придется использовать 16-разрядные инструкции по сборке, например:

Разрешение линии 80x50 (без фреймбуфера, SVGA, практически не поддерживается).

DEBUG
A100
MOV AX,1112
INT 10
INT 20

G
Q

Разрешение 132x60 строк (Нет фреймбуфера, требуется SVGA. Не работает на картах ATI gfx, как правило, работает на картах nVidia gfx, afaict всегда работает на интегрированных gfx-картах Intel).

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

G Q

Если вы введете это на свой COMMAND.COM, он предоставит вам указанное разрешение. (Предупреждение: если ваш монитор достаточно древний, чтобы не поддерживать режим, вы можете его уничтожить. Примечание: если вы можете запускать Windows, ваш монитор должен быть в порядке. Отказ от ответственности: Акцент должен быть, и вы были предупреждены, так что это не моя проблема, если ваш монитор жарит.;-) Однако, если вы используете это без включенной функции DOSONLY, COMMAND.COM изменит размер до прежнего размера, как только приложение (в этом случае, если вы не написали его на файл и выполнено, что DEBUG).

В качестве альтернативы вы можете использовать FreeDOS MODE.COM, который будет работать правильно, если COMMAND.COM установлен в DOSONLY. Вы можете либо вытащить его из образа диска на официальном сайте (freedos.org), либо получить его на http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/.

New FreeDOS MODE by Eric Auer 2003-2005. License: GPL.   (version 12may2005)
MODE [device] [/STA[TUS]]                (show status of one or all devices)
MODE LPTn[:] cols[,[lines][,retry]]     (cols or cpi, 6/8 lpi, retry p or n)
MODE LPTn[:] [COLS=...] [LINES=...] [RETRY=...] (retry: p infinite / n none)
MODE LPTn[:]=[COMn[:]|NUL]     (redirect printer data to serial port or NUL)
MODE COMn[:] baud,parity,data,stop,retry              (empty values allowed)
MODE COMn[:] [BAUD[HARD]=...] [PARITY=...] [DATA=...] [STOP=...] [RETRY=...]
  Baud can be abbreviated to unique prefix,  parity can be o/e/n/s/m,  the
  latter 2 mean space/mark, data can be 5..8, stop 1..2. Retry is IGNORED!
  PLANNED: Retry b/e/r -> busy/error/ready if busy, p/n infinite/no retry.
MODE CON[:] [CP|CODEPAGE] [/STA[TUS]]       (FreeDOS DISPLAY must be loaded)
MODE CON[:] [CP|CODEPAGE] REF[RESH]                          (needs DISPLAY)
MODE CON[:] [CP|CODEPAGE] SEL[ECT]=number                    (needs DISPLAY)
MODE CON[:] [CP|CODEPAGE] PREP[ARE]=((codepage) filename)    (needs DISPLAY)
  Use PREP=((,cp2,cp3,,cp5) ...) to prep codepages in other buffers.
MODE [40|80|BW40|BW80|CO40|CO80|MONO][,rows]  (rows can be 25, 28, 43 or 50)
  Use 8, 14 or 16 as 'rows' value if you only want to change the font.
MODE [CO40|CO80|...],[R|L][,T] (shift CGA left/right, T is interactive mode)
MODE CON[:] [NUMLOCK|CAPSLOCK|SCROLLLOCK|SWITCHAR]=value
  Value can be: + or - for the locks or a character for switchar.
MODE CON[:] [COLS=...] [LINES=...] (possible values depend on your hardware)
MODE CON[:] [RATE=...] [DELAY=...]        (default rate 20, default delay 1)
  Rate can be 1..32 for 2..30 char/sec,  delay can be 1..4 for 1/4..4/4 sec.

По тем же причинам, что и с кодом ASM, который я предоставил, если вы не выполнили его в COMMAND.COM с DOSONLY, добавленным в ваш файл CONFIG.NT, окно немедленно отскочит до своего прежнего размера после выхода из режима MODE.COM.

Наконец, как заявили другие, также можно изменить эти параметры, просто щелкнув правой кнопкой мыши строку заголовка командной строки и изменив Properties → Layout. Аналогично, вы можете установить разрешение для любых ярлыков для CMD.EXE и пакетных файлов (щелкните правой кнопкой мыши ярлык → Свойства → Макет). Однако это работает только для CMD.EXE, но не COMMAND.COM.

Ответ 5

Простая команда для исправления размера окна, который я использую все время:

wmic

Он откроет командную строку инструментария управления Windows и удалит ограничения по размеру. Затем просто закройте его с помощью Ctrl + C.

Ответ 6

Я не знаю истории, стоящей за ней, но этот элемент списка пожеланий от автора PuTTy - интересное сообщение, объясняющее технические препятствия, связанные с заменой любого типа cmd.exe, который не является хромым:

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

Вы не упоминаете, что ищете замену, но если вы так же можете проверить некоторые из заметок cmd.exe, например Консоль 2 или JP Software Take Command и т.д. У меня также был хороший опыт с PuTTy-Cyg, который позволяет использовать PuTTy как оболочку cygwin.

Ответ 7

Пока ширина не ограничена, как показывают другие ответы, мне всегда было странно, что можно перетаскивать и изменять размер с помощью мыши, но не шириной.

Я думаю, что ширина 80 символов по умолчанию связана с совместимостью со старыми программами, предполагающими, что терминал будет не более 80 символов. Я не думаю, что это была реальная причина в течение десятилетия или около того.

Ответ 8

Как указывали другие, он не ограничивается 80 символами в ширину, но я предполагаю, что по умолчанию он по умолчанию должен составлять 80 символов, так это то, что он остался после дней DOS, когда дисплеи CRT имели ширину 80 символов.

См. также

Ответ 9

Вы также можете использовать другое приложение терминала, такое как Console2, которое позволяет вам изменять размер окна всего, что вы хотите (между прочим, например, прозрачность и возможность использовать любой шрифт, который вам нужен). Это отличное приложение, я переключился на него, и теперь я использую cmd.exe, когда мне абсолютно нужно.

Ответ 10

Потому что значение MS "обратная совместимость" над многими вещами, и в этом случае я подозреваю, что это неуместное убеждение, что оно каким-то образом убьет людей, если у них нет стандартного широкоугольного окна.

Конечно, это могло быть так, что он был запрограммирован на фиксированную ширину 80 символов, когда это было довольно универсально, а дополнительные настройки свойств были немного взлома.

Ответ 11

Он ограничен. Проверьте это. (Я имею в виду размер окна NOT buffer)

Вы найдете, что максимальная ширина, которую вы можете установить, ограничена, но зависит от вашего разрешения экрана. Если ваше разрешение установлено на 1024 x 768, вы обнаружите, что вы можете получить только 128 в ширину командной строки. 128/1024 = 0,125

вы увидите, что отношение должно быть согласованным по всем направлениям. У меня есть сеанс RDP, работающий в 2000x768 (через два из моих трех мониторов) и максимальная ширина 250.

Теперь этот actaully окажется немного больше, чем ваш размер монитора actaul, но у меня есть три монитора, на которых работают отдельные настольные компьютеры. (по сути, 3 разрешения 1024x768), и если я хочу сделать что-то ТАКОЕ ПРОСТОЕ, как растянуть командную строку через 2 или более мониторов, я НЕ МОЖЕТ. (Я хочу, когда делаю вещи с очень длинными путями (diruse.exe/etc.)...

-c

Ответ 12

Поскольку он будет прокручиваться влево и вправо, а также вверх и вниз, самое первое, что я делаю в системе, - это определить мою ширину как 180 и сохранить ее. Это в целом достаточно, чтобы трассировки стека не приходилось обертывать по большей части, но не настолько, чтобы вы отбрасывали тонну пространства.

Пока вы на нем, установите вертикальный размер (буфер прокрутки) на все 9. Вы будете рады, что однажды сделали это.

Ответ 13

Поскольку улучшение удобства и функциональности всего, что требует разработка Unix/GNU, подрывает Windows как коммерческую платформу для партнеров Microsoft. Предотвращение этого означает, что продукты других крупных компаний для разработчиков, такие как улучшенные терминалы и другие общие сторонние продукты, такие как текстовые процессоры, видеоплееры и т.д., Не конкурируют с существующим программным обеспечением Unix/GNU. Без этого Windows не будет прибыльной платформой, и Microsoft потеряет свою монополию на рабочем столе.

Вот почему терминал отстой, нет API POSIX, нет поддержки C99 в MSVC, и список продолжается. Чтобы уточнить, общие технологии Unix/GNU и разработка намеренно не поддерживаются, поэтому крупные коммерческие объекты программного обеспечения не должны конкурировать с ними.