Tại sao cmd.exe của Windows bị giới hạn chiều rộng 80 ký tự?


104

Tôi thích mở rộng thiết bị đầu cuối của mình trên unix. Lịch sử hoặc lý do đằng sau dòng lệnh windows lame là gì?


2
Đó là một sự lựa chọn, giống như rất nhiều thứ khác là sự lựa chọn. Nếu bạn có kích thước cố định, việc thiết kế "màn hình của bạn" sẽ dễ dàng hơn vì bạn biết chính xác các giới hạn. Những bất lợi là rõ ràng, là bất kỳ kích thước nào được chọn, nó sẽ luôn luôn sai đối với ai đó hoặc điều gì đó. Màn hình Windows CMD hiện tại thực sự LÀ màn hình duy nhất, trước đây. Và không có nhiều độ phân giải có sẵn, và rất ít độ phân giải cao cho vấn đề đó.
tvCa

Câu trả lời:


147

Nó không phải. Bạn có thể nhấp chuột phải vào thanh tiêu đề, chọn thuộc tính và trong tab "Bố cục" thay đổi kích thước bộ đệm màn hình (chiều rộng dòng và cuộn lùi) và kích thước cửa sổ (kích thước khung nhìn). Nếu bạn đã bắt đầu cmd từ một phím tắt, bạn có thể lưu các cài đặt này cho các phiên sau.


2
Đừng quên phông chữ / màu sắc. Không gì tuyệt vời bằng việc quay lại một số màn hình màu xanh lá cây cổ điển khi tôi mở dấu nhắc lệnh của mình. 8 ^ D
Dillie-O

13
Ý bạn là, "không gì khác ngoài việc thay đổi phông chữ thành consolas" hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy

5
Tôi luôn luôn nhảy vào và đặt chiều rộng thành 180 và cuộn lùi thành 9999. Không phải bạn cần nó thường xuyên, nhưng tôi chưa bao giờ làm nó ảnh hưởng đến bất cứ điều gì (ngay cả trong những ngày của máy 128mb và một lần bạn cần, bạn sẽ THỰC SỰ rất vui vì bạn đã đặt nó trước khi sử dụng. Chiều rộng là sở thích cá nhân, tôi không thích nhìn thấy các dòng bao quanh từ trình biên dịch của mình ngoại trừ trong các điều kiện khắc nghiệt, nhưng những người khác không bao giờ thích cuộn.
Bill K

4
Việc tăng chiều cao bộ đệm màn hình bị đánh giá rất thấp. Loại cuộn đó quá thường xuyên cần thiết để có thể đọc đầy đủ đầu ra của chương trình ra màn hình (trừ khi bạn sử dụng MORE).
Coding With Style

22
Vâng, có ... nhưng không. Bạn không thể tự ý thay đổi kích thước cửa sổ bằng cách kéo mép cửa sổ và đây là năm 2012 và nó vẫn không thay đổi.
Alex B

108

Nếu bạn không thích chuột, bạn cũng có thể chỉ cần gõ vào bên trong cửa sổ cmd:

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

11
Điều này rất hữu ích trong việc xử lý lệnh gọi hệ thống tới "cmd / c ..." trên một ứng dụng kiểm tra kích thước của cửa sổ để định dạng đầu ra của nó. Chỉ cần ném "chế độ 200,50 &&" trước khi cuộc gọi và cuộc sống vẫn tốt đẹp
Thomas

Bạn bị mất những cuộn dọc Mặc dù vậy, ít nhất là trên Win7
golimar

44

Nó không giới hạn.

  1. Chạy cmd.exe
  2. Nhấp vào biểu tượng ở phía trên bên trái của màn hình.
  3. Chọn thuộc tính
  4. Chọn tab Bố cục.
  5. Đặt bộ đệm và chiều rộng cửa sổ thành bất kỳ thứ gì bạn thích.
  6. Bấm OK
  7. Chọn Lưu thuộc tính cho tương lai ...
  8. Bấm OK.

Bạn có thể muốn xem Bảng điều khiển . Đó là một ứng dụng mã nguồn mở cho phép bạn chạy nhiều trình bao trong môi trường theo thẻ. Bạn cũng có thể đặt độ trong suốt alpha của shell.


17

RE: Bởi vì MS coi trọng "khả năng tương thích ngược" trên rất nhiều thứ và trong trường hợp này, tôi nghi ngờ đó là niềm tin không đúng chỗ rằng bằng cách nào đó nó sẽ khiến mọi người khó chịu nếu họ không có cửa sổ rộng 80 tiêu chuẩn.

Tuy nhiên, khả năng tương thích ngược hoạt động khá khủng khiếp. Tôi không hình dung rằng Microsoft đã khá kỹ lưỡng về việc triển khai nó, và tôi tin rằng Microsoft là người dẫn đầu cho việc đảm bảo các phiên bản mới hơn sẽ không hoạt động trên các phiên bản cũ hơn. Rất nhiều chương trình không hoạt động bình thường trong COMMAND.COM, điều này phá hoại đáng kể tính hữu ích mà nó sở hữu, chưa kể đến việc bạn phải nhập DOSONLY để làm cho một số chương trình chạy đúng cách, cộng với việc Microsoft đã loại bỏ các lệnh hữu ích. Thành thật mà nói, tôi không thể tưởng tượng Microsoft lại coi trọng "khả năng tương thích ngược".

Hơn nữa, tôi nghĩ lý do thực sự tại sao độ dài dòng ở mức tiêu chuẩn là 80 cột là vì hầu hết các chương trình dòng lệnh, v.v. hoạt động theo giả định rằng người dùng bị giới hạn ở dấu nhắc 80 cột, có nghĩa là việc tăng chiều rộng có thể gây ra lỗi định dạng hoặc tệ hơn có thể phá vỡ các chương trình hoàn toàn.

Như jmucchiello đã đề cập, MODE sẽ hoạt động tốt để thay đổi kích thước cửa sổ nếu bạn cảm thấy thích.

Định cấu hình các thiết bị hệ thống.

Cổng nối tiếp: 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]

