Windows cmd.exeの幅が80文字に制限されているのはなぜですか?


104

UNIXで端末を拡張するのが大好きです。ウィンドウズラメコマンドラインの背後にある歴史や理由は何ですか?


2
他の多くのものが選択肢であるように、それは選択肢です。サイズが固定されている場合は、制限を正確に把握しているため、「画面」を設計する方が簡単です。どのようなサイズを選択しても、誰かまたは何かにとって常に間違っているという欠点があることは明らかです。現在のWindows CMD画面は、実際には昔の唯一の画面でした。そして、多くの解像度は利用できませんでした、そしてそれに関して非常に少数の高解像度。
tvCa 2015年

回答:


147

そうではありません。タイトルバーを右クリックしてプロパティを選択し、[レイアウト]タブで画面バッファーのサイズ(行幅とスクロールバック)とウィンドウサイズ(ビューポートサイズ)を変更できます。ショートカットからcmdを開始した場合、これらの設定を今後のセッションのために保存できます。


2
フォント/色を忘れないでください。コマンドプロンプトを開くと、レトロな緑色の画面に戻るほどすばらしいものはありません。8 ^ D
Dillie-O

13
つまり、「フォントをコンソラに変更する以外は何も」hanselman.com/blog/UsingConsolasAsTheWindowsConsoleFont.aspx
Jimmy

5
私はいつもジャンプして、幅を180に、スクロールバックを9999に設定しています。頻繁に使用する必要はないようですが、何かを傷つけることはありませんでした(128 mbマシンの時代と必要なときにさえ、あなたは本当にあなたが手の前にそれを設定して喜んでいるよ幅は個人的な好みですが、私は極端な条件の下で除いて、私のコンパイラからのラインラップを見て好きではないが、他はこれまでスクロールことが好きではありません。。
ビル・K

4
画面バッファの高さを増やすことは非常に過小評価されています。そのようなスクロールは、プログラムの出力を画面に完全に表示するために必要な場合が多すぎます(MOREを使用しない場合)。
スタイルのコーディング

22
ええ、はい...しかしいいえ。ウィンドウの端をドラッグしてウィンドウのサイズを任意に変更することはできません。ここでは2012年ですが、まだ変更されていません。
Alex B

108

マウス恐怖症の場合は、cmdウィンドウ内で次のように入力することもできます。

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

11
これは、ウィンドウのサイズをチェックして出力をフォーマットするアプリで「cmd / c ...」へのシステムコールを処理するのに非常に役立ちました。通話の前に「モード200,50 &&」を投げただけで、人生は良好です
トーマス

ただし、少なくともWin7では、縦スクロールが失われます
golimar 2017

44

制限はありません。

  1. cmd.exeを実行する
  2. 画面の左上にあるアイコンをクリックします。
  3. プロパティを選択
  4. 「レイアウト」タブを選択します。
  5. バッファとウィンドウの幅を好きなように設定します。
  6. OKをクリックします
  7. [今後のためにプロパティを保存...]を選択します。
  8. OKをクリックします。

Consoleをチェックしてください。これは、タブ環境で複数のシェルを実行できるオープンソースアプリです。シェルのアルファ透明度を設定することもできます。


17

RE:MSは多くの点で「下位互換性」を重視しているため、この場合、標準の80ワイドウィンドウがないと、どういうわけか人々を不安にさせるという見当違いの疑いがあると思います。

ただし、下位互換性はかなりひどく機能します。Microsoftがその実装についてかなり徹底していたとは思いません。Microsoftは、新しいバージョンが古いバージョンで動作しないようにするための先駆けだと思います。COMMAND.COMでは、多くのものが適切に機能しません。COMMAND.COMは、いくつかのプログラムを適切に実行するためにDOSONLYを入力する必要があることは言うまでもありません。正直なところ、マイクロソフトが「後方互換性」を高く評価しているとは思えません。

さらに、行の長さが標準の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]

ただし、CONFIG.NTでDOSONLYが有効になっている場合、COMMAND.COMを開くと、cmd.exeから適切なDOSスタイルのライン解決が継承されますが、COMMAND.COM内からMODEを呼び出すことはできません。COMMAND.COM内でサイズを変更する場合は、次のように16ビットのアセンブリ命令を使用する必要があります。

80x50のライン解像度(フレームバッファーなし、SVGAなし、事実上ユニバーサルにサポートされています。)

