vim-jp / vimdoc-ja / os_dos

os_dos - Vimドキュメント

メインヘルプファイルに戻る
os_dos.txt    For Vim バージョン 8.2.  Last change: 2006 Mar 30


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


                                                        dos DOS
このファイルはMS-DOSおよびWin32バージョンのVimに共通の特殊事項をまとめる。
os_win32.txtos_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_czh   225      斜字モード: 文字色DarkBlue(1)、背景色Yellow(224)
        t_czr     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' を設定
するので、あなたがしていることについて全く悩む必要がない。
                                        'fileformat' 'fileformats'

スクリプトファイルやバイナリファイルを編集したいのならば、ファイルを読み込む前
に '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

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:
関連キーワード:  Vim, usr, モード, 設定, CTRL, 標準, バージョン, shell, キー, ディレクトリ