Trạng thái thiết bị: MODE [thiết bị] [/ STATUS]

In chuyển hướng: MODE LPTn [:] = COMm [:]

Chọn trang mã: MODE CON [:] CP SELECT = yyy

Trạng thái trang mã: MODE CON [:] CP [/ STATUS]

Chế độ hiển thị: MODE CON [:] [COLS = c] [LINES = n]

Tỷ lệ đánh máy: MODE CON [:] [RATE = r DELAY = d]

Tuy nhiên, nếu bạn đã bật DOSONLY trên CONFIG.NT của mình, khi bạn mở COMMAND.COM, nó sẽ kế thừa độ phân giải dòng kiểu DOS thích hợp từ cmd.exe, nhưng bạn không thể gọi MODE từ bên trong COMMAND.COM. Nếu bạn muốn thay đổi kích thước bên trong COMMAND.COM, bạn sẽ phải sử dụng hướng dẫn lắp ráp 16-bit, như sau:

Độ phân giải dòng 80x50 (Không có bộ đệm khung, không có SVGA, hầu như được hỗ trợ trên toàn cầu.)

NỢ
A100
MOV AX, 1112
INT 10
INT 20

G
Q

Độ phân giải dòng 132x60 (Không có bộ đệm khung, yêu cầu SVGA. Sẽ không hoạt động trên thẻ gfx ATI, thường hoạt động trên thẻ gfx nVidia, afaict luôn hoạt động trên thẻ gfx tích hợp của Intel.)

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

G Q

Nếu bạn nhập thông tin này trên COMMAND.COM của mình, nó sẽ cung cấp cho bạn giải pháp được chỉ định. (Cảnh báo: Nếu màn hình của bạn đủ cổ để không hỗ trợ chế độ này, bạn có thể sẽ phá hủy nó. Lưu ý phụ: Nếu bạn có thể chạy Windows, màn hình của bạn sẽ ổn. , vì vậy không phải vấn đề của tôi nếu màn hình của bạn bị cháy. ;-) Tuy nhiên, nếu bạn sử dụng điều này mà không bật DOSONLY, COMMAND.COM sẽ thay đổi kích thước trở lại kích thước trước đó ngay sau khi ứng dụng và thực thi nó, DEBUG) thoát.

