Чому Windows cmd.exe обмежений 80 символами?


104

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


2
Це вибір, як і багато інших речей - це вибір. Якщо у вас фіксований розмір, простіше спроектувати "ваш екран", оскільки ви точно знаєте межі. Недоліки очевидні, оскільки незалежно від того, який розмір буде обраний, це завжди буде неправильним для когось чи чогось. Поточний екран Windows CMD фактично був єдиним екраном ще за часів. І було не так багато резолюцій, і дуже мало високих резолюцій з цього приводу.
tvCa

Відповіді:


147

Це не так. Ви можете клацнути правою кнопкою миші на заголовку, вибрати властивості, а на вкладці "Макет" змінити розмір буфера екрана (ширина рядка та прокрутки) та розмір вікна (розмір вікна перегляду). Якщо ви розпочали cmd з ярлика, ці параметри можна зберегти для майбутніх сеансів.


2
Не забувайте шрифт / колір. Нічого не таке приємне, як повернення до деяких ретро-зелених екранів, коли я відкриваю свій командний рядок. 8 ^ D
Діллі-О

13
Ви маєте на увазі "не що інше, як змінити шрифт на консолі" hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy

5
Я завжди стрибаю і встановлюю ширину на 180, а прокрутка - на 9999. Це не так, як вам це потрібно дуже часто, але мені ніколи нічого не боляче (навіть за часів машин 128 Мб і коли вам це потрібно, Ви дійсно будете раді, що Ви встановите його перед рукою. Ширина - це особисте уподобання, мені не подобається бачити обертання ліній у моєму компіляторі, за винятком екстремальних умов, але інші ніколи не люблять прокручувати
Bill K

4
Збільшення висоти буфера екрана дуже недооцінене. Цей тип прокрутки занадто часто необхідний, щоб можна було повністю прочитати вихід програми на екран (якщо ви не використовуєте БІЛЬШЕ).
Кодування зі стилем

22
Ну так ... але ні. Ви не можете довільно змінити розмір вікна, перетягнувши край вікна, і ось ми в 2012 році, і воно досі не змінилося.
Алекс Б

108

Якщо ви володієте фобією миші, ви також можете просто ввести це всередині вікна cmd:

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

11
Це було дуже корисно в роботі із системним викликом "cmd / c ..." у додатку, який перевіряє розмір вікна для форматування його результатів. Щойно кинув "режим 200,50 &&" перед тим, як зателефонувати, і життя добре
Томас

Однак ви втрачаєте вертикальну прокрутку, принаймні, на Win7
golimar

44

Це не обмежується.

  1. Запустити cmd.exe
  2. Клацніть на значку у верхній лівій частині екрана.
  3. Виберіть Властивості
  4. Виберіть вкладку «Макет».
  5. Встановіть буфер і ширину вікон на все, що вам подобається.
  6. Натисніть кнопку ОК
  7. Виберіть Зберегти властивості для майбутнього ...
  8. Натисніть кнопку ОК.

Ви можете перевірити консоль . Це програма з відкритим кодом, яка дозволяє запускати кілька оболонок у середовищі з вкладками. Ви також можете встановити альфа-прозорість оболонок.


17

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

Хоча зворотна сумісність працює дуже жахливо. Я не думаю, що Microsoft досить ретельно ставився до їхньої реалізації, і я вважаю, що Microsoft є хлопчиком, який переглядає плакати, тому що новіші версії не працюватимуть на старих версіях. Багато не працює належним чином під COMMAND.COM, що значно саботує корисність, яку він має, не кажучи вже про те, що вам потрібно ввести DOSONLY, щоб деякі програми працювали належним чином, а також Microsoft видаляла корисні команди. Чесно кажучи, я не можу уявити, що Microsoft у великій пошані має "зворотну сумісність".

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

Як згадував jmucchiello, РЕЖИМ буде чудово працювати для зміни розміру вікна, якщо вам це подобається.

Налаштування системних пристроїв.

Послідовний порт: 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 = увімкнено]

Стан пристрою: РЕЖИМ [пристрій] [/ СТАТУС]

