*gui_w32.txt*   For Vim バージョン 9.0.  Last change: 2022 Mar 09


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


Win32でのVimのグラフィカルユーザーインターフェイス	*gui-w32* *win32-gui*

1. GUIを始める			|gui-w32-start|
2. デフォルトエディタVim	|vim-default-editor|
3. クリップボードを使う		|gui-clipboard|
4. シェルコマンド		|gui-shell-win32|
5. 特別な色			|win32-colors|
6. ダイアログとブラウズ		|gui-w32-dialogs|
7. コマンドライン引数		|gui-w32-cmdargs|
8. その他色々			|gui-w32-various|

その他の関連した文章:
|gui.txt|	GUIの一般的な要素。
|os_win32.txt|	Win32特有の要素。


==============================================================================
1. GUIを始める						*gui-w32-start*

Win32のGUIバージョンは、どんな名前で起動されたかなんておかまい無しに、いつも
GUIでスタートする。

GUIは常にWindowsのサブシステムとして実行される。ほとんどのシェルはVimを起動し
た直後にコマンドプロンプトへ自動的に復帰する。そうでなかったら、"start" コマン
ドを使うと良い: >
	start gvim [options] file ..
<							*E988*
コンソールバージョンに |-g| オプションを付けても gvim.exe が実行されて GUI を
スタートできる。
	vim -g [options] file ..
この機能を動作させるには、gvim.exe が vim.exe と同一のディレクトリに存在し、か
つこの機能を有効にしてコンパイルされていなければならない。

コンソールバージョンから `:gui` を使うこともできる。しかし、これは実験的な機能
で、かつこの機能を有効にしてコンパイルされていなければならない。
セッションファイルを使って現在のコンソール Vim の状態が GUI Vim で再生成される。

Note: 全てのフォント(太字、斜体)は同じ大きさでなければならない!!! そうしない
場合、文字が欠けたり表示がゴチャゴチャになったりしてしまうだろう。Vimはフォン
トの大きさを検査していない。画面上でのピクセルサイズが同じでなければならない。
同じポイントサイズのフォントでも、同じピクセルサイズのフォントだとは限らないこ
とに注意! 加えてフォントの位置情報(アセントとディセント)も同じでなければなら
ない。

Win32 GUIではメニューが拡張されている: "編集/フォント設定"。Windowsの標準フォ
ントセレクトダイアログが起動される。

メニューの高さ設定は、Win32 GUIでは動作しない。

							*gui-win32-maximized*
Vimのウィンドウを最大化した状態で起動したいのならば、vimrcかgvimrcに次のコマン
ドを書き加える: >
	au GUIEnter * simalt ~x
<

Vim をプラグインとして使う				*gui-w32-windowid*

普通に gvim が起動されると、gvim のウィンドウがトップレベルで作成される。コマ
ンドラインオプション |--windowid| に10進または16進の数値を指定すると、Vim はそ
の ID を持つウィンドウの子ウィンドウを作成する。これによって、Vim を他のアプリ
ケーションのプラグインとして使うことができる。これは完全にプログラマ向けのイン
ターフェイスであり、Vim を正しく起動するアプリケーションの対応なくしては何の役
にも立たない。

==============================================================================
2. デフォルトエディタVim				*vim-default-editor*

Vimをあるファイルタイプのデフォルトエディタにするには:
1. Windowsのエクスプローラーを起動する
2. ツール/フォルダオプション -> ファイルタイプ (W2K + IE5.5)
3. Vimを使用したい全てのファイルタイプに対して、gvimのパスを設定する。(拡張子
   の無いファイルタイプに対しては、ファイルタイプを指定するフィールドに3つのス
   ペースを置くことで対応できる)
   アクションの "open" に: >
	gvim "%1"
<  ファイル名にスペースを含むファイルを正しく扱うためにクォート(")が必要。
   こういう方法もある: >
	gvim "%L"
<  これにより幾つかの状況で、短い形式のファイル名(8.3形式)を避けることができ
   る。しかし、常に働くわけではない。

ファイルをダブルクリックしてVimで開いた時には、Vimはそのファイルのディレクトリ
へ移動する。

Vimを全画面で起動したい時には、openのアクションとして次のものを使用する: >
	gvim -c "simalt ~x" "%1"

新たにVimを違うディレクトリに置いた時(新しいバージョンを入手した時など)の、も
う一つの方法は:
1. Vimを使って開きたいファイルを選ぶ
2. <Shift-F10>を押す
3. メニューから "アプリケーションから開く" を選択する
4. "その他" をクリック
5. Vimの新しい位置を参照して、開くをクリックする。
6. "いつもこのアプリケーションを使う" をチェックする
7. OKをクリック

						*send-to-menu* *sendto*
Vimを "送る" メニューに追加することもできる:
1. Windowsのエクスプローラーを起動する。
2. "送る" のためのディレクトリに移動する:
   Windows XP: C:\Documents and Settings\%user%\SendTo
   Windows Vista: C:\Users\%user%\AppData\Roaming\Microsoft\Windows\SendTo .
3. ファイル表示枠の上で右クリックして新規作成→ショートカット。
4. ショートカットウィザードに従ってVIM/GVIMへのフルパスを指定。

Vimにファイルを送ると、Vimはファイルのあるディレクトリに移動する。しかしいくつ
かのWindowsのバージョンでは長いディレクトリ名は短い(MS-DOS)形式で表示されてし
まうことに注意。これはWindowsの "送る" の仕組みによる制限である。

						*notepad*
notepad.exe(メモ帳)をgvim.exeに置き換えてしまうこともできるが、これには副作用
もある。いくつかのプログラムはnotepad.exeに依存していて、例えばファイルを印刷
するために "notepad -p" を使っているからである。メモ帳(notepad)はそのままにし
ておいて、Vimを起動するためのほかの方法を使ったほうが良い。

						*win32-popup-menu*
もっと抜本的なアプローチは、右マウスボタンメニューに "Edit with Vim" という項
目を追加するものである。これを使うとあらゆるファイルをVimで編集できるようにな
る。

これは上述のファイルの関連付けと共存することができる。ファイルの関連付けは、
Vimで開始することを「デフォルトのアクション」にしてしまう点が違う。"Edit with
Vim" メニュー項目を使うと、ダブルクリックで開ける既に存在するファイルの関連付
けはそのままにして、したい時にはいつでもVimでファイルを編集することができる。
例えば、"*.mak" はmakeプログラムに関連付けることができる。この場合、そのファイ
ルをダブルクリックすればmakefileが実行されるし、"Edit with Vim" を選べば
makefileを編集することができる。

どんなファイルでも選択し、右クリックで "Edit with gvim" と呼ばれるメニューオプ
ションを表示させることができる。このメニューオプションを選択すると、選択した
ファイルがgvimによって開かれる。複数のファイルを選択した場合には、二つのメ
ニューオプションが提示されるだろう:
"Edit with multiple gvims"  -- 1つのファイルにつき1つのgvimが起動される
"Edit with single gvim"     -- 選んだ全てのファイルが1つのgvimで開かれる
さらに、もしもすでにgvimが起動しているなら:
"Edit with existing gvim    -- すでに起動しているgvimでそのファイルの編集を開
                               始する。

"edit with existing Vim" メニューはレジストリを設定することで無効化できる。
HKLM\Software\Vim\Gvim に DisableEditWithExisting という名前のエントリを追加す
ればよい。値は何でもよい。
						*install-registry*
"install.exe" プログラムを使用すれば、簡単に "Edit with Vim" メニュー項目を追
加することができる。これはレジストリに幾つかの項目を書き加える。

同じことを手動で行うこともできる。これは非常に複雑である! できればinstall.exe
を使うことをオススメする。

1. "regedit" でレジストリエディタを起動する。
2. 次のキーを追加する:
   キー		キーの名前		    値 ~
   HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}
		{default}		    Vim Shell Extension
   HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\InProcServer32
		{default}		    {path}\gvimext.dll
		ThreadingModel		    Apartment
   HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim
		{default}		    {51EEE242-AD87-11d3-9C1E-0090278BBD99}
   HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
		{51EEE242-AD87-11d3-9C1E-0090278BBD99}
					    Vim Shell Extension
   HKEY_LOCAL_MACHINE\Software\Vim\Gvim
		path			    {path}\gvim.exe
   HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 8.2
		DisplayName		    Vim 8.2: Edit with Vim popup menu entry
		UninstallString		    {path}\uninstall.exe

   {path}は実行可能ファイルのあるディレクトリパスに置き換える。
   {default}はキー自身の値なので、タイプしない。

ポップアップメニューから "Edit with Vim" を削除するには、上記のレジストリ項目
を削除すればよい。uninstall.exeプログラムは同じことをしてくれる。Windows標準
の "アプリケーションの追加と削除" のリストの、エントリを使うこともできる。

このエントリがファイルタイプの関連付けを抑制してしまうことに気がついたら、手動
で関連付けをやり直す(上記を参考に、Windowsのエクスプローラーを使って)。これは
Windows NTの幾つかのバージョンでだけ起こるらしい(Windowsのバグ?)。手続き:
1. ファイルタイプの名前を見つける。これはレジストリエディタを起動し、
   \\HKEY_CLASSES_ROOTで拡張子を探すことで行える。
2. Windowsエクスプローラーでは、表示→オプション→ファイルタイプ。リストの中か
   らファイルタイプを探し出し "編集" をクリック。アクションのリストで、デフォ
   ルトとして使用したいものを選択し(通常は "開く" アクション)、"標準" ボタンを
   クリックする。

"アプリケーションから開く" コンテキストメニュー		*win32-open-with-menu*
("Open With...")

Vimのインストーラを使うならエクスプローラーのメニューの "アプリケーションから
開く" にVimを加えるか選択することができる。これはVimでいろんなファイルを編集す
るなら重要である。(不明瞭な理由で)全てのファイルには使えない。したがって "Edit
with Vim" メニューの方が使いやすい。

これを追加する理由の一つがインターネットエクスプローラーから直接ファイルを編集
できるようにするためである。これを有効にするには "Tools" メニューから
"Internet Options..." を選択し、出てきたダイアログウィンドウの "Programs" タ
ブの "HTML editor" にVimを選択する。そこにVimがなければインストールは正常に完
了していない。

このスクリプトを使って手作業で設定できる。

----------------------------------------------------------
REGEDIT4

[HKEY_CLASSES_ROOT\Applications\gvim.exe]

[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell]

[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit]

[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command]
@="c:\\vim\\vim82\\gvim.exe \"%1\""

[HKEY_CLASSES_ROOT\.htm\OpenWithList\gvim.exe]

[HKEY_CLASSES_ROOT\*\OpenWithList\gvim.exe]

----------------------------------------------------------

"c:\\vim\\vim82" をgvim.exeが実際にある場所に変更すること。

これをアンインストールするにはVimのアンインストーラを使うか "regedit" を使って
手作業でレジストリエントリを削除する。

==============================================================================
3. クリップボードを使う					*gui-clipboard*

Windowsにはテキストを一時的に格納(コピー)し、取り出す(ペースト)できるクリップ
ボードがある。Vimでは幾つかの方法でクリップボードに対応している。他のシステム
については|gui-selections|を参照。

"*レジスタにはクリップボードの内容が反映される。|quotestar|

'clipboard' オプションに文字列 "unnamed" が含まれている時には、名前なしレジス
タが同じになる。こうすることで、ヤンク(Vimにおけるコピー "y")やペースト(Vimに
おける貼り付け "p")にクリップボードを、"* を付けることなく使用できる。これが動
作しない場合は 'clipboard' オプションに文字列 "unnamedplus" を使用する。

デフォルトでは 'guioptions' に 'a' フラグは含まれていない。これはその操作を行っ
た時にだけ、テキストがクリップボードへ送られることを意味している。単に視覚的に
選択 (Visualモード)しただけではクリップボードには送られない。'a' フラグを加え
れば、(Visualモードで選択するだけで)操作をせずにもクリップボードへ送られる。

							*mswin.vim*
標準的なMS-WindowsのCTRL-X、CTRL-CおよびCTRL-Vを使うには、
$VIMRUNTIME/mswin.vimスクリプトを使用する。_vimrcファイルに次の一行を追加する:
>
	source $VIMRUNTIME/mswin.vim

CTRL-Cがクリップボードへのコピーになってしまうので、操作を停止すること(無限
ループに陥ったスクリプトを停止するなど)が、できなくなってしまう。代わりに
CTRL-Breakが使える。

CTRL-Z がアンドゥになる。そのため、このキーでVimをサスペンドすることはできない。
代わりに|:suspend|を使うこと(これがサポートされていればだが)。

						*CTRL-V-alternative* *CTRL-Q*
CTRL-Vがペーストに使われてしまうので、矩形ビジュアル選択を開始することができな
い。これにはCTRL-Qを代用できる。挿入モードやコマンドラインモードにおいても、も
ともとのCTRL-Vの代わりにCTRL-Qを使用することができる。しかしターミナルでCTRL-Q
が制御のために使われる時はうまく機能しない。

NOTE: クリップボードのサポートにはまだかなりのバグがある。|todo|参照。

==============================================================================
4. シェルコマンド					*gui-shell-win32*

Vimは外部コマンドを実行するのに、どんなコマンドでも実行できるようにするために
Vimとは別個のウィンドウを使用する。外部コマンドはちょうどDOSプロンプトから実行
されるように、独自の実行環境を獲得する。

							*win32-vimrun*
外部コマンドの実行は "vimrun" コマンドを用いて間接的に行われる。これが働くため
には "vimrun.exe" コマンドが実行パスになければならない。そうでなければVimの実
行ファイルと同じディレクトリになければならない。"vimrun" を見つけることができ
なければ、コマンドは直接実行され、そのため外部コマンドの実行が終了するとすぐに
DOSウィンドウが閉じられる。
警告: もしも "X" ボタンでこのウィンドウを閉じてしまい、強制終了することを確認
するウィンドウでアプリケーションを本当に終了してしまうと、Vimも一緒に強制終了
してしまう!  (":!start" で非同期的に起動されたアプリケーションには、これは当て
はまらない)

コントロールパネルの "コンソール" によって設定された内容がデフォルトで使用され
る。

							*win32-!start*
通常、Vimはコマンドの実行が終了するのを待つ(これは多くのシェルコマンドの出力を
Vimが取り込んで使用できるようにするため)。Vimがプログラムを実行した後、その終
了を待たないように望むのならば、次の構文を使用することができる: >
	:!start [/min] {command}
"/min" 引数を指定すると、ウィンドウは最小化される。

==============================================================================
5. 特別な色						*win32-colors*

Win32では、通常のDOSでの色が使用される。|dos-colors|を参照。

付け加えて、システムが構成している色を使用することができる。それらはSys_XXXと
して知られ、XXXの部分は下のリストに示される、割り当てられているシステムカラー
名である(完全な解説はWin32の文章を参照)。大文字小文字は区別されない。Note:

Sys_3DDKShadow		Sys_3DFace			Sys_BTNFace
Sys_3DHilight		Sys_3DHighlight			Sys_BTNHilight
Sys_BTNHighlight	Sys_3DLight			Sys_3DShadow
Sys_BTNShadow		Sys_ActiveBorder		Sys_ActiveCaption
Sys_AppWorkspace	Sys_Background			Sys_Desktop
Sys_BTNText		Sys_CaptionText			Sys_GrayText
Sys_Highlight		Sys_HighlightText		Sys_InactiveBorder
Sys_InactiveCaption	Sys_InactiveCaptionText		Sys_InfoBK
Sys_InfoText		Sys_Menu			Sys_MenuText
Sys_ScrollBar		Sys_Window			Sys_WindowFrame
Sys_WindowText

恐らく一番便利な値はこれらだろう
	Sys_Window	    通常のウィンドウの背景の色
	Sys_WindowText      通常のウィンドウの文字の色
	Sys_Highlight       選択されたテキストの背景の色
	Sys_HighlightText   選択されたテキストの文字の色

他にもこの様な色も存在する:
Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet,

								*rgb.txt*
付け加えて、デフォルトのカラーリストで定義される色も使うことができる。詳細は
|:colorscheme| を参照のこと。これらの色は以前は $VIMRUNTIME/rgb.txt で定義され
ていたもので、現在は $VIMRUNTIME/colors/lists/default.vim にて初期化された値が
|v:colornames| にある。

==============================================================================
6. ダイアログとブラウズ				*gui-w32-dialogs* *dialog*

コンソールバージョンから受け継がれる伝統的なインターフェイスはもちろん、さらに
Win32 GUIでは幾つかの操作に見慣れたWindowsのコンポーネントを使用することができ
る。


6.1 ダイアログ

その他のバージョンではコンソールベースで行われていた "confirm" ファミリ(すなわ
ち 'confirm' オプションと|:confirm|コマンドと|confirm()|関数)で、GUIベースのダ
イアログが表示される。'guioptions' の 'c' フラグでこれを変更できる。


6.2 ファイルブラウザー

ファイルを編集するコマンドの前に ":browse" を付けると、存在するファイルを選択
するためのウィンドウ選択ダイアログが使用される。|:browse|を参照。


6.3 切取メニュー

Win32 GUI版ではMotifの「切取メニュー」をエミュレートする。個々のメニューの最上
位には、小さな「切り取り線」のグラフィックスが存在する。これを選択すると同じメ
ニューのエントリがある、フローティングウィンドウが作成される。フローティングメ
ニューを使用すれば、いちいちメニューバーに移動することなく、オリジナルのメ
ニューの(サブメニューも含めた)項目にアクセスすることができる。
これはサブメニューの奥の方のコマンドを頻繁に使用するときに非常に便利。
切取メニューは好きなところに配置し、常にVimのメインウィンドウよりも手前に表示
される。普通に閉じることで取り除くこともできる;もちろんVimを終了すれば自動的に
それらも閉じられる。

							*:tearoff* *:te*
