*os_dos.txt*	For Vim バージョン 9.1.  Last change: 2025 Nov 09


		  VIM リファレンスマニュアル	by Bram Moolenaar


							*dos* *DOS*
このファイルはMS-DOSおよびWin32バージョンのVimに共通の特殊事項をまとめる。
|os_win32.txt|や|os_msdos.txt|も参照すること。

1. ファイルの位置		|dos-locations|
2. バックスラッシュを使う	|dos-backslash|
3. 標準マッピング		|dos-standard-mappings|
4. 画面出力と色			|dos-colors|
5. ファイルの書式		|dos-file-formats|
6. :cdコマンド			|dos-:cd|
7. 中断				|dos-CTRL-Break|
8. 一時ファイル			|dos-temp-files|
9. 標準のシェルオプション	|dos-shell|
10. PowerShell			|dos-powershell|

==============================================================================
1. ファイルの位置					*dos-locations*

Vimの実行可能ファイルと同じディレクトリに、ヘルプおよび構文のサブディレクトリ
があるならば、特に何もする必要はない。レジストリや環境変数も設定する必要はな
い。ただVimのディレクトリが検索パスに含まれるか、デスクトップ上のショートカッ
トを利用するだけでよい。

vimrcファイル("_vimrc" と "_gvimrc")は通常、ランタイムファイルがあるディレクト
リの1つ上のディレクトリに置かれる。もしどこか違う場所に置きたいならば、環境変
数$VIMにそのディレクトリを設定する。例: >
	set VIM=C:\user\piet
これは "c:\user\piet\_vimrc" を見つけるだろう。
Note: これはコンピュータを複数人で使う時のために用意されている。
      普通はデフォルトの場所に _vimrc ファイルを置くこと。

実行可能ファイルを別の場所に移動したい場合は、環境変数$VIMを設定する必要があ
る。ランタイムファイルは "$VIM/vim{version}" から見つけられる。例: >
	set VIM=E:\vim
これはバージョン8.2のランタイムファイルを "e:\vim\vim82" から見つけるだろう。
Note: これは推奨しない。ランタイムディレクトリに実行可能ファイルを入れておくこ
      とをお勧めする。

実行可能ファイルを移動し、「かつ」 "_vimrc" と "_gvimrc" を他の場所に置きたい
場合は、$VIMにvimrcファイルの場所を、$VIMRUNTIMEにランタイムファイルの場所を設
定する。
例: >
	set VIM=C:\usr\piet
	set VIMRUNTIME=E:\vim\vim82
これは "c:\user\piet\_vimrc" ファイルと "e:\vim\vim82" にあるランタイムファイ
ルを見つけるだろう。

さらに情報が欲しいときは|$VIM|と|$VIMRUNTIME|を参照すること。

「システムのプロパティ」ダイアログボックスから環境変数をユーザーごとに別々に設
定することができる。そのための手順は:
1. Windows キー + R をタイプし、「ファイル名を指定して実行」ダイアログボックス
   を開く。
2. "sysdm.cpl" と入力し、"OK" ボタンを押す。「システムのプロパティ」ダイアログ
   ボックスが開く。
3. 「詳細設定」タブを選択し、「環境変数(N)...」ボタンを押す。「環境変数」ダイ
   アログボックスが開く。
4. 「ユーザー環境変数」リストから既存の変数を選択し、「編集(E)...」ボタンを押
   して編集する。あるいは「新規(N)...」ボタンを押して新しい変数を作成する。
5. 変数の編集が終わったならば、"OK" ボタンを押して変更を保存する。

==============================================================================
2. バックスラッシュを使う				*dos-backslash*

ファイル名にバックスラッシュを使うことは問題となり得る。Viではいくつかのコマン
ドにおいて、バックスラッシュの数を半分にする。Vimはもう少し寛大で、ファイル名
からバックスラッシュを取り除かないので、":e c:\foo\bar" は期待通りに機能する。
しかしバックスラッシュが特別な文字(スペース、コンマ、バックスラッシュなど)の前
に現れた場合は、Vimはバックスラッシュを取り除く。問題を避けるにはスラッシュを
使用する: ":e c:/foo/bar" はうまく機能する。MS-DOSプログラムやWin32プログラム
のなかにはこれが問題となるものもあるので、Vimは問題を避けるために内部でスラッ
シュをバックスラッシュに置き換える。

スラッシュを使うのを好むのなら、'shellslash' オプションを設定する。するとVimは
ファイル名を展開するときにバックスラッシュをスラッシュに置き換える。これは
Unix-likeの 'shell' を使用しているときに特に有用である。

==============================================================================
3. 標準マッピング				*dos-standard-mappings*


以前の CTRL-PageUp と CTRL-PageDown へのマッピングは削除された。今、これらのキー
はそれぞれ次、前のタブページへジャンプする。|<C-PageUp>| |<C-PageDown>|

これらのキーを画面上の最初、最後の行へジャンプに使いたければ次のマッピングをす
ればよい:

キー		キーコード   Normal/Visualモード    挿入モード ~
CTRL-PageUp	<M-N><M-C-D>	    H		    <C-O>H
CTRL-PageDown	<M-N>v		    L$		    <C-O>L<C-O>$

さらに、次のキーがコピー/切り取り/貼り付けに利用できる。Win32とDJGPPバージョン
でのみ、これらはクリップボードを使用する。

Shift-Insert	テキストを貼り付ける(クリップボードから)	*<S-Insert>*
								*<C-Insert>*
CTRL-Insert	ビジュアルモードでテキストをコピーする(クリップボードに)
								*<C-Del>*
CTRL-Del	ビジュアルモードでテキストを切り取る(クリップボードに)
								*<S-Del>*
Shift-Del	ビジュアルモードでテキストを切り取る(クリップボードに)
CTRL-X		ビジュアルモードでテキストを切り取る(クリップボードに)

以下のマッピングは同様の目的を果たす(VimのWin32とDJGPPバージョン):

キー		キーコード   Normal	Visual	    挿入モード ~
Shift-Insert	<M-N><M-T>   "*P	"-d"*P      <C-R><C-O>*
CTRL-Insert	<M-N><M-U>		"*y
Shift-Del	<M-N><M-W>		"*d
CTRL-Del	<M-N><M-X>		"*d
CTRL-X		<C-X>			"*d

もしくは次のマッピング(VimのWin32ではないバージョン):

キー		キーコード   Normal	Visual	    挿入モード ~
Shift-Insert	<M-N><M-T>   P		d"0P	    <C-R><C-O>"
CTRL-Insert	<M-N><M-U>		y
Shift-Del	<M-N><M-W>		d
CTRL-Del	<M-N><M-X>		d

クリップボードがサポートされているときは、レジスタの "* が使える。

==============================================================================
4. 画面出力と色						*dos-colors*

画面出力の方法は、標準ではbiosコールを使用する。これはたいていのシステムで直ち
に機能する。ansi.sysは必要ない。現在の画面モードを設定するには ":mode" を使う。
|:mode|を参照すること。

Vimが使用する画面の色を変更するには|:highlight|コマンドを使用する。Normalハイ
ライトグループはVimが普通のテキストに使う色を特定する。例えば、背景色が青で文
字色が灰色にするには: >
	:hi Normal ctermbg=Blue ctermfg=grey
他に利用できるグループについては|highlight-groups|を参照すること。

DOSコンソールは太字や下線のような属性をサポートしていない。5つのモードで使用す
る色は9つの端末のオプションで設定できる。":highlight" コマンドによって直接色を
設定した場合には必要ないので注意すること; これらのオプションは古いバージョンの
Vimに互換性がある。'highlight' オプションは5つのモードがどの操作のときに使用さ
れるかを特定する。 >

	:set t_mr=^V^[\|xxm		反転モードの開始
	:set t_md=^V^[\|xxm		太字モードの開始
	:set t_me=^V^[\|xxm		普通のテキストに戻る

	:set t_so=^V^[\|xxm		standoutモードの開始
	:set t_se=^V^[\|xxm		普通のテキストに戻る

	:set t_us=^V^[\|xxm		下線モードの開始
	:set t_ue=^V^[\|xxm		普通のテキストに戻る

	:set t_ZH=^V^[\|xxm		斜字モードの開始
	:set t_ZR=^V^[\|xxm		普通のテキストに戻る

^VはCTRL-V
^[は<Esc>
xxは前景色と背景色の数字を足した10進数の数値に置き換える:

色			 前景色		  背景色	~
Black			    0		    0
DarkBlue		    1		   16
DarkGreen		    2		   32
DarkCyan		    3		   48
DarkRed			    4		   64
DarkMagenta		    5		   80
Brown, DarkYellow	    6		   96
LightGray		    7		  112
DarkGray		    8		  128 *
Blue, LightBlue		    9		  144 *
Green, LightGreen	   10		  160 *
Cyan, LightCyan		   11		  176 *
Red, LightRed		   12		  192 *
Magenta, LightMagenta	   13		  208 *
Yellow, LightYellow	   14		  224 *
White			   15		  240 *

* ディスプレイモードによっては128以上の色コードは利用できず、コード128は文字を
  点滅させるだろう。

0を使用した場合は、Vimの開始時の色にリセットされる(普通は7で背景色が黒、文字色
が淡い灰色であるが、これは上書きできる。もしコマンドプロンプトから標準色を上書
きした場合は、vimrc内の強調表示色をいくつか調整する必要があるかもしれない---下
を参照)。
これがt_meのデフォルトである。

それぞれの強調表示モードの標準:
	t_mr	112	 反転モード: 文字色Black(0)、背景色LightGray(112)
	t_md	 15	 太字モード: 文字色White(15)、背景色Black(0)
	t_me	  0	 通常モード(標準に戻る)

	t_so	 31	 standoutモード: 文字色White(15)、背景色DarkBlue(16)
	t_se	  0	 standoutモードの終了(標準に戻る)

	t_ZH	225	 斜字モード: 文字色DarkBlue(1)、背景色Yellow(224)
	t_ZR	  0	 斜字モードの終了(標準に戻る)

	t_us	 67	 下線モード: 文字色DarkCyan(3)、背景色DarkRed(64)
	t_ue	  0	 下線モードの終了(標準に戻る)

これらは反転表示でも良く見えるようために選ばれているが、好みで変更してよい。

例: >
   :set t_mr=^V^[\|97m	" 反転モードの開始: DarkBlue (1) on Brown (96)
   :set t_md=^V^[\|67m	" 太字モードの開始: DarkCyan (3) on DarkRed (64)
   :set t_me=^V^[\|112m	" ノーマルモードに戻る: Black (0) on LightGray (112)

   :set t_so=^V^[\|37m	" standoutモードの開始: DarkMagenta (5) on DarkGreen
									(32)
   :set t_se=^V^[\|112m	" ノーマルモードに戻る: Black (0) on LightGray (112)

==============================================================================
5. ファイルの書式					*dos-file-formats*

'fileformat' オプションに "dos" が設定されている場合(標準)、Vimは<NL>と<CR><NL>
をend-of-line (<EOL>)として認識する。ファイルを保存したときは、Vimは<CR><NL>を
使用する。このため、ファイルを編集して保存した場合は、Vimは<NL>を<CR><NL>で置
き換える。

'fileformat' オプションが "unix" であるならば、Vimは<NL>を<EOL>として使用し、
<CR>を^Mと表示する。

Vimはどんなモードで読み込んでもDosモードで保存する(":se ff=dos")ことによって、
<NL>を<CR><NL>に置き換えることができる。
VimはDosモードで読み込み、Unixモードで保存する(":se ff=unix")ことによって、
<CR><NL>を<NL>に置き換えることができる。

Vimは 'fileformats' が設定されている(標準)ときには自動的に 'fileformat' を設定
するので、あなたがしていることについて全く悩む必要がない。

スクリプトファイルやバイナリファイルを編集したいのならば、ファイルを読み込む前
に 'binary' オプションを設定するとよい。スクリプトファイルやバイナリファイルは
<NL>を含んでいて、Vimによって<CR><NL>に置き換えられてしまうかもしれない。Vimの
起動時に "-b" (binary)オプションをつけることによって、自動的に 'binary' を設定
することができる。

==============================================================================
6. :cdコマンド						*dos-:cd*

":cd" コマンドはドライブレターを認識し、カレントドライブを変更する。Cドライブ
にするには ":cd c:" とする。Dドライブの "foo" ディレクトリに移動するには
":cd d:\foo" とする。もしシステムがサポートしているならば、VimはUNC名も認識す
る; 例えば、
":cd \\server\share\dir"。|:cd|

==============================================================================
7. 中断							*dos-CTRL-Break*

検索を中断するにはCTRL-Cの代わりにCTRL-Breakを使用する。Vimはキーを読み終える
までCTRL-Cを検知しない。

==============================================================================
8. 一時ファイル						*dos-temp-files*

16ビットもしくは32ビットのDOSのみ:
Vimは以下のリストの順番で、ディレクトリが存在し、かつVimがファイルを生成できる
最初のディレクトリに一時ファイル(フィルタ用)を置く:
	$TMP
	$TEMP
	C:\TMP
	C:\TEMP
	現在のディレクトリ

Win32バージョン(コンソール、GUIともに):
Vimは標準的なWindows関数を使って一時ファイル名(フィルタ用)を取得する。以下のリ
ストの順番で、ディレクトリが存在し、かつVimがファイルを生成できる最初のディレ
クトリが使用される:
	$TMP
	$TEMP
	現在のディレクトリ

==============================================================================
9. 標準のシェルオプション				*dos-shell*

'sh' ('shell') オプションはWindows 95では "command.com"、Windows NTでは
"cmd.exe" が標準で設定されている。VimはSHELLが定義されている場合はSHELLを、
SHELLが定義されていない状態でCOMSPECが定義されている場合はCOMSPECを代わりに使
用する。Vimは外部コマンドを "<shell> /c <command_name>" として起動する。新しい
コマンドシェルを起動するにはCTRL-Zをタイプする。"exit" でVimに戻る。
'shell' |CTRL-Z|

サードパーティのシェルを使用する場合は、'shellcmdflag' ('shcf') と
'shellquote' ('shq') か 'shellxquote' ('sxq') オプションを設定する必要があるか
もしれない。不幸なことに、これは使っているVimのバージョンに依存する。例えば、
MKS Kornシェルやbashでは、オプションの値を以下のようになる:

		DOS 16ビット	    DOS 32ビット	Win32  ~
'shellcmdflag'	   -c			-c		 -c
'shellquote'	   "
'shellxquote'						 "

Dos 16ビットの例は次のようにシェルを起動する: >
	<shell> -c "command name" >file
Win32の例: >
	<shell> -c "command name >file"
DOS 32ビットでは、DJGPPが内部的にどうにかして処理する。

起動時にVimがWindowsの標準シェルを認識しない場合は "sh" が 'shell' オプション
内のどこかにあるかチェックする。存在するならば、Vimは 'shellcmdflag' と
'shellquote' または 'shellxquote' オプションを上記のように設定するだろう。

==============================================================================
10. PowerShell					*dos-powershell* *dos-pwsh*

Vim は PowerShell Desktop および PowerShell Core をサポートする。PowerShell
Desktop は Windows にインストールされている PowerShell のバージョンで、
PowerShell Core はクロスプラットフォームで動く別途ダウンロード可能なバージョン
である。使用しているのがどちらのバージョンであるかは PowerShell のプロンプトで
以下を入力することで確認できる - $PSVersionTable.PSEdition

起動時に 'shell' オプションのファイル名に "powershell" が含まれる時、Vimは
'shellcmdflag', 'shellxquote', 'shellpipe', 'shellredir' オプションについて以
下の値を設定する:

'shellcmdflag'	-Command
'shellxquote'	"
'shellpipe'	2>&1 | Out-File -Encoding default
'shellredir'	2>&1 | Out-File -Encoding default

起動時に 'shell' オプションのファイル名に "pwsh" が含まれる時、Vimは
'shellcmdflag', 'shellxquote', 'shellpipe', 'shellredir' オプションについて以
下の値を設定する:

'shellcmdflag'	-c
'shellxquote'	"
'shellpipe'	>%s 2>&1
'shellredir'	>%s 2>&1

Note: これらのオプションは、|.vimrc| ファイルを読み込んだ後にのみ設定される。
特に、|-c| による 'shell' オプションの設定は、他のシェル関連の設定を有効にする
には遅すぎる。コマンドライン経由でこのオプションをオーバーライドするには、
|--cmd| を使用することを検討すること。

PowerShell コマンドの実行で時間がかかる場合には 'shellcmdflag' の先頭を
"-NoProfile" にすることを試すこと。Note これにより PowerShell 環境のプロファイ
ルでの設定が行われるのを防ぐ。

'shell' 経由での PowerShell スクリプトの実行に問題がある場合には
'shellcmdflag' の先頭を "-ExecutionPolicy RemoteSigned -Command" にするのを試
すこと。詳細についてはオンラインの Windows のドキュメントにある PowerShell 実
行ポリシー設定を参照。

'shellcmdflag' で空白を含む複数のフラグを使用するときについては
|option-backslash| を参照。

'shellpipe' および 'shellredir' オプションの値は PowerShell Desktop の
UTF-16LE 出力を現在のあなたのコンソールのコードページに再エンコードする。
"default" を以下のどれかに変更することで出力を別のエンコーディングに強制できる:

	unicode		 - UTF-16LE (PowerShell 5.1 からのデフォルト値)
	bigendianunicode - UTF-16
	utf8		 - UTF-8
	utf7		 - UTF-7 (BOM なし)
	utf32		 - UTF-32
	ascii		 - 7-bit ASCII 文字セット
	default		 - システムのアクティブなコードページ (一般には ANSI)
	oem		 - システムの現在の OEM のコードページ

Note 上記のマルチバイト Unicode エンコーディングはそうでないと掲示がない限り
BOM から始まるものを含む。

PowerShell Coreの出力のデフォルトは BOM なしでエンコードされた UTF-8 である。
出力を別のエンコーディングに強制したい場合 'shellredir' と 'shellpipe' を
"2>&1 | Out-File -Encoding encoding" とし encoding を以下のどれかに設定する:

	ascii		 - 7-bit ASCII 文字セット
	bigendianunicode - UTF-16BE
	bigendianutf32	 - UTF-32BE
	oem		 - システムの現在の OEM のコードページ
	unicode		 - UTF-16LE
	utf7		 - UTF-7
	utf8		 - UTF-8
	utf8BOM		 - UTF-8 BOM あり
	utf8NoBOM	 - UTF-8 BOM なし (PowerShell Core からのデフォルト値)
	utf32		 - UTF-32

PowerShell Core 6.2 から、Encoding パラメータは登録されたコードページの数値
ID(-Encoding 1251)もしくは登録されたコードページ名文字列(-Encoding
"windows-1251")による指定もサポートする。詳細な情報は .NET ドキュメントの
Encoding.CodePage にある。

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