デバッグ
A100
MOV AX、1112
INT 10
INT 20

G
Q

132x60ライン解像度(フレームバッファーなし、SVGAが必要。ATIgfxカードでは機能しません。通常、nVidia gfxカードで機能します。afaictは常にIntel統合gfxカードで機能します。)

デバッグ
A100
MOV AX、4F02
MOV BX、010C
INT 10
INT 20

G Q

これをCOMMAND.COMに入力すると、指定した解像度が得られます。(警告:モニターがモードをサポートできないほど古くなっている場合、それを破壊する可能性があります。補足:Windowsを実行できる場合、モニターは問題ないはずです。免責事項:強調すべきであり、警告されています、そのため、モニターがフライする場合は問題ありません。;-)ただし、DOSONLYを有効にせずにこれを使用すると、COMMAND.COMはアプリケーション(この場合は、ファイルを作成して実行すると、DEBUG)が終了します。

あるいは、DOSONLYに設定されたCOMMAND.COMの下で適切に実行されるFreeDOSのMODE.COMを使用できます。公式Webサイト(freedos.org)のディスクイメージから取得するか、次の場所で取得できます。http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/

Eric Auer 2003-2005による新しいFreeDOSモード。ライセンス:GPL。(バージョン12may2005)
MODE [デバイス] [/ STA [TUS]](1つまたはすべてのデバイスのステータスを表示)
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にすることができます。再試行は無視されます!
  計画済み:b / e / rを再試行->ビジー/エラー/ビジーの場合は準備完了、p / n無限/再試行なし。
MODE CON [:] [CP | CODEPAGE] [/ STA [TUS]](FreeDOS DISPLAYがロードされている必要があります)
MODE CON [:] [CP | CODEPAGE] REF [RESH](DISPLAYが必要)
MODE CON [:] [CP | CODEPAGE] SEL [ECT] = number(DISPLAYが必要)
MODE CON [:] [CP | CODEPAGE] PREP [ARE] =((codepage)filename)(DISPLAYが必要)
  PREP =((、cp2、cp3、、cp5)...)を使用して、コードページを他のバッファーに準備します。
MODE [40 | 80 | BW40 | BW80 | CO40 | CO80 | MONO] [、rows](行は25、28、43、または50にすることができます)
  フォントのみを変更する場合は、「行」の値として8、14、または16を使用します。
MODE [CO40 | CO80 | ...]、[R | L] [、T](CGAを左/右にシフト、Tはインタラクティブモード)
モードCON [:] [NUMLOCK | CAPSLOCK | SCROLLLOCK | SWITCHAR] = value
  値は、+または-の場合はロック、スイッチャーの場合は文字です。
MODE CON [:] [COLS = ...] [LINES = ...](可能な値はハードウェアによって異なります)
MODE CON [:] [RATE = ...] [DELAY = ...](デフォルトのレート20、デフォルトの遅延1)
  レートは1..32で2..30文字/秒、遅延は1..4で1 / 4..4 / 4秒です。

私が提供したASMコードと同じ理由で、CONFIG.NTファイルにDOSONLYを追加してCOMMAND.COMで実行しない限り、MODE.COMが終了すると、ウィンドウはすぐに以前のサイズに戻ります。

最後に、他の人が述べたように、コマンドプロンプトのタイトルバーを右クリックし、[プロパティ]-> [レイアウト]を変更するだけで、これらの設定を変更することもできます。同様に、CMD.EXEおよびバッチファイルへのショートカットの解像度を設定できます(ショートカットを右クリック->プロパティ->レイアウト)。これはCMD.EXEでのみ機能しますが、COMMAND.COMでは機能しません。


14

私がいつも使用しているウィンドウサイズを修正する簡単なコマンド:

wmic

Windows Management Instrumentationコマンドラインが開き、サイズ制限が削除されます。次に、Ctrl+で閉じCます。


6

その背後にある歴史はわかりませんが、PuTTyの作者からのこのウィッシュリストアイテムは、不完全ではないcmd.exeの置き換えに関連する技術的なハードルを説明する興味深い投稿です。

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

代替品を探しているとは言いませんが、その場合は、コンソール2やJP SoftwareのTake Commandなどのcmd.exeの代替品も確認してください。PuTTy- CyTTをCygwinシェルとして使用できるようにするCyg。


6

