*gui_w32.txt* For
Vim バージョン 7.3. Last change: 2011 Jul 23
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特有の要素。
{Vi にはWindowsのGUIは無い}
==============================================================================
1. GUIを始める
*gui-w32-start*
Win32のGUIバージョンは、どんな名前で起動されたかなんておかまい無しに、いつも
GUIでスタートする。
GUIは常にWindowsのサブシステムとして実行される。殆どのシェルはVimを起動した直
後にコマンドプロンプトへ自動的に復帰する。そうでなかったら、"start"コマンドを
使うと良い:
Note: 全てのフォント(太字、斜体)は同じ大きさでなければならない!!!。そうしない
場合、文字が欠けたり表示がゴチャゴチャになったりしてしまうだろう。Vimはフォン
トの大きさを検査していない。画面上でのピクセルサイズが同じでなければならない。
同じポイントサイズのフォントでも、同じピクセルサイズのフォントだとは限らないこ
とに注意!。加えてフォントの位置情報(アセントとディセント)も同じでなければなら
ない。
Win32 GUIではメニューが拡張されている: "編集/フォント設定"。ウィンドウズの標準
フォントセレクトダイアログが起動される。
メニューの高さ設定は、Win32 GUIでは動作しない。
*gui-win32-maximized*
Vimのウィンドウを最大化した状態で起動したいのならば、vimrcかgvimrcに次のコマン
ドを書き加える:
Win32sかWindows 3.1もしくは3.11で動くgvim.exeも存在する。
|win32s|参照。
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"に:
ファイル名にスペースを含むファイルを正しく扱うためにクォート(")が必要。
こういう方法もある:
これにより幾つかの状況で、短い形式のファイル名(8.3形式)を避けることができ
る。しかし、常に働くわけではない。
ファイルをダブルクリックしてVimで開いた時には、Vimはそのファイルのディレクトリ
へ移動する。
Vimを全画面で起動したい時には、openのアクションとして次のものを使用する:
新たにVimを違うディレクトリに置いた時(新しいバージョンを入手した時など)の、も
う一つの方法は:
1. Vimを使って開きたいファイルを選ぶ
2.
<Shift-F10>を押す
3. メニューから"アプリケーションから開く"を選択する
4. "その他"をクリック
5. Vimの新しい位置を参照して、開くをクリックする。
6. "いつもこのアプリケーションを使う"をチェックする
7. OKをクリック
*send-to-menu* *sendto*
Vimを"送る"メニューに追加することもできる:
You can also install Vim in the "Send To" menu:
1. Windowsのエクスプローラを起動する。
2. "送る"のためのディレクトリに移動する:
Windows 95: %windir%\sendto (e.g. "c:\windows\sendto")
Windows NT: %windir%\profiles\%user%\sendto (e.g.
"c:\winnt\profiles\mattha\sendto").
3. ファイル表示枠の上で右クリックして新規作成→ショートカット。
4. ショートカットウィザードに従ってVIM/GVIMへのフルパスを指定。
Vimにファイルを送ると、Vimはファイルのあるディレクトリに移動する。しかし長い
ディレクトリ名は短い(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 5.6
DisplayName Vim 5.6: Edit with Vim popup menu entry
UninstallString
{path}\uninstal.exe
{path}は実行可能ファイルのあるディレクトリパスに置き換える。
{default}はキー自信の値なので、タイプしない。
ポップアップメニューから"Edit with Vim"を削除するには、上記のレジストリ項目を
削除すればよい。uninstal.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\\vim62\\gvim.exe \"%1\""
[HKEY_CLASSES_ROOT\.htm\OpenWithList\gvim.exe]
[HKEY_CLASSES_ROOT\*\OpenWithList\gvim.exe]
----------------------------------------------------------
"c:\\vim\\vim62" をgvim.exeが実際にある場所に変更すること。
これをアンインストールするにはVimのアンインストーラーを使うか "regedit" を
使って手作業でレジストリエントリを削除する。
==============================================================================
3. クリップボードを使う
*gui-clipboard*
Windowsにはテキストを一時的に格納(コピー)し、取り出す(ペースト)できるクリップ
ボードがある。Vimでは幾つかの方法でクリップボードに対応している。他のシステム
については
|gui-selections|を参照。
"*レジスタにはクリップボードの内容が反映される。
|quotestar|
'clipboard'オプションに文字列"unnamed"が含まれている時には、名前なしレジスタが
同じになる。こうすることで、ヤンク(Vimにおけるコピー"y")やペースト(Vimにおける
貼り付け"p")にクリップボードを、"*を付けることなく使用できる。
デフォルトでは
'guioptions'に'a'フラグは含まれていない。これはその操作を行った
時にだけ、テキストがクリップボードへ送られるを意味している。単に視覚的に選択
(Visualモード)しただけではクリップボードには送られない。'a'フラグを加えれば、
(Visualモードで選択するだけで)操作をせずにもクリップボードへ送られる
*mswin.vim*
標準的なMS-Windowsの
CTRL-X、
CTRL-Cおよび
CTRL-Vを使うには、
$VIMRUNTIME/mswin.vimスクリプトを使用する。_vimrcファイルに次の一行を追加する:
CTRL-Cがクリップボードへのコピーになってしまうので、操作を停止すること(無限
ループに陥ったスクリプトを停止するなど)が、できなくなってしまう。代わりに
CTRL-Breakが使える。
CTRL-Z がアンドゥになる。そのため、このキーでVimをサスペンドすることはできない。
代わりに
|:suspend|を使うこと(これがサポートされていればだが)。
*CTRL-V-alternative* *CTRL-Q*
CTRL-Vがペーストに使われてしまうので、方形視覚選択(Visualモードの一種)を開始す
ることができない。これには
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"で非同期的に起動されたアプリケーションには、これは当ては
まらない)
Windows 95では、実行されるコマンドのウィンドウは、DOSとの可能な限りの互換性の
ため(これが問題!)常に80x25の大きさになってしまう。デフォルトのシステムフォント
が使用される。NTでは、コントロールパネルの"コンソール"によって設定された内容が
デフォルトで使用される。Win32sでは、DOSボックスのプロパティはWindowsのディレク
トリにある_default.pifで決定される。
*msdos-mode*
もしも外部プログラムを使用したときに、"このプログラムはMS-DOSモードで起動しま
す…"のようなダイアログが表示されたならば、関連付けられたショートカットのプロ
パティを変更することでこれを解消することができる:
- Windowsエクスプローラを使用して使用されたcommand.comを探す。恐らく
c:\command.com、c:\dos\command.com、c:\windows\command.comなどのどれか。
- マウスの右ボタンで、command.comのプロパティを選択。
- プログラムタブの"詳細設定"を選択。
- "MS-DOSモードで起動する"をチェック解除。
- "設定"を2度クリック。
*win32-!start*
通常、Vimはコマンドの実行が終了するのを待つ(これは多くのシェルコマンドの出力を
Vimが取り込んで使用できるようにするため)。Vimがプログラムを実行した後、その終
了を待たないように望むのならば、W95とNTでは次の構文を使用することができる:
"/min" 引数を指定すると、ウィンドウは最小化される。
Win32sでは、代わりのウィンドウに移らなければならないだろう。Windows 3.1xにVim
に戻っている間にも、バックグラウンドでDOSコマンドを実行するように設定するのを
忘れないこと。
==============================================================================
5. 特別な色
*win32-colors*
Win32では、通常のDOSでの色が使用される。
|dos-colors|を参照。
付け加えて、システムが構成している色を使用することができる。それらはSys_XXXと
して知られ、XXXの部分は下のリストに示される、割り当てられているシステムカラー
名である(完全な解説はWin32の文章を参照)。大文字小文字は区別されない。注意:
Win32sではこれら全ての色がサポートされているわけではない。
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*
付け加えて、"rgb.txt"で定義される色も使うことができる。このファイルはX11のもの
として知られている。何行かを抜粋する:
これはファイルのレイアウトを示している: 最初に赤、緑、そして青の輝度を10進数で
記述し、続いて色の名前を定義している。4つのフィールドはスペースで区切られてい
る。
rgb.txtはX11のディストリビューションから手に入れることができる。
"/usr/X11R6/lib/X11/"あたりのディレクトリにおいてあることが多い。Vimでは
$VIMRUNTIMEディレクトリに置く。だから"$VIMRUNTIME/rgb.txt"にファイルが見つける
ことができる。
==============================================================================
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|)を参照。
例:
"ファイル"メニューが(あれば)切取メニューとして表示される。
メインのメニューバーには存在しないフローティングメニューを作成する。
']'で始まるメニューは表示されないことに注意。
==============================================================================
7. コマンドライン引数
*gui-w32-cmdargs*
パラメータの中のコマンドラインの分析は MS Windows で標準化されていない。GVim
はコマンドラインの分析のロジックを提供しなければならない。このロジックはVim
をコンパイルするのに使われたシステムが提供するロジックとは異なるだろう。この
違いはダブルクォート(")の使い方が一般的でないのと関係する。
引数の "C:\My Music\freude.txt" と "+/Sch\"iller" は同じように扱われる。引数
"+/Sch""iller" はgvimやvim、それがどのようにコンパイルされたかによって、扱い
が変わります。
ルール:
a) パラメータは表示可能文字である
b) パラメータはスペースで区切られている
c) ダブルクォートで囲めばパラメータにスペースを含むことができる
d) バックスラッシュ(\)が一つ以上の後に続くダブルクォート(")は特別な文
字である。バックスラッシュの数を半分に割って小数を切捨てた数に意味が
ある。奇数ならバックスラッシュはスペースやタブの効果を変える。偶数な
らバックスラッシュはリテラルのダブルクォートを作る。
つまり:
" は特別なダブルクォート
\" はリテラルのダブルクォート
\\" はリテラルのバックスラッシュと特別なダブルクォート
\\\" はリテラルのバックスラッシュとリテラルのダブルクォート
\\\\" はリテラルのバックスラッシュ二つと特別なダブルクォート
\\\\\" はリテラルのバックスラッシュ二つとリテラルのダブルクォート
etc.
例:
は "C:\My Music\freude" を開き、次のコマンドを実行する:
==============================================================================
8. その他色々
*gui-w32-various*
*gui-w32-printing*
"ファイル/印刷"メニューはシンタックスハイライトを使って印刷する。
|:hardcopy|を
参照してください。もしもテキストを装飾なしで印刷したいのなら、デフォルトのプリ
ンタがインストールされていれば次のようにできるでしょう。
Vimでは多くのMS Windows標準の機能をサポートしている。それらの幾つかは別の場所
で説明されている:
|'mouse'|、
|win32-hidden-menus|を参照。
*drag-n-drop-win32*
Vimのウィンドウに1つもしくは複数のファイルをドラッグ&ドロップすることができ、
それらは普通に開かれる。
|drag-n-drop|を参照。
*:simalt* *:si*
:si[malt]
{key} Alt と
{key} の同時押しをシミュレートする。
{Vi にはない機能} {Win32バージョンだけの機能}
通常、Vimでは使用可能なマッピングを増やすために、Alt-
<Key>の全ての組み合わせを
使うことができる。これはメニューにアクセスするためのAltキーの標準的な使い方と
衝突する。
標準的な振る舞いをさせるための近道は、
'winaltkeys'オプションに"yes"を設定する
ことである。しかしこうするとAltを使用したマッピングは一切使えなくなる。
もう一つの方法は
'winaltkeys'に"menu"を指定することである。マッピングされていな
いALTキーだけが、メニューのショートカットとしてWindowsに解釈される。だけども現
在の状態に依存することは許さない。
これを回避するために、(
'winaltkeys'が"yes"でない時に):simaltコマンドで、
WindowsのスタイルでAltキーを押すふりを、Vimにさせることができる。これを使って
Windows標準のアクションを興すための、Altキーの組み合わせ(ほかのものでも)をマッ
ピングすることができる。いくつか例を示そう:
これでAlt-Fを押すとキーストロークのAlt→Fがシミュレートされ、'ファイル(F)'メ
ニュー(Menu.vimで定義される)が表示される。
このマッピングによりAlt-SpaceでVimウィンドウのシステムメニューが表示される。
'~'はsimaltにおいて文字
<Space>を表現するのに使われることに注意。
Control-
Nに、Alt-Spaceに
Nを続けるマッピングを施す。これはシステムメニュー経由
でVimのウィンドウを最小化する。
これらのキーは使用している言語によって異なることがある。
*intellimouse-wheel-problems*
インテリマウスのホイールを使用すると、Vimは入力を受け付けなくなることがある。
次の場所へ行き:
コントロールパネル - マウス - ホイール - スクロール - 例外
アプリケーションのリストにgvimを追加する。この問題はIntellimouseのドライババー
ジョン2.2を使用し、"ユニバーサルスクロール"を有効にしている時にだけ起こる。
vim:tw=78:sw=4:ts=8:ft=help:norl: