vim-jp / vimdoc-ja / os_win32

os_win32 - Vimドキュメント

メインヘルプファイルに戻る
os_win32.txt  For Vim バージョン 8.2.  Last change: 2021 Apr 05


                  VIMリファレンスマニュアル    by George Reilly


                                                win32 Win32 MS-Windows
このファイルはVim Win32バージョンに特有の事柄についての文書である。

Win32 版の Vim は Windows XP, Vista, 7, 8, 10 で実行可能である。コンソール版と
GUI 版がある。

32 ビット版 Vim は 64 ビット版 MS-Windows システム上でも実行可能である。

1. 知られている問題点           win32-problems
2. Vimの起動                    win32-startup
3. スクリーン内容の復帰         win32-restore
4. マウスの使用                 win32-mouse
5. Windows 95での使用           win32-win95
6. Windows 3.1での使用          win32-win3.1
7. インストールパッケージ       win32-installer
8. Win32 ミニ FAQ               win32-faq

付け加えて、Win32とDOS共通の項目がいくつかある:
ファイルの位置                  dos-locations
バックスラッシュの使用          dos-backslash
標準のマッピング                dos-standard-mappings
画面出力とカラー                dos-colors
ファイルフォーマット            dos-file-formats
:cd コマンド                    dos-:cd
割り込み(インタラプト)          dos-CTRL-Break
一時ファイル                    dos-temp-files
Shellオプションのデフォルト     dos-shell
PowerShell のデフォルト         dos-powershell

Win32 GUI                       gui-w32

クレジット:
Win32バージョンはGeorge V. Reilly <george@reilly.org>による。
オリジナルのWindows NTへの移植はRoger Knobbe <RogerK@wonderware.com>による。
GUIバージョンはGeorge V. ReillyとRobert Webbによって作成された。

コンパイルする場合は "src/INSTALLpc.txt" を参照。       win32-compiling

==============================================================================
1. 知られている問題点                                   win32-problems

ファイル名補完を行っているとき、Vimは短いファイル名への一致も見つける。しかし、
それでもVimは長いファイル名への一致を見つけ、採用する。例えば、もしあなたが短
いファイル名 "this_i~1" を持つ、長いファイル名のファイル "this_is_a_test" を
持っているなら、コマンド ":e *1" は "this_is_a_test" の編集を始める。

==============================================================================
2. Vimの起動                                            win32-startup

カレントディレクトリ                                    win32-curdir

Vimにフルパスのファイル名("x:\" の形で始まる)を指定したとき、Vimはエクスプロー
ラーから起動されたと仮定してそのファイルのあるディレクトリをカレントディレクト
リにする。そうならないようにするにはファイルのパスにバックスラッシュ(\)の代わり
にスラッシュ(/)を使うこと。

        vim c:\text\files\foo.txt

これはカレントディレクトリを "C:\text\files" に変更する。

        vim c:/text\files\foo.txt

こうすればカレントディレクトリを変更しない。


端末オプション                                          win32-term

Win32バージョンのVimが認識できる唯一の端末の種類は "win32" であり、これは組み
込みである。'term' に他の何かを設定すると、Vimはたぶんとても奇妙な振る舞いを見
せることだろう。それゆえ、Vimは 'term' のデフォルト値を環境変数 "TERM" から取
得しない。

$PATH                                                   win32-PATH

Vim 実行ファイルのディレクトリが $PATH に追加される。これは主に「ツール」メ
ニューにある "!xxd" が動作するようにするためである。また、これにより
executable() が 1 を返すときは実際にその実行ファイルが実行可能であるように
なる。

コマンドライン引数                                      win32-cmdargs

コマンドラインからパラメーターへの解析は MS-Windows で標準化されていない。
Vim と gvim はかつては(7.4.432以前)、それをパースするために異なるロジックを用
いており、さらにどのコンパイラでコンパイルしたかにも依存していた。現在では Vim
も gvim も CommandLineToArgvW() Win32 API を使用しており、どちらも同じように動
作する。

基本的なルール:                                         win32-backslashes
      a) パラメーターは表示可能文字である
      b) パラメーターはスペースで区切られている
      c) ダブルクォートで囲めばパラメーターにスペースを含むことができる
      d) バックスラッシュ(\)が一つ以上の後に続くダブルクォート(")は特別な文
        字である。バックスラッシュの数を半分に割って小数を切捨てた数に意味が
        ある。奇数ならバックスラッシュはスペースやタブの効果を変える。偶数な
        らバックスラッシュはリテラルのダブルクォートを作る。

つまり:
        "       は特別なダブルクォート
        \"      はリテラルのダブルクォート
        \\"     はリテラルのバックスラッシュと特別なダブルクォート
        \\\"    はリテラルのバックスラッシュとリテラルのダブルクォート
        \\\\"   はリテラルのバックスラッシュ二つと特別なダブルクォート
        \\\\\"  はリテラルのバックスラッシュ二つとリテラルのダブルクォート
        etc.

例:
        gvim "C:\My Music\freude" +"set ignorecase" +/"\"foo\\" +\"bar\\\"

は "C:\My Music\freude" を開き、次のコマンドを実行する:
        set ignorecase; /"foo\ and /bar\"

これらのルールは CommandLineToArgvW API のリファレンスにも記載されている:
    https://msdn.microsoft.com/en-us/library/windows/desktop/bb776391.aspx

                                                        win32-quotes
クォートには追加のルールがある(これらはちゃんとドキュメント化されていない)。
前述の通り、ファイル名(もしくは他のコマンドライン引数)の中のクォートはバックス
ラッシュでエスケープできる。例。
        vim -c "echo 'foo\"bar'"

その代わりにクォートを3つ使う事もできる:
        vim -c "echo 'foo"""bar'"

クォートのルールは:

1. 一つの " はクォートの始まり。
2. 他の " や "" はクォートの終わり。もしクォートが "" で終わっているなら
   クォートされた文字列の終わりに " が生成される。

例えば、引数を1つずつ [] で囲った場合:
        "foo"           -> [foo]
        "foo""          -> [foo"]
        "foo"bar        -> [foobar]
        "foo" bar       -> [foo][bar]
        "foo""bar       -> [foo"bar]
        "foo"" bar      -> [foo"], [bar]
        "foo"""bar"     -> [foo"bar]


==============================================================================
3. スクリーン内容の復帰                                 win32-restore

'restorescreen' がセットされているとき(これはデフォルト)、終了時、または外部コ
マンド実行時、Vimはコンソールの元の内容を復帰する。これを行いたくない場合は、
":set nors" を使うとよい。'restorescreen'

==============================================================================
4. マウスの使用                                         win32-mouse

Win32バージョンのVimはマウスの使用をサポートする。2ボタンマウスを使用している
場合、中ボタンは左と右の両方のボタンを同時に押すことによってエミュレートでき
る - しかし、Win32 GUIで右ボタンクリックによるポップアップメニューを有効にし
ていると('mouse' を参照)、左ボタンを先にクリックした際、エラーが発生する。
                                                        mouse-using

マウスが機能しない場合には、コンソールの "簡易編集モード" プロパティを無効にし
てみよ。

==============================================================================
5. Windows 95での使用                                   win32-win95
                                        windows95 windows98 windowsme
Windows 95/98/ME のサポートはパッチ 8.0.0029 にて削除された。これを使いたいと
きは、これよりも古いバージョンを入手する必要がある。

==============================================================================
6. Windows 3.1での使用                                  win32-win3.1

                                win32s windows-3.1 gui-w32s win16
かつて Windows 3.1 や 3.11 上で動作する gvim の特別なバージョンがあった。
パッチ 7.4.1364 にてサポートは削除された。

==============================================================================
7. インストールパッケージ                               win32-installer

Windows版のシンプルなインストーラは http://www.vim.org/download.php (安定バー
ジョン)にあり、ナイトリービルドも
https://github.com/vim/vim-win32-installer/releases/ にある。

ナイトリービルドには32bitと64bitのビルドが含まれ、ほとんどの機能が有効になって
おり通常は追加の暗号化署名されたインストーラなので、Windowsから問題報告される
ことはない。

