Windows cmd.exe neden 80 karakter genişliğiyle sınırlıdır?


104

Terminalimi unix üzerinde esnetmeyi seviyorum. Windows lame komut satırının geçmişi veya nedeni nedir?


2
Bu bir seçim, tıpkı diğer birçok şeyin seçim olduğu gibi. Sabit bir boyutunuz varsa, sınırları tam olarak bildiğiniz için "ekranınızı" tasarlamak daha kolaydır. Dezavantajları açıktır, hangi boyut seçilirse seçilsin, birisi ya da bir şey için her zaman yanlış olacaktır. Şu anki Windows CMD ekranı aslında günler öncesindeki tek ekrandı. Ve çok fazla çözünürlük yoktu ve bu konuda çok az yüksek çözünürlük vardı.
tvCa

Yanıtlar:


147

Değil. Başlık çubuğuna sağ tıklayabilir, özellikleri seçebilir ve "Düzen" sekmesinde ekran arabellek boyutunu (satır genişliği ve geri kaydırma) ve pencere boyutunu (görüntü alanı boyutu) değiştirebilirsiniz. Bir kısayoldan cmd başlattıysanız, bu ayarları sonraki oturumlar için kaydedebilirsiniz.


2
Yazı tipini / rengini unutmayın. Komut istemimi açtığımda, bazı retro yeşil ekranlara geri dönmek kadar güzel bir şey olamaz. 8 ^ D
Dillie-O

13
Yani, "yazı tipini konsollara değiştirmekten başka bir şey yok" hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy

5
Ben her zaman içeri giriyorum ve genişliği 180'e ve geri kaydırmayı 9999'a ayarlıyorum. Çok sık ihtiyacın olduğu için değil, ama hiçbir şeyi incitmedim (128 MB'lık makinelerin olduğu günlerde ve bir seferinde ihtiyacın olsa bile, Bunu elden önce ayarladığınız için GERÇEKTEN memnun olacaksınız.Genişlik kişisel bir tercihtir, derleyicimden sıra dışı koşullar dışında satır kaydırmaları görmekten hoşlanmıyorum, ancak diğerleri kaydırmayı hiç sevmiyor.
Bill K

4
Ekran arabellek yüksekliğini artırmak çok azdır. Bu tür bir kaydırma, bir programın çıktısını ekrana tam olarak okuyabilmek için çok sık gereklidir (DAHA FAZLA kullanmadığınız sürece).
Stil İle Kodlama

22
Şey, evet ... ama hayır. Pencere kenarını sürükleyerek pencereyi keyfi olarak yeniden boyutlandıramazsınız ve işte 2012'de buradayız ve hala değişmedi.
Alex B

108

Fare fobisi iseniz, bunu cmd penceresinin içine de yazabilirsiniz:

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

11
Bu, çıktısını biçimlendirmek için pencerenin boyutunu kontrol eden bir uygulamada "cmd / c ..." sistem çağrısıyla başa çıkmada çok yardımcı oldu. Aramadan önce bir "mod 200,50 &&" attı ve hayat güzel
Thomas

Dikey kaydırmayı kaybedersiniz, en azından
Win7'de

44

Sınırlı değil.

  1. Cmd.exe'yi çalıştırın
  2. Ekranın sol üst tarafındaki simgeye tıklayın.
  3. Özellikleri seçin
  4. Düzen sekmesini seçin.
  5. Arabelleği ve pencere genişliklerini istediğiniz gibi ayarlayın.
  6. Tamam'ı tıklayın
  7. Gelecekte Özellikleri Kaydet'i seçin ...
  8. Tamam'ı tıklayın.

Konsolu kontrol etmek isteyebilirsiniz . Sekmeli bir ortamda birden çok kabuk çalıştırmanıza izin veren açık kaynaklı bir uygulamadır. Ayrıca kabukların alfa şeffaflığını da ayarlayabilirsiniz.


17

RE: Çünkü MS, pek çok şey üzerinde "geriye dönük uyumluluğa" değer veriyor ve bu durumda bunun, standart 80 geniş pencerelerine sahip olmadıklarında insanların bir şekilde sinirlerini bozacağına dair yanlış bir inanç olduğundan şüpheleniyorum.

Geriye dönük uyumluluk oldukça kötü çalışıyor. Microsoft'un bunu uygulama konusunda oldukça titiz olduğunu düşünmüyorum ve Microsoft'un yeni sürümlerin eski sürümlerde çalışmamasını sağlamak için en önemli kişi olduğuna inanıyorum. COMMAND.COM altında pek çok şey düzgün çalışmıyor, bu da sahip olduğu kullanışlılığı önemli ölçüde sabote ediyor, bazı programların düzgün çalışması için DOSONLY'e girmeniz gerektiğini ve Microsoft yararlı komutları kaldırıyor. Açıkçası, Microsoft'un "geriye dönük uyumluluğa" büyük bir saygı duyduğunu hayal edemiyorum.

Ayrıca, bence satır uzunluğunun standart olarak 80 sütunluk bir standartta olmasının gerçek nedeni, çoğu komut satırı programının, vb. Kullanıcının 80 sütunlu bir istemde kapatıldığı varsayımı altında çalışması, yani genişliği artırmanın neden olabileceği anlamına gelir. biçimlendirme hataları veya daha kötüsü muhtemelen programları tamamen bozar.

Jmucchiello'nun da belirttiği gibi, MODE pencereyi yeniden boyutlandırmak için iyi çalışacaktır.

Sistem cihazlarını yapılandırır.

Seri bağlantı noktası: MODE COMm [:] [BAUD = b] [PARITY = p] [DATA = d] [STOP = s]
                                [to = on | off] [xon = on | off] [odsr = on | off]
                                [octs = açık | kapalı] [dtr = açık | kapalı | hs]
                                [rts = açık | kapalı | hs | tg] [idsr = açık | kapalı]

Cihaz Durumu: MODE [cihaz] [/ STATUS]

Yeniden yönlendirmeli yazdırma: MODE LPTn [:] = COMm [:]

Kod sayfasını seçin: MODE CON [:] CP SELECT = yyy

Kod sayfası durumu: MODE CON [:] CP [/ STATUS]

Görüntüleme modu: MODE CON [:] [COLS = c] [LINES = n]

Tipik hız: MODE CON [:] [RATE = r DELAY = d]

CONFIG.NT'nizde DOSONLY'i etkinleştirdiyseniz, ancak COMMAND.COM'u açtığınızda, cmd.exe'den uygun bir DOS tarzı satır çözünürlüğü devralır, ancak COMMAND.COM'un içinden MODE'u çağıramazsınız. COMMAND.COM içinde yeniden boyutlandırmak isterseniz, aşağıdaki gibi 16 bitlik montaj talimatlarını kullanmanız gerekecektir:

80x50 Satır Çözünürlüğü ( Çerçeve arabelleği yok, SVGA yok, neredeyse evrensel olarak destekleniyor.)

HATA AYIKLA
A100
MOV AX, 1112
Zeka 10
Zeka 20

G
Q

132x60 Hat Çözünürlüğü ( Çerçeve arabelleği yok, SVGA gerektirir. ATI gfx kartlarında çalışmaz, genellikle nVidia gfx kartlarında çalışır, afaict her zaman Intel tümleşik gfx kartlarında çalışır.)

HATA AYIKLA
A100
MOV AX, 4F02
MOV BX, 010C
Zeka 10
Zeka 20

G Q

Bunu COMMAND.COM'a girerseniz, size belirtilen çözünürlüğü verecektir. (Uyarı: Monitörünüz modu desteklemeyecek kadar eskiyse, onu yok edebilirsiniz. Yan not: Windows'u çalıştırabiliyorsanız, monitörünüz iyi durumda olmalıdır. Sorumluluk reddi: Gerekirse vurgulanır ve uyarıldınız , bu yüzden monitörünüz yanarsa benim sorunum değil. ;-) Ancak, bunu DOSONLY etkinleştirmeden kullanırsanız, COMMAND.COM, uygulama olur olmaz önceki boyutuna geri döner (bu durumda, bir dosya ve çalıştırılır, DEBUG) çıkar.

Alternatif olarak, COMMAND.COM altında DOSONLY olarak ayarlanmış şekilde düzgün çalışacak olan FreeDOS'un MODE.COM'unu kullanabilirsiniz. Resmi web sitesindeki (freedos.org) disk görüntüsünden çekebilir veya şu adresten edinebilirsiniz:http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/ .

Eric Auer 2003-2005'ten yeni FreeDOS MODU. Lisans: GPL. (sürüm 12may2005)
MODE [cihaz] [/ STA [TUS]] (bir veya tüm cihazların durumunu gösterir)
MODE LPTn [:] sütun [, [satırlar] [, yeniden dene]] (sütun veya cpi, 6/8 lpi, yeniden deneme p veya n)
MODE LPTn [:] [COLS = ...] [LINES = ...] [YENİDEN DENE = ...] (yeniden deneme: p sonsuz / n yok)
MODE LPTn [:] = [COMn [:] | NUL] (yazıcı verilerini seri bağlantı noktasına veya NUL'a yeniden yönlendir)
MOD HABERLEŞME [:] baud, eşlik, veri, durdurma, yeniden deneme (boş değerlere izin verilir)
COMn MODU [:] [BAUD [ZOR] = ...] [PARİTE = ...] [DATA = ...] [DUR = ...] [YENİDEN DENE = ...]
  Baud, benzersiz önek olarak kısaltılabilir, eşlik o / e / n / s / m olabilir,
  son 2, boşluk / işaret anlamına gelir, veriler 5..8, durdurma 1..2 olabilir. Yeniden Deneme Yoksayıldı!
  PLANLANMIŞ: Yeniden deneyin b / e / r -> meşgul / hata / meşgulse hazır, p / n sonsuz / yeniden deneme yok.
MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]] (FreeDOS DISPLAY yüklü olmalıdır)
MOD CON [:] [CP | CODEPAGE] REF [RESH] (EKRAN gerekir)
MOD CON [:] [CP | CODEPAGE] SEL [ECT] = sayı (EKRAN gerekir)
MOD KONU [:] [CP | CODEPAGE] PREP [ARE] = ((kod sayfası) dosya adı) (EKRAN gerekir)
  Diğer arabelleklerdeki kod sayfalarını hazırlamak için PREP = (((, cp2, cp3,, cp5) ...) kullanın.
MOD [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [, satırlar] (satırlar 25, 28, 43 veya 50 olabilir)
  Yalnızca yazı tipini değiştirmek istiyorsanız 'satır' değeri olarak 8, 14 veya 16 kullanın.
MOD [CO40 | CO80 | ...], [R | L] [, T] (CGA sola / sağa kaydırma, T etkileşimli moddur)
MODE CON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = değer
  Değer, kilitler için + veya - veya switchar için bir karakter olabilir.
MOD CON [:] [COLS = ...] [LINES = ...] (olası değerler donanımınıza bağlıdır)
MOD CON [:] [RATE = ...] [DELAY = ...] (varsayılan hız 20, varsayılan gecikme 1)
  Hız 2.30 karakter / sn için 1..32, gecikme 1 / 4..4 / 4 sn için 1..4 olabilir.

Sağladığım ASM koduyla aynı nedenlerle, CONFIG.NT dosyanıza DOSONLY eklenmiş COMMAND.COM'da çalıştırmadığınız sürece, MODE.COM çıktıktan sonra pencere hemen önceki boyutuna dönecektir.

Son olarak, diğerlerinin de belirttiği gibi, bu ayarları basitçe komut isteminin başlık çubuğuna sağ tıklayarak ve Özellikler -> Düzen'i değiştirerek değiştirmek de mümkündür. Benzer şekilde, CMD.EXE ve toplu iş dosyalarına kısayollar için çözünürlüğü ayarlayabilirsiniz (kısayolu sağ tıklayın -> Özellikler -> Düzen). Bu yalnızca CMD.EXE için çalışır, ancak COMMAND.COM için geçerli değildir.


14

Her zaman kullandığım pencere boyutunu düzeltmek için basit bir komut:

wmic

Windows Yönetim Araçları Komut satırını açacak ve boyut sınırlarını kaldıracaktır. Ardından Ctrl+ ile kapatın C.


6

Bunun arkasındaki geçmişi bilmiyorum, ancak PuTTy'nin yazarından gelen bu istek listesi, herhangi bir tür cmd.exe değiştirmesiyle ilgili teknik engelleri açıklayan ilginç bir gönderi.

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

Bir yedek aradığınızdan bahsetmiyorsunuz, ancak öyleyse, Konsol 2 veya JP Software's Take Command vb. Gibi bazı cmd.exe değiştirmelerini de kontrol edebilirsiniz . PuTTy ile de bazı iyi deneyimlerim oldu. Cyg, PuTTy'yi bir cygwin kabuğu olarak kullanmanıza izin verir.


6

Diğer cevapların gösterdiği gibi genişlik sınırlı olmasa da, yüksekliği fareyle sürükleyip yeniden boyutlandırabilmeyi , ancak genişliği değil her zaman garip buldum .

Varsayılan 80 karakter genişliğinin, terminalin 80 karakterden daha geniş olmayacağını varsayan eski programlarla uyumlulukla ilgili olduğunu düşünüyorum. Gerçi bunun yaklaşık on yıldır gerçekçi bir neden olduğunu düşünmüyorum.


9
Hem genişlik hem de yükseklik yeniden boyutlandırılabilir, yalnızca varsayılan pencere genişliği arabellek genişliğine eşittir. Pencereyi arabellekten daha büyük yapamazsınız, bu nedenle tek seçenek (varsayılan 80 sütun ayarıyla) genişliği azaltmaktır.
efotinis

4

Diğerlerinin de belirttiği gibi, 80 karakter genişliğiyle sınırlı değil, ancak neden varsayılan olarak 80 karakterle ilgili tahminim, CRT ekranlarının 80 karakter genişliğinde olduğu DOS günlerinden kalması olabilir.

Ayrıca bakınız


Modern monitör metin modunda 80 karakterden daha geniş olabilir mi?
macropas

Bunun işe yaraması için bir framebuffer modu ile çalışıyor olmanız gerekebilir (ama yanılıyor olabilirim, uzun zaman oldu.)
andersop

Bir framebuffer modu kullanmadan 132 karakter genişliğinde birkaç SVGA modu vardır, ancak oldukça gelişigüzel desteklenirler. Bu modlardan biri cevabımda listeleniyor.
Tarzla Kodlama

3
Bundan daha da geriye gidiyor: IBM'in CRT ekranını 80 sütun genişliğinde yapmasının nedeni, delikli kartlarının 80 sütun genişliğiydi.
dan04

2

Ayrıca , pencereyi istediğiniz kadar yeniden boyutlandırmanıza olanak tanıyan (saydamlık ve istediğiniz herhangi bir yazı tipini kullanma yeteneği gibi) Konsol2 gibi farklı bir terminal uygulaması da kullanabilirsiniz . Harika bir uygulama, ona geçtim ve şimdi sadece cmd.exekesinlikle mecbur kaldığımda kullanıyorum .


1

Soldan sağa ve yukarı ve aşağı kayacağı için, bir sistemde yaptığım ilk şey genişliğimi 180 olarak tanımlayıp kaydetmek. Bu genellikle yeterlidir, böylece yığın izlerinin çoğu zaman sarılması gerekmez, ancak bir ton alan beklemeniz için çok fazla değildir.

Hazır oradayken, dikey boyutu (geri kaydırma tamponu) tüm 9'lara ayarlayın. Bir gün yaptığına sevineceksin.


1

MS pek çok şey üzerinde "geriye dönük uyumluluğa" değer verdiği için ve bu durumda bunun, standart 80 geniş pencerelerine sahip olmadıklarında insanları bir şekilde sinirlendireceğine dair yanlış bir inanç olduğundan şüpheleniyorum.

Tabii ki, bu neredeyse evrenselken sabit bir 80 karakter genişliği için programlanmış olabilir ve ek özellik ayarları biraz kesiciydi.


1

Sınırlıdır. Bunu kontrol et. (Arabellek DEĞİL pencere boyutu demek istiyorum)

Ayarlayabileceğiniz maksimum genişliğin sınırlı olduğunu ancak ekran çözünürlüğünüze göre değiştiğini göreceksiniz. Çözünürlüğünüz 1024 x 768 olarak ayarlanmışsa, komut istemi genişliğinde yalnızca 128'e ulaşabileceğinizi göreceksiniz. 128/1024 = .125

bu oranın pano genelinde tutarlı olduğunu göreceksiniz. 2000x768'de (üç monitörümden ikisinde) çalışan bir RDP oturumum var ve maksimum 250 genişlik elde ediyorum.

Şimdi, bu aslında gerçek monitör boyutunuzdan biraz daha büyük görünüyor, ancak her biri ayrı masaüstü çalıştıran üç monitörüm var. (özünde 3 1024x768 çözünürlük) ve bir komut istemini 2 veya daha fazla monitöre yaymak için ÇOK BASİT bir şey yapmak istersem, YAPAMAZIM. (Çok uzun yollarla (diruse.exe / vb.) Bir şeyler yaparken istiyorum ...

-c


2
Yazı tipi boyutunuzu küçültürseniz, (nispeten) daha büyük pencere boyutları elde edebilirsiniz. 1600x1200 ekranda 300'ün üzerinde genişliğe sahibim.
Michael Myers

Hala çizgi genişliğinizi artırabilir ve pencereyi kaydırabilirsiniz. VGA günlerinden beri benimkini 160 veya 180 genişliğinde yaptım.
Bill K

0

-1

Çünkü Unix / GNU benzeri geliştirmenin gerektirdiği herhangi bir şeyin kullanılabilirliğini ve işlevselliğini iyileştirmek, Microsoft'un ortakları için ticari bir platform olarak Windows'u zayıflatacaktır. Bunu önlemek, diğer büyük şirketlerin geliştiricilere yönelik geliştirilmiş terminaller gibi ürünlerinin ve kelime işlemciler, video oynatıcılar vb. Gibi diğer genel üçüncü taraf ürünlerinin mevcut Unix / GNU yazılımıyla rekabet etmediği anlamına gelir. Bu olmadan, Windows karlı bir platform olmazdı ve Microsoft masaüstü tekelini kaybederdi.

Bu yüzden terminal berbat, POSIX API yok, MSVC'de C99 desteği yok ve liste uzayıp gidiyor. Açıklığa kavuşturmak gerekirse, yaygın Unix / GNU teknolojileri ve geliştirme kasıtlı olarak desteklenmemektedir, bu nedenle büyük ticari yazılım evleri onlarla rekabet etmek zorunda kalmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.