Contents

os_msdos - vimdoc

Home
*os_msdos.txt*  For Vim バージョン 7.3.  Last change: 2005 Mar 29


                  VIM REFERENCE MANUAL    by Bram Moolenaar


                                        *msdos* *ms-dos* *MSDOS* *MS-DOS*
このファイルはVimのMS-DOSバージョンに関する特記事項を記述する。

1. MS-DOS向けの2つのバージョン  |msdos-versions|
2. 既知の問題                   |msdos-problems|
3. 長いファイル名               |msdos-longfname|
4. Termcapコード                |msdos-termcap|
5. シフトされた矢印キー         |msdos-arrows|
6. ファイル拡張子               |msdos-fname-extensions|
7. メモリ利用と制限             |msdos-limitations|
8. シンボリックリンクファイル   |msdos-linked-files|
9. dosでのコピー/貼り付け       |msdos-copy-paste|

さらにWin32とDOSで共通の項目がいくつかある:
ファイルの位置                  |dos-locations|
バックスラッシュを使う          |dos-backslash|
標準マッピング                  |dos-standard-mappings|
画面出力と色                    |dos-colors|
ファイルの書式                  |dos-file-formats|
:cdコマンド                     |dos-:cd|
中断                            |dos-CTRL-Break|
一時ファイル                    |dos-temp-files|
標準シェルオプション            |dos-shell|

Vimのコンパイルに関してはsrc/INSTALL.pcを参照。         *msdos-compiling*

==============================================================================
1. MS-DOS向けの2つのバージョン                          *msdos-versions*

MS-DOSマシンで利用できるVimには2つのバージョンがある:

                                                        *dos16*
Dos16バージョン どんなMS-DOSシステム上でも使用でき、メモリは640 Kbyteまでしか
                使用しない。OS/2、Windows 95、NT上でも同様に動作する。いくつか
                のVim-specific機能(オートコマンド、構文強調表示など)を除外して
                ある。pre-386マシン上で使用することを推奨する。
                                                        *dos32*
Dos32バージョン 386プロセッサと|DPMI|ドライバが必要であり、すべての利用可能な
                メモリを使用する。長いファイル名とクリップボードをサポートして
                いるが、Windows NTでは「ない」。MS-DOS、Windows 3.1および
                Windows 95を推奨する。

Windows下で動作するVimも2つのバージョンがある:
Win32バージョン Windows 95かWindows NTが必要である、すべての利用可能なメモリを
                使用する、長いファイル名をサポートしている、など。Windows 95上
                ではいくつかの問題がある。Windows NTを推奨する。|os_win32.txt|
                を参照。
Win32 GUI       Win32バージョンと同様なものが要求されるが、コンソールの代わりに
                独自のウィンドウで動作する。スクロールバー、メニュー、などがあ
                る。Windows 95とWindows NTを推奨する。|gui-w32|を参照。

Dos32かWin32バージョンを使用することを推奨する。Dos16バージョンは大変大きなファ
イルでも編集できるが、大きな変更をした場合にメモリを枯渇しやすい。undoを無効に
するには: ":set ul=-1"。Dos16バージョンでの画面更新はDOS、Windows 95、Windows
NT上で最も速い; Windows NT上ではWin32バージョンも同じくらいの速さである。

                                                                *DPMI*
Dos32バージョンでは、MS-DOS上で動作するのにDPMIドライバが必要になるだろう。もし
Windowsが動作しているか、賢いメモリ管理がインストールしてあれば、おそらくすでに
機能しているだろう。もし"No DPMI"メッセージが出てきたら、DPMIドライバをインス
トールする必要がある。そのようなドライバは実行ファイルと共にCSDPMI4B.ZIPに含ま
れている。毎回Vimを起動する前に"cwsdpmi"を実行する。もしくは常駐させるように、
autoexec.batに"cwsdpmi -p"を記述する。"CSDPMI*.ZIP"の最新版の入手先は:
"ftp.neosoft.com:pub/users/s/sandmann"

                                                        *minimal-features*
16ビットバージョンのDOSは最小の機能でコンパイルされている。|+feature-list|を参
照してください。"T"でマークされているのがそれです。
feature.hを編集し、再コンパイルすることでこれら(のいくつか)を含めることができ
る。

==============================================================================
2. 既知の問題                                           *msdos-problems*

(MS-DOS 6.xで)書き込みキャッシュを使ってスマートドライブを使っているとき、
Vimには読み込み専用のファイルシステム(プロテクトされたフロッピーなど)にス
ワップファイルを作ることが可能である。しかしそうすると次のようなメッセージを
受け取るだろう
        A serious disk error has occurred .., Retry (r)?
こうなるとフロッピーのプロテクトを外すかコンピュータのスイッチを切る以外にはで
きる事がない。CTRL-ALT-DELも助けにならない。これはスマートドライブの問題であっ
てVimの問題では断じてない。他の点ではスマートドライブはうまく機能する。もしこ
れが困るようなら、書き込みキャッシュを使わないこと。