インストーラを利用するには、単純にexeファイルを実行する。以下のスイッチもサポー
トされる:

    gvim_<version>.exe /S           -> ダイアログなしのサイレントインストール
    gvim_<version>.exe /D=C:\vim    -> c:\vim ディレクトリへのインストール
                                    -> /D は最後の引数でなくてはいけない
    gvim_<version>.exe /S /D=c:\vim -> c:\vim へのサイレントインストール

$VIM 環境変数を設定することでもデフォルトのインストールディレクトリを指定する
ことができる。

==============================================================================
8. Win32 ミニ FAQ                                       win32-faq

Q. フォントを変える方法は?
A. GUIバージョンでは、'guifont' オプションを使用すればよい。例:
        :set guifont=Lucida_Console:h15:cDEFAULT
   コンソールバージョンでは、コンソール自体のフォントを設定する必要がある。
   これはVimから行うことはできない。

Q. Windows NT上でデッドキーを打つ方法は?
A. デッドキーはNT 3.51上で機能する。単に、他のアプリケーションでやっているのと
   同じようにすればよい。
   NT 4.0では、標準のロケール(コントロールパネルのキーボードで設定する)が、現
   在アクティブなロケールと同じであることを確認する必要がある。そうしないと、
   NTのコードは混乱しクラッシュしてしまう! これはNT 4.0の問題であり、本質的に
   Vimの問題ではない。

Q. VimでUnix NFSファイルサーバー上のシンボリックリンクファイルを編集している。
   ファイルを書込むとき、Vimはシンボリックリンクを "介して書込む" ことをしな
   い。代わりに、シンボリックリンクを削除し、その場所に新しいファイルを作成す
   る。これは何故か?
A. Unixでは、Vimはリンク(シンボリック、ハード)に対応している。オリジナルファイ
   ルのバックアップが作られ、そしてオリジナルファイルが上書きされる。これは
   ファイルの全てのプロパティが保たれることを保証する。非Unixシステムでは、オ
   リジナルファイルは改名され、新しいファイルが書込まれる。保護ビットのみがオ
   リジナルファイルと同じように設定される。しかし、これはリンクなどの機構の存
   在する、NFSマウントされたファイルシステムにおいて適切に動作しない。現在の
   バージョンにおいてこの問題を避ける唯一の方法は、
   ":set nobackup nowritebackup" によって、バックアップファイルを作らないこと
   である。'writebackup'

Q. Samba を通して Unix ファイルサーバー上のファイルを Vim で編集している。この
   ファイルを書き込むと、ファイルの所有者が変わってしまう。なぜか?
A. ファイルを書き込むとき、Vim は元のファイルをリネームし、それをバックアップ
   とする (ファイルの書き込みが途中で失敗した場合に備えるため)。そしてバッファ
   が新規ファイルとして書き込まれる。すると Samba はそのファイルに対してファイ
   ルシステムのデフォルト所有者を設定する。その結果、元の所有者と変わってしま
   う。これを避けるには、オプション 'backupcopy' を "yes" にすること。すると
   バックアップ用に元のファイルのコピーを作ってから、元のファイルを上書き保存
   するようになる。こうすればファイルの所有者は変わらない。

Q. ":make" の出力を実行中に見たい場合は?
A. 基本的には、入力(この場合はmakeの出力)を標準出力とエラーファイルの両方にコ
   ピーする、teeプログラムを使えばよい。tee(とその他多くのGNUツール)は、
   http://gnuwin32.sourceforge.net か http://unxutils.sourceforge.net
   から得られる。もしくは、最新のGNUツールのCygnusバージョン
   http://www.cygwin.com を使ってみてもよい。その他のWin32用のUnixコマンドはこ
   のサイトに列挙されている。
   http://directory.google.com/Top/Computers/Software/Operating_Systems/Unix/Win32/
   teeを手に入れたら、_vimrcに、以下のように設定する
        set shellpipe=\|\ tee


Q. VisionFSが動いているリモートマシンにファイルを保存しておいたところ、それら
   が消えてしまった!