他の回答が示すように幅が限定されないが、私はいつもそれが奇妙1は、ドラッグしてサイズを変更できることを発見した高さをマウスではなく、

デフォルトの80文字の幅は、端末の幅が80文字を超えないと想定している古いプログラムとの互換性に関連していると思います。しかし、これが10年ほどの間の現実的な理由ではないと思います。


9
幅と高さの両方をサイズ変更できます。デフォルトのウィンドウの幅がバッファの幅と等しい場合があります。ウィンドウをバッファより大きくすることはできないため、(デフォルトの80カラム設定の)唯一のオプションは幅を減らすことです。
efotinis 2008年

4

他の人が指摘したように、80文字幅に制限されていませんが、デフォルトが80文字になっている理由は、CRTディスプレイが80文字幅だったDOSの時代から残っているためだと思います。

こちらもご覧ください


最近のモニターはテキストモードで80文字より広くできますか?
macropas 2008年

これを機能させるには、フレームバッファモードで実行する必要がある場合があります(ただし、私は間違っている可能性があります。しばらく
時間がかかり

フレームバッファモードを使用せずに幅が132文字のSVGAモードがいくつかありますが、それらはかなり偶然にサポートされています。これらのモードの1つが私の回答に記載されています。
スタイルのコーディング

3
それはそれよりもずっと前に戻ります。IBMがCRTディスプレイを80カラム幅にしたのは、パンチカードの幅が80カラムだったからです。
dan04 2010

2

また、Console2などの別のターミナルアプリケーションを使用することもできます。これにより、ウィンドウのサイズを任意に変更できます(透明度、フォントを使用できるなど)。それは素晴らしいアプリケーションです。私はそれに切り替えましたが、今cmd.exeは絶対に必要なときだけ使用します。


1

上下左右にスクロールするため、システムで最初に行うことは、幅を180に定義して保存することです。スタックトレースがほとんどの部分を折り返す必要がないように、通常はそれで十分ですが、大量のスペースを無駄にするほどではありません。

その間、垂直サイズ(スクロールバックバッファー)を9に設定します。いつかやってよかったです。


1

MSは多くの点で「下位互換性」を重視しているため、この場合、標準の80ワイドウィンドウがないと、どういうわけか人々を不安にさせるという見当違いの疑いがあると思います。

もちろん、それが固定された80文字幅にプログラムされていて、それが非常に普遍的であった場合、追加のプロパティ設定が少しハックだった可能性があります。


1

限定です。見てみな。(私はバッファではなくウィンドウサイズを意味します)

設定できる最大幅は制限されていますが、画面の解像度によって異なります。解像度が1024 x 768に設定されている場合、コマンドプロンプトの幅では128にしか到達できないことがわかります。128/1024 = .125

その比率は全体的に一貫していることがわかります。(3つのモニターのうち2つで)2000x768でRDPセッションを実行しており、最大幅は250です。

さて、実際には、actaulモニターのサイズより少し大きいことがわかりますが、私は3つのモニターすべてで個別のデスクトップを実行しています。(本質的に、3つの1024x768解像度)、2つ以上のモニターにまたがってコマンドプロンプトを拡大するなど、簡単なことをしたい場合は、できません。(私は非常に長いパス(diruse.exe / etcなど)で物事を行うときにしたいです...)

-c


2
フォントサイズを小さくすると、(比較的)ウィンドウサイズが大きくなります。1600x1200の画面で幅が300を超えました。
マイケルマイヤーズ

それでも線幅を大きくして、ウィンドウをスクロールすることができます。私はVGAの時代から160か180の鉱山を作りました。
ビルK

0

-1

Unix / GNUのような開発に必要なものの使いやすさと機能性を向上させると、Microsoftのパートナーの商用プラットフォームとしてのWindowsが弱体化するからです。これを防ぐことは、改良された端末などの開発者向けの他の大企業の製品や、ワードプロセッサ、ビデオプレーヤーなどの他の一般的なサードパーティ製品が、既存のUnix / GNUソフトウェアと競合しないことを意味します。これがなければ、Windowsは収益性の高いプラットフォームにはならず、Microsoftはデスクトップの独占権を失うことになります。

これが端末が悪い理由です。MSVCにはPOSIX API、C99サポートがなく、リストは続きます。明確にするために、一般的なUnix / GNUテクノロジーと開発は意図的にサポートされていないため、大規模な商用ソフトウェア会社がそれらと競合する必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.