"share"コマンドが使われるまですでに開いているスワップファイルを読み込むことは
できない。すでにあるスワップファイルに関してよくわからない警告がでた場合には
"share"コマンドをconfig.sysかautoexec.batに書き込むとよい(MSDOSのドキュメント
を参照)。

Dos16バージョンでは同時に10ファイル(ウィンドウ内もしくはhidden)しか開くことが
できない。それ以上のファイルを扱おうとすると、ファイルを読んだときや書いたとき
にエラーになるだろう。それにはフィルタコマンドも含まれる。もしくはVimはメモリ
を枯渇し、不規則に問題が起きるだろう。

Dos32バージョンでは同時に開くことのできるファイル数は無制限ではない。制限数は
CONFIG.SYS内のFILES設定に依存する。標準では15である; もしたくさんのファイルを
編集する必要があるならば、この数を増やせばよい。
もしFILESが十分に高く設定されていない場合には、奇妙なエラーが発生し、シェルコ
マンドは破損の原因になるかもしれない!

Dos32バージョンでは長いファイル名が使用できる。ファイル名の補完を行なったとき、
短いファイル名に一致したものが見つかるだろう。しかし、これは該当する長いファイ
ル名の結果である。例えば、"this_i~1"という短いファイル名で表わされる
"this_is_a_test"という長いファイル名があったとき、":e *1"コマンドは
"this_is_a_test"の編集を開始する。

Dos32バージョンを使っているときDPMIサポートで問題があるならリソースを消費し
ているプログラムがconfig.sysにあるかどうか確認すること。"netx"がこの問題を起
こすことが知られている。これは"NetWare v. 3.26 Workstation shell"である。
バージョン3.32にすることでこの問題は解決する。

Dos32バージョンはクォーテーションを扱うように引数を解析する。これはファイル名
にスペースを含むファイルを編集するときに良い。例えば:
        vim "program files\accessories\ppp.scp"
副作用としてはシングルクォートが取り除かれてしまう。これはバックスラッシュをつ
けて回避する。例えば、"fi'le.txt"というファイルを編集するなら:
        vim fi\'le.txt

==============================================================================
3. 長いファイル名                                       *msdos-longfname*

Windows 95上で動作するDos32バージョンは長いファイル名が使用できる。それは標準
で機能するだろう。使用不可にしたい場合は以下の設定をする:
        set LFN=N
これはautoexec.batファイルに記述できる。

注: DJGPPをインストールしている場合は、おそらく"LFN=n"を含んだ"djgpp.env"ファ
イルがあるだろう。このとき、長いファイル名を使用可能にするには"LFN=Y"とする必
要がある。

==============================================================================
4. Termcapコード                                        *msdos-termcap*

もし別の出力方法(例えば、COMポート上のターミナルを使うとき)を利用したいならば、
ターミナル名を"pcansi"に設定する。必要ならばtermcapオプションを変更することが
できる(|terminal-options|を参照)。 通常のIBM ansi.sysはすべてのbuiltin pcansi
ターミナルのコードをサポートしていないので注意すること。もしansi.sysを使ってい
るのならば、以下のようにしてtermcapエントリt_alとt_dlを削除する必要がある。
   :set t_al= t_dl=
そうでなければ、画面は正しく更新されないだろう。nansi.sysやnnansi.sys、もしく
はansi.sysに代わるようなものを使うほうが良い。

もしCOM:ポートに接続されたターミナル上でVimを使いたいのならば、'bioskey'オプショ
ンをリセットする。そうでなければ、コマンドはPCキーボードから読み込まれるだろう。
CTRL-CCTRL-P'bioskey'をリセットした状態では、正しく機能しないかもしれない。

==============================================================================
5. シフトされた矢印キー                                 *msdos-arrows*

SHIFT-左矢印とSHIFT-右矢印の代わりに、CTRL-左矢印とCTRL-右矢印を使用する。上矢
印と下矢印はSHIFTやCTRLとともに使用することはできない。

==============================================================================
6. ファイル拡張子                               *msdos-fname-extensions*

MS-DOSはファイル名の拡張子を1つしか許可しない。したがって、拡張子を追加すると
きは、もとのファイル名にある'.'を'_'で置き換え、8文字に切り捨ててから新しい拡
張子(例えば".swp")が追加される。2つの例: "test.c"は"test_c.bak"になり、
"thisisat.est"は"thisisat.bak"になる。これらの問題を軽減するために、
'backupext'は標準で".bak"の代わりに"~"となっている。このとき"thisisat.est"のバッ
クアップファイルは"thisisat.es~"となる。'shortname'オプションは常に設定されて
いるため、利用できない。

==============================================================================
7. メモリ利用と制限                             *msdos-limitations*

スワップファイルはテキストの大部分を保持するのによく使われる。大変大きなファイ
ルも編集できるだろう。しかしながら、メモリはundoやその他のことに使用される。も
し大量のテキストを削除したなら、Dos16バージョンではメモリが底をつくだろう。

もしVimが"Out of memory"の警告を出したなら、編集を中止すべきだ。その後の編集作
業の結果は予想できない。'undolevels'を0に設定することでメモリをある程度節約す
る。大きな迷路上で迷走するマクロを動作させることは、メモリを枯渇させることを保
証する。なぜなら各々の変更はundoとして記憶されるからである。このような場合は
'undolevels'を負の数に設定する。これによりundoを完全に機能させないようにするだ
ろう。

                                                *msdos-clipboard-limits*
Dos32バージョンでは、これらの問題を避けるために拡張メモリを使用する。
しかし、ウインドウズのクリップボードを使うにはDosメモリを使わなければならな
い。つまり多量のテキストをウインドウズのクリップボードとやり取りするのは使用で
きるDosメモリの量に制限されます。

普通は"config.sys"に以下の行を追加すれば使用できる最大限のメモリを使えるように
なります。

        DOS=HIGH,UMB
        DEVICE=C:\WINDOWS\himem.sys
        DEVICE=C:\WINDOWS\emm386.exe RAM

Dos16バージョンにおいてconfig.sysをこのように変更することは、もしもそれだけの
メモリを装備していれば、利用可能なメモリを増やす役目も果たすだろう。

Dos16バージョンでは、1行の文字数がおよそ32000文字に制限されている。ファイルを
読み込んだ場合、行は自動的に分割される。しかし、1行が制限文字数を越えるような
編集すると予期しない結果になるかもしれない。

==============================================================================
8. シンボリックリンクファイル                   *msdos-linked-files*

unix NFSファイルサーバ上でシンボリックリンクされたファイルを編集したとき、問題
に突き当たるかもしれない。
ファイルを保存したとき、Vimはシンボリックリンク先には書き出さない。代わりに、
シンボリックリンクを削除して、その場所に新しいファイルを作成する。
Unix上では、Vimはリンク(シンボリックまたはハード)に対して準備してある。もとの
ファイルのバックアップ用コピーが作成され、もとのファイルを上書きする。これによ
りファイルのすべてプロパティが同じように残ることを保証する。Unixではないシステ
ム上では、もとのファイルは名前を変更され、新しいファイルが書き出される。保護ビッ
トのみが基のファイルと同じように設定される。しかしながら、これはリンクや他のも
のが存在するNFSマウントされたファイルシステム上では適切に機能しない。現在のバー
ジョンでこれを解決する唯一の方法は、":set nobackup nowritebackup"によってバッ
クアップファイルを作成しないようにすることである。 |'writebackup'|

Samba などのシステムを通して Unix のファイルシステムをマウントしたときにも似た
ような問題が起こる。Vim が新規ファイルを作成すると、そのファイルはマウントされ
たファイルシステムにデフォルトのユーザIDがつけられる。そのユーザIDは元のユーザ
IDと異なるかもしれない。この問題を避けるには、オプション 'backupcopy' を "yes"
に設定すること。

==============================================================================
9. dosでのコピー/貼り付け                       *msdos-copy-paste*

                                        *E450* *E451* *E452* *E453* *E454*
32ビットバージョンではレジスタ "* を使ってウインドウズのクリップボードを使用で
きます。メモリの許す限り多量のテキストをコピーできます。
|msdos-clipboard-limits|参照。Vimから他のVimにコピーする時は
(characterwise/linewise/blockwise)の特性も通知されます。

その他のバージョンでは以下を使うことができる。

(posted to comp.editors by John Velman <velman@igate1.hac.com>)

dos上のvim から/へ テキストを コピー/貼り付け する方法:

1) フルスクリーンからVIMが起動しているウィンドウを取得するにはalt+enterを押す。
   これはフルスクリーンとdosウィンドウを交互に切り替える。
   注: Windows 95では"Fast Pasting"プロパティのチェックをはずさなければならな
   い!  MS-DOSウィンドウのプロパティダイアログボックス上で、"MS-DOS
   Prompt/Misc/Fast pasting"へ行き、チェックされていないことを確認する。
   これを永続的にするには、"\windows\system\conagent.exe"のプロパティを変更す
   る。(Philip Nelsonから、未確認).

2) Vimに何かを貼り付けるには、Vimを挿入モードにする。

3) 貼り付けたいテキストをwindowsのクリップボード上に置く。

4) Vimウィンドウの左上にあるコントロールボックス(大きなマイナス符号に似ている)
   をクリックする。マウスを使いたくないならば、alt+スペースキーで代用できる。
5) ドロップダウンリストから"編集"を選ぶ。
6) さらに開いたドロップダウンリストから"貼り付け"を選ぶ。

Vimウィンドウからクリップボードへコピーするには、

1) コントロールボックスを選択し、コントロールドロップダウンメニューを表示する。
2) "編集"を選択する。
3) "範囲指定"を選択する。
4) キーボードやマウスを使って、コピーしたい部分をVimウィンドウから選択する。キー
   ボードの場合は矢印キーを使用し、選択範囲を広げるにはシフトキーを押しながら
   矢印キーを使用する。
5) 範囲を選択し終わったら'enter'キーを押す。これで選択範囲がwindowsのクリップ
   ボードにコピーされる。この方法は、7-10行目の4-25列というように、どんな矩形
   範囲でも選択できる。これはVIMウィンドウ内のどんなものでも含めることができる:
   例えば、:!dirの出力。

 vim:tw=78:ts=8:ft=help:norl: