Dlaczego szerokość pliku cmd.exe w systemie Windows jest ograniczona do 80 znaków?


104

Uwielbiam rozciągać mój terminal na unixie. Jaka jest historia lub powód, dla którego wiersz poleceń systemu Windows jest lame?


2
To wybór, tak jak wiele innych rzeczy to wybory. Jeśli masz stały rozmiar, łatwiej jest zaprojektować „swój ekran”, ponieważ dokładnie znasz ograniczenia. Wady są oczywiste, ponieważ niezależnie od wybranego rozmiaru, zawsze będzie źle dla kogoś lub dla czegoś. Obecny ekran CMD systemu Windows BYŁ właściwie jedynym ekranem w tamtych czasach. Dostępnych było niewiele rozdzielczości i bardzo mało wysokiej rozdzielczości, jeśli o to chodzi.
tvCa

Odpowiedzi:


147

Tak nie jest. Możesz kliknąć pasek tytułu prawym przyciskiem myszy, wybrać właściwości, a na karcie „Układ” zmienić rozmiar bufora ekranu (szerokość linii i przewijanie do tyłu) oraz rozmiar okna (rozmiar widoku). Jeśli uruchomiłeś cmd ze skrótu, możesz zapisać te ustawienia na przyszłe sesje.


2
Nie zapomnij o czcionce / kolorze. Nie ma nic tak przyjemnego, jak powrót do zielonych ekranów w stylu retro, gdy otwieram wiersz polecenia. 8 ^ D
Dillie-O

13
Masz na myśli „nic innego jak zmiana czcionki na consolas” hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy,

5
Zawsze wskakuję i ustawiam szerokość na 180, a przewijam na 9999. Nie jest tak, że potrzebujesz tego bardzo często, ale nigdy nie miałem, żeby cokolwiek boli (nawet w czasach maszyn 128mb i raz tego potrzebujesz, NAPRAWDĘ będziesz zadowolony, że ustawiłeś to wcześniej. Szerokość jest osobistą preferencją, nie lubię oglądać zawijania linii z mojego kompilatora z wyjątkiem ekstremalnych warunków, ale inni nie lubią przewijać.
Bill K

4
Zwiększenie wysokości bufora ekranu jest bardzo niedoceniane. Tego rodzaju przewijanie jest zbyt często konieczne, aby móc w pełni odczytać wynik programu na ekranie (chyba że używasz WIĘCEJ).
Kodowanie w stylu

22
Cóż, tak ... ale nie. Nie możesz dowolnie zmieniać rozmiaru okna, przeciągając krawędź okna, a oto jesteśmy w 2012 roku i nadal się nie zmieniło.
Alex B

108

Jeśli masz lęk przed myszami, możesz po prostu wpisać to w oknie cmd:

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

11
Było to bardzo pomocne w radzeniu sobie z wywołaniem systemowym „cmd / c ...” w aplikacji, która sprawdza rozmiar okna pod kątem formatowania danych wyjściowych. Po prostu rzuciłem „tryb 200, 50 &&” przed wezwaniem i życie jest dobre
Thomas,

Jednak tracisz przewijanie w pionie, przynajmniej na Win7
golimar

44

To nie jest ograniczone.

  1. Uruchom cmd.exe
  2. Kliknij ikonę w lewym górnym rogu ekranu.
  3. Wybierz Właściwości
  4. Wybierz kartę Układ.
  5. Ustaw bufor i szerokość okna na dowolne.
  6. Kliknij OK
  7. Wybierz Zapisz właściwości na przyszłość ...
  8. Kliknij OK.

Możesz sprawdzić Console . Jest to aplikacja typu open source, która umożliwia uruchamianie wielu powłok w środowisku z kartami. Możesz także ustawić przezroczystość alfa muszli.


17

RE: Ponieważ MS ceni „wsteczną kompatybilność” ponad wiele rzeczy iw tym przypadku podejrzewam, że jest to błędne przekonanie, że w jakiś sposób denerwuje ludzi, jeśli nie mają standardowego okna o szerokości 80 stopni.

Jednak kompatybilność wsteczna działa dość okropnie. Nie wyobrażam sobie, że Microsoft był dość dokładny, jeśli chodzi o ich implementację i uważam, że Microsoft jest chłopcem od plakatów, który upewnia się, że nowsze wersje nie będą działać na starszych wersjach. Wiele nie działa poprawnie pod COMMAND.COM, co znacznie szkodzi jego użyteczności, nie wspominając o tym, że musisz wprowadzić DOSONLY, aby niektóre programy działały poprawnie, a Microsoft usuwa przydatne polecenia. Szczerze mówiąc, nie mogę sobie wyobrazić, aby Microsoft przywiązywał dużą wagę do „wstecznej zgodności”.

Co więcej, myślę, że prawdziwym powodem, dla którego długość linii wynosi standardowo 80 kolumn, jest to, że większość programów wiersza poleceń itp. Działa przy założeniu, że użytkownik jest ograniczony do 80-kolumnowego znaku zachęty, co oznacza, że ​​zwiększenie szerokości może spowodować błędy formatowania lub, co gorsza, mogą całkowicie zepsuć programy.

Jak wspomniał jmucchiello, TRYB będzie działał dobrze przy zmianie rozmiaru okna, jeśli masz na to ochotę.

Konfiguruje urządzenia systemowe.

Port szeregowy: 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]