Ngoài ra, bạn có thể sử dụng MODE.COM của FreeDOS, sẽ chạy đúng cách trong COMMAND.COM được đặt thành DOSONLY. Bạn có thể lấy nó từ ảnh đĩa tại trang web chính thức (Freedomos.org) hoặc lấy nó tạihttp://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/ .

CHẾ ĐỘ FreeDOS mới của Eric Auer 2003-2005. Giấy phép: GPL. (phiên bản 12may2005)
MODE [thiết bị] [/ STA [TUS]] (hiển thị trạng thái của một hoặc tất cả các thiết bị)
CHẾ ĐỘ LPTn [:] cols [, [lines] [, retry]] (cols hoặc cpi, 6/8 lpi, thử lại p hoặc n)
MODE LPTn [:] [COLS = ...] [LINES = ...] [RETRY = ...] (thử lại: p vô hạn / n không có)
MODE LPTn [:] = [COMn [:] | NUL] (chuyển hướng dữ liệu máy in sang cổng nối tiếp hoặc NUL)
MODE COMn [:] baud, chẵn lẻ, dữ liệu, dừng, thử lại (cho phép giá trị trống)
MODE COMn [:] [BAUD [HARD] = ...] [PARITY = ...] [DATA = ...] [STOP = ...] [RETRY = ...]
  Baud có thể được viết tắt thành tiền tố duy nhất, chẵn lẻ có thể là o / e / n / s / m,
  2 nghĩa là dấu cách / dấu, dữ liệu có thể là 5..8, dừng 1..2. Thử lại bị BỎ QUA!
  ĐÃ KẾ HOẠCH: Thử lại b / e / r -> bận / lỗi / sẵn sàng nếu bận, p / n vô hạn / không thử lại.
MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]] (Phải tải FreeDOS DISPLAY)
CHẾ ĐỘ CON [:] [CP | CODEPAGE] REF [RESH] (cần HIỂN THỊ)
MODE CON [:] [CP | CODEPAGE] SEL [ECT] = number (cần HIỂN THỊ)
MODE CON [:] [CP | CODEPAGE] PREP [ARE] = ((codepage) tên tệp) (cần HIỂN THỊ)
  Sử dụng PREP = ((, cp2, cp3,, cp5) ...) để chuẩn bị mã hóa trong các bộ đệm khác.