Перенаправлення друку: РЕЖИМ LPTn [:] = COMm [:]

Виберіть кодову сторінку: MODE CON [:] CP SELECT = yyy

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

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

Типова швидкість: РЕЖИМ CON [:] [RATE = r DELAY = d]

Якщо у вас CONFIG.NT увімкнено DOSONLY, проте, коли ви відкриваєте COMMAND.COM, він успадкує правильну роздільну здатність лінії стилю DOS від cmd.exe, але ви не можете викликати РЕЖИМ всередині COMMAND.COM. Якщо ви хочете змінити розмір всередині COMMAND.COM, вам доведеться використовувати 16-бітні інструкції зі збирання, наприклад:

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

НАЛАГОДЖУВАТИ
A100
MOV AX, 1112
INT 10
INT 20

Г
Q

Роздільна здатність ліній 132x60 (Без фреймбуфера, SVGA не працює. Не працює на картках ATI gfx, зазвичай працює на nVidia gfx-картах, afaict завжди працює на інтегрованих gfx-картах Intel.)

НАЛАГОДЖУВАТИ
A100
MOV AX, 4F02
MOV BX, 010C
INT 10
INT 20

Г Q

Якщо ви введете це на своєму COMMAND.COM, воно дасть вам вказане дозвіл. (Попередження: Якщо ваш монітор достатньо старий, щоб не підтримувати режим, ви можете закінчити його, знищивши його. Побічна примітка: Якщо ви можете запустити Windows, ваш монітор повинен бути добре. Відмова: Акцент на слід, і вас попередили , тож це не моя проблема, якщо ваш монітор обсмажується. ;-) Однак якщо ви користуєтеся цим без включення ДОСОЛЬНО, 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 від Eric Auer 2003-2005. Ліцензія: GPL (версія 12 травня 2005 р.)
РЕЖИМ [пристрій] [/ STA [TUS]] (показати стан одного чи всіх пристроїв)
РЕЖИМ LPTn [:] cols [, [рядки] [, повторний]] (cols або cpi, 6/8 lpi, повторний p або n)
РЕЖИМ LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...] (спроба: p нескінченно / n немає)
РЕЖИМ LPTn [:] = [COMn [:] | NUL] (перенаправлення даних принтера на послідовний порт або NUL)
РЕЖИМ COMn [:] бод, парність, дані, зупинка, повтор (пусті значення дозволені)
РЕЖИМ COMn [:] [BAUD [HARD] = ...] [PARITY = ...] [DATA = ...] [STOP = ...] [RETRY = ...]
  Бод може бути скорочений до унікального префікса, парність може бути o / e / n / s / m, the
  останні 2 означають пробіл / позначку, дані можуть бути 5..8, стоп 1..2. Повторне повторення!
  ПЛАНОВАНО: Повторити b / e / r -> зайнято / помилка / готово, якщо зайнято, p / n нескінченно / без спроби.