Stan urządzenia: TRYB [urządzenie] [/ STATUS]

Drukowanie przekierowane: TRYB LPTn [:] = COMm [:]

Wybierz stronę kodową: MODE CON [:] CP SELECT = yyy

Stan strony kodowej: MODE CON [:] CP [/ STATUS]

Tryb wyświetlania: MODE CON [:] [COLS = c] [LINES = n]

Stawka typematyczna: MODE CON [:] [RATE = r DELAY = d]

Jeśli jednak na CONFIG.NT włączono opcję DOSONLY, po otwarciu COMMAND.COM odziedziczy on właściwą rozdzielczość linii w stylu DOS z cmd.exe, ale nie można wywołać TRYBU z poziomu COMMAND.COM. Jeśli chcesz zmienić rozmiar wewnątrz COMMAND.COM, będziesz musiał użyć 16-bitowych instrukcji asemblacji, na przykład:

Rozdzielczość liniowa 80x50 (bez bufora ramki, bez SVGA, praktycznie uniwersalna obsługa).

ODPLUSKWIĆ
A100
MOV AXE, 1112
WEWN 10
WEWN 20

sol
Q

Rozdzielczość linii 132x60 (bez bufora ramki, wymaga SVGA. Nie działa na kartach ATI gfx, zwykle działa na kartach nVidia gfx, afaict zawsze działa na zintegrowanych kartach Intel).

ODPLUSKWIĆ
A100
MOV AX, 4F02
MOV BX, 010C
WEWN 10
WEWN 20

sol Q

Jeśli wpiszesz to na swoim COMMAND.COM, otrzymasz określoną rozdzielczość. (Ostrzeżenie: jeśli Twój monitor jest na tyle stary, że nie obsługuje tego trybu, możesz skończyć z jego zniszczeniem. Uwaga dodatkowa: jeśli możesz uruchomić system Windows, monitor powinien działać prawidłowo. Zastrzeżenie: Nacisk na powinien i zostałeś ostrzeżony , więc to nie mój problem, jeśli twój monitor się smaży. ;-) Jednak jeśli używasz tego bez włączonego DOSONLY, COMMAND.COM zmieni rozmiar z powrotem do poprzedniego rozmiaru, gdy tylko aplikacja (w tym przypadku, chyba że napisałeś to do plik i wykonany, DEBUG) kończy działanie.

Alternatywnie, możesz użyć MODE.COM FreeDOS, który będzie działał poprawnie pod COMMAND.COM ustawionym na DOSONLY. Możesz go pobrać z obrazu dysku na oficjalnej stronie internetowej (freedos.org) lub pobrać pod adresemhttp://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/ .

Nowy TRYB FreeDOS autorstwa Erica Auera 2003-2005. Licencja: GPL. (wersja 12 maja 2005)
MODE [urządzenie] [/ STA [TUS]] (pokaż stan jednego lub wszystkich urządzeń)
MODE LPTn [:] cols [, [lines] [, retry]] (cols lub cpi, 6/8 lpi, retry p lub n)
TRYB LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...] (ponów: p nieskończone / n brak)
TRYB LPTn [:] = [COMn [:] | NUL] (przekierowanie danych drukarki do portu szeregowego lub NUL)
MODE COMn [:] baud, parzystość, dane, stop, ponów (dozwolone wartości puste)
MODE COMn [:] [BAUD [HARD] = ...] [PARITY = ...] [DATA = ...] [STOP = ...] [RETRY = ...]
  Baud można skrócić do unikalnego prefiksu, parzystość może być o / e / n / s / m,
  ostatnie 2 oznacza spację / znak, dane mogą być 5..8, stop 1..2. Ponowna próba jest Zignorowana!
  PLANOWANE: Ponów próbę b / e / r -> zajęty / błąd / gotowy, jeśli zajęty, p / n nieskończony / brak ponownych prób.
MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]] (FreeDOS DISPLAY musi być załadowany)
MODE CON [:] [CP | CODEPAGE] REF [RESH] (wymaga WYŚWIETLANIA)
MODE CON [:] [CP | CODEPAGE] SEL [ECT] = liczba (wymaga WYŚWIETLANIA)
MODE CON [:] [CP | CODEPAGE] PREP [ARE] = ((strona kodowa) nazwa_pliku) (wymaga WYŚWIETLANIA)
  Użyj PREP = ((, cp2, cp3,, cp5) ...), aby przygotować strony kodowe w innych buforach.
MODE [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [, rzędy] (wiersze mogą mieć 25, 28, 43 lub 50)
  Jeśli chcesz zmienić tylko czcionkę, użyj wartości 8, 14 lub 16 jako wartości „wierszy”.
MODE [CO40 | CO80 | ...], [R | L] [, T] (przesuń CGA w lewo / w prawo, T to tryb interaktywny)
MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = wartość
  Wartością może być: + lub - dla zamków lub znak dla switchar.
MODE CON [:] [COLS = ...] [LINES = ...] (możliwe wartości zależą od sprzętu)
MODE CON [:] [RATE = ...] [DELAY = ...] (domyślna szybkość 20, domyślne opóźnienie 1)
  Szybkość może wynosić 1–32 dla 2–30 znaków / s, opóźnienie 1–4 dla 1 / 4–4 / 4 sek.

Z tych samych powodów, co w przypadku kodu ASM, który podałem, chyba że wykonasz go w COMMAND.COM z DOSONLY dodanym do pliku CONFIG.NT, okno natychmiast powróci do poprzedniego rozmiaru po zamknięciu MODE.COM.

Wreszcie, jak powiedzieli inni, można również zmodyfikować te ustawienia, po prostu klikając prawym przyciskiem myszy pasek tytułu wiersza polecenia i modyfikując Właściwości -> Układ. Podobnie możesz ustawić rozdzielczość dla dowolnych skrótów do CMD.EXE i plików wsadowych (kliknij prawym przyciskiem myszy skrót -> Właściwości -> Układ). Działa to tylko dla CMD.EXE, ale nie dla COMMAND.COM.


14

Proste polecenie, aby naprawić rozmiar okna, którego używam cały czas:

wmic

Otworzy się wiersz poleceń Instrumentacji zarządzania Windows i usunie ograniczenia rozmiaru. Następnie po prostu zamknij go za pomocą Ctrl+ C.


6

Nie znam historii, która za tym stoi, ale ta pozycja na liście życzeń od autora PuTTy jest interesującym postem, który wyjaśnia techniczne przeszkody związane z każdym rodzajem zamiennika cmd.exe, który nie jest kiepski:

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

Nie wspominasz, że szukasz zamiennika, ale jeśli tak, możesz również sprawdzić niektóre zamienniki cmd.exe, takie jak Console 2 lub Take Command firmy JP Software itp. Mam też dobre doświadczenia z PuTTy- Cyg, który pozwala używać PuTTy jako powłoki cygwin.


6

Chociaż szerokość nie jest ograniczona, jak pokazują inne odpowiedzi, zawsze wydawało mi się dziwne, że można przeciągać i zmieniać wysokość za pomocą myszy, ale nie szerokości .

Myślę, że domyślna szerokość 80 znaków jest związana ze zgodnością ze starymi programami, które zakładają, że terminal nie będzie miał więcej niż 80 znaków. Nie wydaje mi się jednak, żeby to był realistyczny powód od około dekady.


9
Można zmieniać zarówno szerokość jak i wysokość, zdarza się, że domyślna szerokość okna jest równa szerokości bufora. Nie można zwiększyć rozmiaru okna niż bufor, więc jedyną opcją (przy domyślnym ustawieniu 80 kolumn) jest zmniejszenie szerokości.
efotinis

4

Jak zauważyli inni, nie ogranicza się do szerokości 80 znaków, ale przypuszczam, dlaczego domyślnie jest to 80 znaków, byłoby to, że zostało to z czasów DOS, kiedy wyświetlacze CRT miały 80 znaków szerokości.

Zobacz też


Czy nowoczesny monitor może mieć więcej niż 80 znaków w trybie tekstowym?
macropas

być może będziesz musiał uruchomić tryb bufora ramki, aby to zadziałało (ale mogę się mylić, minęło trochę czasu).
andersop

Istnieje kilka trybów SVGA, które mają 132 znaki szerokości bez użycia trybu bufora ramki, ale są one dość przypadkowo obsługiwane. Jeden z tych trybów jest wymieniony w mojej odpowiedzi.
Kodowanie w stylu

3
To sięga jeszcze dalej: powodem, dla którego IBM stworzył monitory CRT o szerokości 80 kolumn, było to, że jego karty perforowane miały szerokość 80 kolumn.
dan04

2

Możesz także użyć innej aplikacji terminalowej, takiej jak Console2 , która pozwala na dowolną zmianę rozmiaru okna (między innymi na przezroczystość i możliwość używania dowolnej czcionki). To świetna aplikacja, przełączyłem się na nią i teraz używam tylko cmd.exewtedy, gdy absolutnie muszę.


1

Ponieważ będzie przewijał się od lewej do prawej, a także w górę iw dół, pierwszą rzeczą, jaką robię w systemie, jest zdefiniowanie mojej szerokości jako 180 i zapisanie jej. To ogólnie wystarczy, aby ślady stosu nie musiały się owijać w większości, ale nie na tyle, aby tracić mnóstwo miejsca.

Kiedy już to zrobisz, ustaw rozmiar pionowy (bufor przewijania) na wszystkie 9. Będziesz zadowolony, że kiedyś to zrobiłeś.


1

Ponieważ MS ceni „kompatybilność wsteczną” ponad wiele rzeczy iw tym przypadku podejrzewam, że jest to błędne przekonanie, że w jakiś sposób denerwuje ludzi, jeśli nie mają standardowego okna o szerokości 80 stopni.

Oczywiście mogło się zdarzyć, że został zaprogramowany na stałą szerokość 80 znaków, kiedy było to dość uniwersalne, a dodatkowe ustawienia właściwości były trochę hackem.


1

To jest ograniczone. Sprawdź to. (Mam na myśli rozmiar okna NIE bufor)

Przekonasz się, że maksymalna szerokość, którą możesz ustawić, jest ograniczona, ale różni się w zależności od rozdzielczości ekranu. Jeśli twoja rozdzielczość jest ustawiona na 1024 x 768, zauważysz, że możesz uzyskać tylko 128 w szerokości wiersza polecenia. 128/1024 = 0,125

przekonasz się, że stosunek ten jest spójny we wszystkich obszarach. Mam sesję RDP działającą w rozdzielczości 2000x768 (na dwóch z moich trzech monitorów) i otrzymuję maksymalną szerokość 250.

Teraz okazuje się, że jest trochę większy niż rozmiar twojego monitora Actaul, ale mam trzy monitory, wszystkie z osobnymi komputerami stacjonarnymi. (czyli w zasadzie 3 rozdzielczości 1024x768) i jeśli chcę zrobić coś TAK PROSTEGO, jak rozciągnięcie wiersza poleceń na 2 lub więcej monitorów, NIE MOGĘ. (Chcę robić rzeczy z bardzo długimi ścieżkami (diruse.exe / itp.) ...

-do


2
Jeśli zmniejszysz rozmiar czcionki, możesz uzyskać (stosunkowo) większe rozmiary okien. Właśnie uzyskałem ponad 300 szerokości na ekranie 1600x1200.
Michael Myers

Nadal możesz zwiększyć szerokość linii i przewinąć okno. Zrobiłem mój szeroki na 160 lub 180 od czasów VGA.
Bill K

0

-1

Ponieważ poprawa użyteczności i funkcjonalności wszystkiego, czego wymaga rozwój w stylu Unix / GNU, osłabi Windows jako komercyjną platformę dla partnerów Microsoft. Zapobieganie temu oznacza, że ​​produkty innych dużych firm dla programistów, takie jak ulepszone terminale i inne ogólne produkty stron trzecich, takie jak edytory tekstu, odtwarzacze wideo itp., Nie konkurują z istniejącym oprogramowaniem Unix / GNU. Bez tego Windows nie byłby dochodową platformą, a Microsoft straciłby monopol na komputery stacjonarne.

Dlatego terminal jest do bani, nie ma POSIX API, nie ma obsługi C99 w MSVC i lista jest długa. Aby wyjaśnić, powszechne technologie i rozwój systemów Unix / GNU są celowo nieobsługiwane, więc duże komercyjne firmy programistyczne nie muszą z nimi konkurować.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.