MODE [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [, hàng] (hàng có thể là 25, 28, 43 hoặc 50)
  Sử dụng 8, 14 hoặc 16 làm giá trị 'hàng' nếu bạn chỉ muốn thay đổi phông chữ.
MODE [CO40 | CO80 | ...], [R | L] [, T] (chuyển CGA sang trái / phải, T là chế độ tương tác)
MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = value
  Giá trị có thể là: + hoặc - cho các ổ khóa hoặc một ký tự cho switchar.
MODE CON [:] [COLS = ...] [LINES = ...] (giá trị có thể tùy thuộc vào phần cứng của bạn)
CHẾ ĐỘ CON [:] [RATE = ...] [DELAY = ...] (tốc độ mặc định 20, độ trễ mặc định 1)
  Tốc độ có thể là 1..32 cho 2..30 ký tự / giây, độ trễ có thể là 1..4 trong 1/4..4 / 4 giây.

Vì những lý do tương tự như với mã ASM tôi đã cung cấp, trừ khi bạn thực thi nó trong COMMAND.COM với DOSONLY được thêm vào tệp CONFIG.NT của bạn, cửa sổ sẽ ngay lập tức khôi phục lại kích thước trước đó khi MODE.COM thoát.

Cuối cùng, như những người khác đã nêu, cũng có thể sửa đổi các cài đặt này chỉ bằng cách nhấp chuột phải vào thanh tiêu đề của dấu nhắc lệnh và sửa đổi Thuộc tính -> Bố cục. Tương tự, bạn có thể đặt độ phân giải cho bất kỳ phím tắt nào thành CMD.EXE và các tệp hàng loạt (Nhấp chuột phải vào phím tắt -> Thuộc tính -> Bố cục). Tuy nhiên, điều này chỉ hoạt động với CMD.EXE, không phải COMMAND.COM.


14

Một lệnh đơn giản để sửa kích thước cửa sổ mà tôi thường sử dụng:

wmic

Nó sẽ mở dòng lệnh Windows Management Instrumentation và loại bỏ các giới hạn kích thước. Sau đó, chỉ cần đóng nó bằng Ctrl+ C.


6

Tôi không biết lịch sử đằng sau nó, nhưng mục danh sách mong muốn này từ tác giả của PuTTy là một bài đăng thú vị giải thích các rào cản kỹ thuật liên quan đến bất kỳ loại thay thế cmd.exe nào không sai:

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

Bạn không đề cập đến việc bạn đang tìm kiếm sự thay thế, nhưng nếu vậy bạn cũng có thể kiểm tra một số thay thế cmd.exe như Console 2 hoặc JP Software's Take Command, v.v. Tôi cũng đã có một số trải nghiệm tốt với PuTTy- Cyg cho phép bạn sử dụng PuTTy làm trình bao cygwin.


6

Mặc dù chiều rộng không bị giới hạn như các câu trả lời khác hiển thị, tôi luôn thấy kỳ lạ là người ta có thể kéo và thay đổi kích thước chiều cao bằng chuột, nhưng không phải chiều rộng .

Tôi nghĩ rằng chiều rộng 80 ký tự mặc định có liên quan đến khả năng tương thích với các chương trình cũ giả định rằng thiết bị đầu cuối sẽ không rộng hơn 80 ký tự. Mặc dù vậy, tôi không nghĩ đây là lý do thực tế trong một thập kỷ.


9
Cả chiều rộng và chiều cao đều có thể được thay đổi kích thước, nó chỉ xảy ra rằng chiều rộng cửa sổ mặc định bằng chiều rộng bộ đệm. Bạn không thể làm cho cửa sổ lớn hơn bộ đệm, vì vậy tùy chọn duy nhất (với cài đặt 80 cột mặc định) là giảm chiều rộng.
efotinis

4

Như những người khác đã chỉ ra, nó không giới hạn ở độ rộng 80 ký tự, nhưng suy đoán của tôi về lý do tại sao nó mặc định là 80 ký tự sẽ là nó còn sót lại từ những ngày DOS nơi màn hình CRT có chiều rộng 80 ký tự.

Xem thêm


Màn hình hiện đại có thể rộng hơn 80 ký tự ở chế độ văn bản không?
macropas

bạn có thể phải được chạy với một chế độ bộ đệm khung để làm cho công việc này (nhưng tôi có thể sai, nó được một thời gian.)
andersop

Có một số chế độ SVGA rộng 132 ký tự mà không sử dụng chế độ bộ đệm khung, nhưng chúng được hỗ trợ khá lộn xộn. Một trong những chế độ đó được liệt kê trong câu trả lời của tôi.
Mã hóa với phong cách

3
Nó quay trở lại xa hơn thế: Lý do IBM làm cho màn hình CRT của mình rộng 80 cột là vì thẻ đục lỗ của nó rộng 80 cột.
dan04

2

Bạn cũng có thể sử dụng một ứng dụng đầu cuối khác, chẳng hạn như Console2 , cho phép bạn thay đổi kích thước cửa sổ theo ý muốn (trong số những thứ khác, chẳng hạn như độ trong suốt và khả năng sử dụng bất kỳ phông chữ nào bạn muốn). Đó là một ứng dụng tuyệt vời, tôi đã chuyển sang nó và bây giờ tôi chỉ sử dụng cmd.exekhi tôi thực sự phải làm.


1

Vì nó sẽ cuộn từ trái sang phải cũng như lên và xuống, điều đầu tiên tôi làm trên hệ thống là xác định chiều rộng của tôi là 180 và lưu nó. Nói chung là đủ để các dấu vết ngăn xếp không phải bao phủ hầu hết các phần, nhưng không quá nhiều đến mức bạn đang lãng phí rất nhiều không gian.

Trong khi bạn đang ở đó, hãy đặt kích thước dọc (bộ đệm cuộn ngược) thành tất cả 9. Bạn sẽ rất vui vì bạn đã làm một ngày nào đó.


1

Bởi vì MS coi trọng "khả năng tương thích ngược" đối với rất nhiều thứ và trong trường hợp này, tôi nghi ngờ đó là niềm tin không đúng chỗ rằng bằng cách nào đó nó sẽ khiến mọi người khó chịu nếu họ không có cửa sổ rộng 80 tiêu chuẩn.

Tất nhiên có thể là nó đã được lập trình cho chiều rộng 80 ký tự cố định khi điều đó khá phổ biến và các cài đặt thuộc tính bổ sung hơi khó.


1

Nó có giới hạn. Kiểm tra nó ra. (Ý tôi là kích thước cửa sổ KHÔNG đệm)

Bạn sẽ thấy rằng chiều rộng tối đa bạn có thể đặt bị giới hạn nhưng thay đổi tùy theo độ phân giải màn hình của bạn. Nếu độ phân giải của bạn được đặt thành 1024 x 768, bạn sẽ thấy rằng bạn chỉ có thể nhận được 128 trên chiều rộng dấu nhắc lệnh. 128/1024 = .125

bạn sẽ thấy rằng tỷ lệ đó là nhất quán trên diện rộng. Tôi có một phiên RDP đang chạy ở 2000x768 (trên hai trong số ba màn hình của tôi) và có chiều rộng tối đa là 250.

Bây giờ, màn hình đó thực sự lớn hơn một chút so với kích thước màn hình actaul của bạn nhưng tôi có ba màn hình, tất cả đều chạy các máy tính để bàn riêng lẻ. (về bản chất là 3 độ phân giải 1024x768) và nếu tôi muốn làm điều gì đó ĐƠN GIẢN như kéo dài dấu nhắc lệnh trên 2 màn hình trở lên, tôi KHÔNG THỂ. (Tôi muốn khi làm những việc với đường dẫn rất dài (diruse.exe / etc.) ...

-c


2
Nếu bạn giảm kích thước phông chữ của mình, bạn có thể nhận được (tương đối) kích thước cửa sổ lớn hơn. Tôi chỉ có hơn 300 chiều rộng trên màn hình 1600x1200.
Michael Myers

Bạn vẫn có thể tăng chiều rộng dòng của mình và cuộn cửa sổ. Tôi đã làm rộng 160 hoặc 180 kể từ ngày VGA.
Bill K

0

-1

Bởi vì việc cải thiện khả năng sử dụng và chức năng của bất kỳ thứ gì mà sự phát triển giống Unix / GNU yêu cầu sẽ làm suy yếu Windows như một nền tảng thương mại cho các đối tác của Microsoft. Việc ngăn chặn điều này có nghĩa là các sản phẩm của các công ty lớn khác dành cho nhà phát triển, chẳng hạn như thiết bị đầu cuối được cải tiến và các sản phẩm của bên thứ ba nói chung, như bộ xử lý văn bản, trình phát video, v.v. không cạnh tranh với phần mềm Unix / GNU hiện có. Nếu không có điều này, Windows sẽ không phải là một nền tảng có lợi nhuận và Microsoft sẽ mất độc quyền máy tính để bàn của mình.

Đây là lý do tại sao thiết bị đầu cuối tệ, không có API POSIX, không hỗ trợ C99 trong MSVC và danh sách vẫn tiếp tục. Để làm rõ, các công nghệ và phát triển Unix / GNU phổ biến được cố ý không hỗ trợ để các nhà phần mềm thương mại lớn không phải cạnh tranh với chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.