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


104

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


2
Это выбор, как и многое другое. Если у вас фиксированный размер, проще спроектировать «свой экран», потому что вы точно знаете пределы. Недостатки очевидны: какой бы размер ни был выбран, он всегда будет неправильным для кого-то или чего-то. Текущий экран Windows CMD фактически БЫЛ единственным экраном в те дни. И разрешений было не так много, да и в высоком разрешении очень мало.
tvCa

Ответы:


147

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


2
Не забывайте шрифт / цвет. Нет ничего лучше, чем вернуться к некоторым ретро-зеленым экранам, когда я открываю командную строку. 8 ^ D
Dillie-O

13
Вы имеете в виду «ничего, кроме изменения шрифта на consolas» hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Джимми

5
Я всегда прыгаю и устанавливаю ширину на 180 и прокрутку на 9999. Не то чтобы вам это нужно очень часто, но у меня никогда ничего не было больно (даже во времена 128-мегабайтных машин и единственного раза, когда вам это нужно, вы ДЕЙСТВИТЕЛЬНО будете рады, что установили его заранее. Ширина - это личное предпочтение, мне не нравится видеть перенос строк из моего компилятора, кроме как в экстремальных условиях, но другие никогда не любят прокручивать.
Билл К.

4
Увеличение высоты буфера экрана очень недооценено. Такой вид прокрутки слишком часто необходим, чтобы иметь возможность полностью прочитать вывод программы на экране (если вы не используете БОЛЬШЕ).
Coding With Style

22
Ну да ... но нет. Вы не можете произвольно изменять размер окна, перетаскивая край окна, и вот мы в 2012 году, и он все еще не изменился.
Alex B

108

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

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

11
Это было очень полезно при работе с системным вызовом «cmd / c ...» в приложении, которое проверяет размер окна для форматирования его вывода. Просто подбросил «режим 200,50 &&» перед звонком, и жизнь хороша
Томас

Однако вы теряете вертикальную прокрутку, по крайней мере, на Win7
golimar 01

44

Это не ограничено.

  1. Запускаем cmd.exe
  2. Щелкните значок в верхнем левом углу экрана.
  3. Выбрать свойства
  4. Выберите вкладку Layout.
  5. Установите любую ширину буфера и окна.
  6. Нажмите ОК
  7. Выберите Сохранить свойства на будущее ...
  8. Щелкните ОК.

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


17

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

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

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

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

Настраивает системные устройства.

Последовательный порт: 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]

Статус устройства: MODE [устройство] [/ STATUS]

Перенаправленная печать: MODE LPTn [:] = COMm [:]

Выберите кодовую страницу: MODE CON [:] CP SELECT = yyy

Статус кодовой страницы: MODE CON [:] CP [/ STATUS]

Режим отображения: MODE CON [:] [COLS = c] [LINES = n]

Типовая скорость: MODE CON [:] [RATE = r DELAY = d]

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

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

ОТЛАЖИВАТЬ
A100
MOV AX, 1112
ИНТ 10
ИНТ 20

грамм
Q

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

ОТЛАЖИВАТЬ
A100
MOV AX, 4F02
MOV BX, 010C
ИНТ 10
ИНТ 20

грамм Q

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

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

Новый режим FreeDOS от Эрика Ауэра 2003-2005 гг. Лицензия: GPL. (версия 12may2005)
MODE [устройство] [/ STA [TUS]] (показать состояние одного или всех устройств)
MODE LPTn [:] cols [, [lines] [, retry]] (cols или cpi, 6/8 lpi, повторить p или n)
MODE LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...] (повтор: p бесконечно / n нет)
MODE LPTn [:] = [COMn [:] | NUL] (перенаправить данные принтера на последовательный порт или NUL)
MODE COMn [:] скорость, четность, данные, остановка, повтор (допускаются пустые значения)
MODE COMn [:] [BAUD [HARD] = ...] [PARITY = ...] [DATA = ...] [STOP = ...] [RETRY = ...]
  Скорость передачи может быть сокращена до уникального префикса, четность может быть o / e / n / s / m,
  последние 2 означают пробел / метку, данные могут быть 5..8, стоп 1..2. Повторная попытка игнорируется!
  ЗАПЛАНИРОВАНО: Retry b / e / r -> занято / ошибка / готово, если занято, p / n бесконечное / без повторов.
MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]] (ДИСПЛЕЙ FreeDOS должен быть загружен)
MODE CON [:] [CP | CODEPAGE] REF [RESH] (требуется ОТОБРАЖЕНИЕ)
MODE CON [:] [CP | CODEPAGE] SEL [ECT] = число (требуется ОТОБРАЖЕНИЕ)
MODE CON [:] [CP | CODEPAGE] PREP [ARE] = ((кодовая страница) имя файла) (требуется ОТОБРАЖЕНИЕ)
  Используйте PREP = ((, cp2, cp3,, cp5) ...) для подготовки кодовых страниц в других буферах.
MODE [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [, строки] (строк может быть 25, 28, 43 или 50)
  Используйте 8, 14 или 16 в качестве значения «строк», если вы хотите изменить только шрифт.
MODE [CO40 | CO80 | ...], [R | L] [, T] (сдвиг CGA влево / вправо, T - интерактивный режим)
MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = значение
  Значение может быть: + или - для замков или символ для свитчара.
MODE CON [:] [COLS = ...] [LINES = ...] (возможные значения зависят от вашего оборудования)
MODE CON [:] [RATE = ...] [DELAY = ...] (скорость по умолчанию 20, задержка по умолчанию 1)
  Скорость может быть 1..32 для 2..30 символов / сек, задержка может быть 1..4 для 1 / 4..4 / 4 сек.

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

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


14

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

wmic

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


6

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

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

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


6

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

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


9
И ширину, и высоту можно изменять, просто так получилось, что ширина окна по умолчанию равна ширине буфера. Вы не можете сделать окно больше, чем буфер, поэтому единственный вариант (с настройкой по умолчанию 80 столбцов) - уменьшить ширину.
efotinis

4

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

Смотрите также


Может ли современный монитор быть более 80 символов в текстовом режиме?
macropas

вам, возможно, придется использовать режим фреймбуфера, чтобы эта работа работала (но я могу ошибаться, это было давно.)
andersop

Есть несколько режимов SVGA шириной 132 символа без использования режима фреймбуфера, но они поддерживаются бессистемно. Один из этих режимов указан в моем ответе.
Coding With Style

3
Он идет еще дальше: IBM сделала свои ЭЛТ-дисплеи шириной 80 столбцов потому, что перфокарты имели ширину 80 столбцов.
dan04

2

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


1

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

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


1

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

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


1

Это ограничено. Проверить это. (Я имею в виду размер окна НЕ буфер)

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

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

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

-c


2
Если вы уменьшите размер шрифта, вы можете получить (относительно) больший размер окна. Я только что получил более 300 ширины на экране 1600x1200.
Майкл Майерс

Вы по-прежнему можете увеличить ширину линии и прокручивать окно. Я сделал свою ширину 160 или 180 со времен VGA.
Bill K

0

-1

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.