:te[aroff] {name}	{name}というメニューを切り取る。指定されたメニューは少
			なくとも一つ以上のサブエントリを持たねばないが、メ
			ニューバーに表示されている必要は無い。
			(|win32-hidden-menus|)を参照。

例: >
	:tearoff ファイル(F)
"ファイル" メニューが(あれば)切取メニューとして表示される。 >

	:amenu ]Toolbar.Make	:make<CR>
	:tearoff ]Toolbar
メインのメニューバーには存在しないフローティングメニューを作成する。

']' で始まるメニューは表示されないことに注意。

==============================================================================
7. コマンドライン引数					*gui-w32-cmdargs*

コマンドライン引数はコンソール版と同じ挙動となる。|win32-cmdargs| を参照。

==============================================================================
8. その他色々						*gui-w32-various*

							*gui-w32-printing*
"ファイル/印刷" メニューはシンタックスハイライトを使って印刷する。|:hardcopy|
を参照すること。もしもテキストを装飾なしで印刷したいのなら、デフォルトのプリン
タがインストールされていれば次のようにできるだろう。 >
	:w >>prn

Vimでは多くのMS-Windows標準の機能をサポートしている。それらの幾つかは別の場所
で説明されている: |'mouse'|、|win32-hidden-menus|を参照。

							*drag-n-drop-win32*
Vimのウィンドウに1つもしくは複数のファイルをドラッグ&ドロップすることができ、
それらは普通に開かれる。|drag-n-drop|を参照。

							*:simalt* *:sim*
:sim[alt] {key}		Alt と {key} の同時押しをシミュレートする。
			{Win32バージョンだけの機能}
			Note: ":si" は "i" フラグ付きの ":s" になる。

通常、Vimでは使用可能なマッピングを増やすために、Alt-<Key>の全ての組み合わせを
使うことができる。これはメニューにアクセスするためのAltキーの標準的な使い方と
衝突する。
標準的な振る舞いをさせるための近道は、'winaltkeys' オプションに "yes" を設定す
ることである。しかしこうするとAltを使用したマッピングは一切使えなくなる。
もう一つの方法は 'winaltkeys' に "menu" を指定することである。マッピングされて
いないALTキーだけが、メニューのショートカットとしてWindowsに解釈される。だが、
現在の状態に依存することは許さない。
これを回避するために、('winaltkeys' が "yes" でない時に) :simaltコマンドで、
WindowsのスタイルでAltキーを押すふりを、Vimにさせることができる。これを使って
Windows標準のアクションを実行するための、Altキーの組み合わせ(ほかのものでも)を
マッピングすることができる。いくつか例を示そう: >

	:map <M-f> :simalt f<CR>
これでAlt-Fを押すとキーストロークのAlt→Fがシミュレートされ、'ファイル(F)' メ
ニュー(Menu.vimで定義される)が表示される。 >
	:map <M-Space> :simalt ~<CR>
このマッピングによりAlt-SpaceでVimウィンドウのシステムメニューが表示される。
'~' はsimaltにおいて文字<Space>を表現するのに使われることに注意。 >
	:map <C-n> :simalt ~n<CR>
Control-Nに、Alt-SpaceにNを続けるマッピングを施す。これはシステムメニュー経由
でVimのウィンドウを最小化する。

これらのキーは使用している言語によって異なることがある。

						*intellimouse-wheel-problems*
インテリマウスのホイールを使用すると、Vimは入力を受け付けなくなることがある。
次の場所へ行き:
	コントロールパネル - マウス - ホイール - スクロール - 例外

アプリケーションのリストにgvimを追加する。この問題はIntellimouseのドライババー
ジョン2.2を使用し、"ユニバーサルスクロール" を有効にしている時にだけ起こる。

XPM サポート						*w32-xpm-support*

GVim は、MS-Windows で XPM ファイルのサポート付きでビルドすることができる。
|+xpm_w32|
詳細は Make_mvc.mak ファイルを見て、XPM で検索すること。

XPM サポートが動作するか試すには、以下を行うこと: >
	:help
	:let runtime = escape($VIMRUNTIME, ' \')
	:exe 'sign define vimxpm icon=' .. runtime .. '\\vim16x16.xpm'
	:exe 'sign place 1 line=1 name=vimxpm file=' .. expand('%:p')
<
github から vim16x16.xpm ファイルを入手する必要があるかもしれない:
https://github.com/vim/vim/blob/master/runtime/vim16x16.xpm


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