РЕЖИМ CON [:] [CP | CODEPAGE] [/ STA [TUS]] (FreeDOS DISPLAY повинен бути завантажений)
РЕЖИМ CON [:] [CP | CODEPAGE] REF [RESH] (потребує DISPLAY)
РЕЖИМ CON [:] [CP | CODEPAGE] SEL [ECT] = число (потрібно DISPLAY)
РЕЖИМ CON [:] [CP | CODEPAGE] PREP [ARE] = ((кодова сторінка) ім'я файлу) (потрібно DISPLAY)
  Використовуйте PREP = ((, cp2, cp3,, cp5) ...) для підготовки попередніх сторінок коду в інших буферах.
РЕЖИМ [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [, рядки] (рядки можуть бути 25, 28, 43 або 50)
  Використовуйте 8, 14 або 16 як значення "рядків", якщо ви хочете лише змінити шрифт.
РЕЖИМ [CO40 | CO80 | ...], [R | L] [, T] (зсув CGA вліво / вправо, T - інтерактивний режим)
РЕЖИМ CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = значення
  Значення може бути: + або - для блокування або символу для комутатора.
РЕЖИМ CON [:] [COLS = ...] [LINES = ...] (можливі значення залежать від вашого обладнання)
РЕЖИМ CON [:] [RATE = ...] [DELAY = ...] (ставка за замовчуванням 20, затримка за замовчуванням 1)
  Швидкість може становити 1..32 за 2..30 char / sec, затримка може становити 1..4 за 1 / 4..4 / 4 sec.

З тих же причин, що і з наданим мені кодом 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, як-от Консоль 2 або Програми JP Software Take Take Command тощо. У мене також був хороший досвід роботи з PuTTy- Cyg, що дозволяє використовувати PuTTy як оболонку cygwin.


6

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

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


9
Як ширину, так і висоту можна змінити розмір, просто трапляється, що ширина вікна за замовчуванням дорівнює ширині буфера. Ви не можете зробити вікно більшим за буфер, тому єдиним варіантом (з налаштуваннями 80 стовпців за замовчуванням) є зменшення ширини.
efotinis

4

Як зазначають інші, вона не обмежується 80 символами в ширину, але я гадаю, чому вона має значення 80 знаків, це те, що це залишилося від DOS днів, коли дисплей CRT був шириною 80 символів.

Дивитися також


Чи може сучасний монітор бути більше 80 символів у текстовому режимі?
макропас

вам, можливо, доведеться працювати в режимі фреймбуфера, щоб зробити цю роботу (але я можу помилятися,
минув

Існує кілька режимів SVGA, шириною 132 символи, не використовуючи режим кадрування кадрів, але вони досить випадково підтримуються. Один із таких режимів вказаний у моїй відповіді.
Кодування зі стилем

3
Це іде ще більше: причина, чому IBM зробила CRT-дисплеї шириною 80 стовпців, полягала в тому, що її перфокартки були шириною 80 стовпців.
dan04

2

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


1

Оскільки вона буде прокручуватися вліво-вправо, а також вгору і вниз, перше, що я роблю в системі, - це визначити мою ширину як 180 і зберегти її. Цього в цілому достатньо, щоб сліди стека не мали обертатись здебільшого, але не настільки, щоб ви витрачали тонну місця.

Поки ви перебуваєте в ньому, встановіть вертикальний розмір (буфер прокрутки) на всі 9. Ви будете раді, що ви зробили якийсь день.


1

Оскільки в MS багато цінностей "зворотна сумісність", і в цьому випадку я підозрюю, що це неправильне переконання, що воно якось буде нервувати людей, якщо вони не мають свого стандартного 80 широкого вікна.

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


1

Це обмежено. Перевір. (Я маю на увазі розмір вікна НЕ буфер)

Ви побачите, що максимальна ширина, яку ви можете встановити, обмежена, але змінюється залежно від роздільної здатності екрана. Якщо ваша роздільна здатність встановлена ​​на 1024 x 768, ви побачите, що ви можете отримати лише 128 на ширині командного рядка. 128/1024 = .125

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

Тепер цей акумулятор виявляється трохи більшим, ніж розмір вашого монітора actaul, але у мене є три монітори на всіх окремих робочих столах. (так по суті, 3 роздільної здатності 1024x768), і якщо я хочу зробити щось ТАКНО ПРОСТО, як розтягнути командний рядок на 2 або більше моніторів, я не можу. (Я хочу, щоб робити речі з дуже довгими шляхами (diruse.exe / тощо) ...

-c


2
Якщо ви зменшите розмір шрифту, ви можете отримати (відносно) більші розміри вікон. На екрані 1600x1200 я отримав понад 300 завширшки.
Майкл Майерс

Ви все ще можете збільшити ширину лінії та прокрутити вікно. Я зробив шахту 160 або 180 завширшки з часів VGA.
Білл К

0

-1

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

Ось чому термінал смокче, в MSVC немає жодної POSIX API, немає підтримки C99 і список продовжується. Для уточнення, загальні технології Unix / GNU навмисно не підтримуються, так що великі комерційні програми програмного забезпечення не повинні конкурувати з ними.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.