vim-jp / vimdoc-ja / gui_w32

gui_w32 - Vim日本語ドキュメント

メインヘルプファイルに戻る English | 日本語
gui_w32.txt   For Vim バージョン 8.0.  Last change: 2014 Dec 20


                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" コマン
ドを使うと良い:
        start gvim [options] file ..

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 NT: %windir%\profiles\%user%\sendto (e.g.
               "c:\winnt\profiles\mattha\sendto")
   Windows XP: C:\Documents and Settings\%user%\SendTo
   Windows Vista: C:\Users\%user%\AppData\Roaming\Microsoft\Windows\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-XCTRL-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
付け加えて、"rgb.txt" で定義される色も使うことができる。このファイルはX11のも
のとして知られている。何行かを抜粋する:

  255 218 185              peach puff
  205 133  63              peru
  255 181 197              pink

これはファイルのレイアウトを示している: 最初に赤、緑、そして青の輝度を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)を参照。

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

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

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

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

パラメーターの中のコマンドラインの分析は MS Windows で標準化されていない。
GVim はコマンドラインの分析のロジックを提供しなければならない。このロジック
はVimをコンパイルするのに使われたシステムが提供するロジックとは異なるだろう。
この違いはダブルクォート(")の使い方が一般的でないのと関係する。
引数の "C:\My Music\freude.txt" と "+/Sch\"iller" は同じように扱われる。引数
"+/Sch""iller" はgvimやvim、それがどのようにコンパイルされたかによって、扱い
が変わる。

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

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

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

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

==============================================================================
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} の同時押しをシミュレートする。
                        {Vi にはない} {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
        :exe 'sign define vimxpm icon=' . $VIMRUNTIME . '\\vim16x16.xpm'
        :exe 'sign place 1 line=1 name=vimxpm file=' . expand('%:p')


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