A. VisionFSは、ある種のドット(.)と3文字の拡張子のファイル名を扱えない。SCOによ
   れば、この振舞いは16ビットDOS/Windows環境との互換性のために必要とされるそう
   である。以下の2つのコマンドで、この振舞いを実演できる:

        echo Hello > file.bat~
        dir > file.bat

   この結果、"dir" コマンドは新しい "file.bat" というファイルを作成しないで、
   "file.bat~" を更新する。Vimにおいても、"foo.bat" という名前の既存のファイル
   を編集するときにこれと同じことが起こる、Vimの標準の機能では、'~' をファイル
   名の後に付け加えてテンポラリファイルを作成するからである。ファイルが書込ま
   れたとき、これは上書きされる羽目になる。

    解決法: _vimrcファイルに次のコマンドを加える:
        set backupext=.temporary

Q. カーソルの点滅頻度を変更する方法は?
A. できない! これはNTコンソールの制限である。NT 5.0では全てのコンソールウィン
   ドウに対して、同時に点滅頻度を設定できるようになるといわれている。

                                                        :!start
Q. 非同期的に外部コマンドやプログラムを実行したり、ドキュメントや URL を既定の
   プログラムで開くにはどうしたらよいか?
A. :!を使って外部コマンドを実行している場合、"start" と共に実行できる。例えば
   notepad を起動するには:
        :!start notepad
    既定のイメージビューワーで "image.jpg" を開くには:
        :!start image.jpg
    現在のファイルのフォルダーを Windows エクスプローラーで開くには:
        :!start %:h
    既定のブラウザーで Vim のホームページを開くには:
        :!start http://www.vim.org/

   "start" を使うと、Vimは他のスクリーンに切り替えたり、新しいコンソールを開い
   たり、プログラムが終了するまで待ったりしなくなる; つまり、走らせるプログラ
   ムは編集中のファイルに何の影響も与えない。:!startで始まったプログラムは、
   Vimの開いたファイルハンドルを受け渡されないため、Vimより早く終了する必要は
   ない。
   このような特別な動作を避けるには ":! start" を使う。
   利用可能な引数が二つある (次の Q 参照):
       /min  ウィンドウが最小化される。
       /b    コンソールウィンドウが表示されない。
   指定できるのはどちらか一方だけである。二番目の引数が start コマンドで実行さ
   れる。

Q. プログラムを非同期で実行したときにそのウィンドウを非表示にするには?
A. あなたの実際の目的に応じて二つの解決方法がある:
   1) /min フラグを使ってプログラムを最小化ウィンドウで実行する (他はそのま
      ま)。この方法はコンソールアプリケーションでも GUI アプリケーションでも使
      える。
   2) /b フラグを使って、コンソールウィンドウを作成せずにコンソールアプリケー
      ションを実行する (GUI アプリケーションに対しては効果なし)。このフラグ
      は、実行するアプリケーションが入力を必要としないことがわかっている場合の
      み使うこと。その入力ストリーム (stdin) は \\.\NUL にリダイレクトされるの
      で (stdout と stderr も同じ)、入力が使われる場合は EOF エラーが発生する
      だろう。

   コンソールアプリケーションの例。Exuberant ctags を実行する:
        :!start /min ctags -R .
   実行が完了すると "tags" ファイルがカレントディレクトリに作成される。タスク
   バーでウィンドウタイトルが点滅するのに気づくだろう。時間が掛かるコマンドな
   らはっきりと見える。
   では、"tags" ファイルを削除して次のコマンドを実行する:
        :!start /b ctags -R .
   先程と同じ "tags" ファイルが作成されるが、今回はタスクバーは点滅しない。
   GUI アプリケーションの例:
        :!start /min notepad
        :!start /b notepad
   最初のコマンドは notepad を最小化状態で実行する。二番目のものは notepad を
   普通に実行する。

                                                windows-icon
Q. Vimのアイコンが好きではないのだが、変えられるだろうか?
A. はい、'runtimepath' のディレクトリの中の bitmaps/vim.ico に好きなアイコンを
   置くとよい。例: ~/vimfiles/bitmaps/vim.ico


 vim:tw=78:ts=8:noet:ft=help:norl:
関連キーワード:  Vim, usr, 実行, クォート, バージョン, bar, コマンド, コンソール, ダブル, 編集