gui_w32.txt For Vim バージョン 9.1. Last change: 2024 Jan 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特有の要素。
==============================================================================
1. GUIを始める gui-w32-start
Win32のGUIバージョンは、どんな名前で起動されたかなんておかまい無しに、いつも
GUIでスタートする。
GUIは常にWindowsのサブシステムとして実行される。ほとんどのシェルはVimを起動し
た直後にコマンドプロンプトへ自動的に復帰する。そうでなかったら、"start" コマン
ドを使うと良い:
コンソールバージョンに -g オプションを付けても gvim.exe が実行されて GUI を
スタートできる:
つこの機能を有効にしてコンパイルされていなければならない。
コンソールバージョンから :gui を使うこともできる。しかし、これは実験的な機能
で、かつこの機能を有効にしてコンパイルされていなければならない。
セッションファイルを使って現在のコンソール Vim の状態が GUI Vim で再生成される。
Note: 全てのフォント(太字、斜体)は同じ大きさでなければならない!!! そうしない
場合、文字が欠けたり表示がゴチャゴチャになったりしてしまうだろう。Vimはフォン
トの大きさを検査していない。画面上でのピクセルサイズが同じでなければならない。
同じポイントサイズのフォントでも、同じピクセルサイズのフォントだとは限らないこ
とに注意! 加えてフォントの位置情報(アセントとディセント)も同じでなければなら
ない。
Win32 GUIではメニューが拡張されている: "編集/フォント設定"。Windowsの標準フォ
ントセレクトダイアログが起動される。
メニューの高さ設定は、Win32 GUIでは動作しない。
gui-win32-maximized
Vimのウィンドウを最大化した状態で起動したいのならば、vimrcかgvimrcに次のコマン
ドを書き加える:
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" に:
こういう方法もある:
る。しかし、常に働くわけではない。
ファイルをダブルクリックしてVimで開いた時には、Vimはそのファイルのディレクトリ
へ移動する。
Vimを全画面で起動したい時には、openのアクションとして次のものを使用する:
新たにVimを違うディレクトリに置いた時(新しいバージョンを入手した時など)の、も
う一つの方法は:
1. Vimを使って開きたいファイルを選ぶ
2. <Shift-F10>を押す
3. メニューから "アプリケーションから開く" を選択する
4. "その他" をクリック
5. Vimの新しい位置を参照して、開くをクリックする。
6. "いつもこのアプリケーションを使う" をチェックする
7. OKをクリック
send-to-menu sendto
Vimを "送る" メニューに追加することもできる:
1. Windowsのエクスプローラーを起動する。
2. "送る" のためのディレクトリに移動する:
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ファイルに次の一行を追加する:
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がプログラムを実行した後、その終
了を待たないように望むのならば、次の構文を使用することができる:
==============================================================================
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)を参照。
例:
']' で始まるメニューは表示されないことに注意。
==============================================================================
7. コマンドライン引数 gui-w32-cmdargs
コマンドライン引数はコンソール版と同じ挙動となる。win32-cmdargs を参照。
==============================================================================
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 :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キーの組み合わせ(ほかのものでも)を
マッピングすることができる。いくつか例を示そう:
ニュー(Menu.vimで定義される)が表示される。
'~' はsimaltにおいて文字<Space>を表現するのに使われることに注意。
でVimのウィンドウを最小化する。
これらのキーは使用している言語によって異なることがある。
intellimouse-wheel-problems
インテリマウスのホイールを使用すると、Vimは入力を受け付けなくなることがある。
次の場所へ行き:
コントロールパネル - マウス - ホイール - スクロール - 例外
アプリケーションのリストにgvimを追加する。この問題はIntellimouseのドライババー
ジョン2.2を使用し、"ユニバーサルスクロール" を有効にしている時にだけ起こる。
XPM サポート w32-xpm-support
GVim は、MS-Windows で XPM ファイルのサポート付きでビルドすることができる。
+xpm_w32
詳細は Make_mvc.mak ファイルを見て、XPM で検索すること。
XPM サポートが動作するか試すには、以下を行うこと:
github から vim16x16.xpm ファイルを入手する必要があるかもしれない:
https://github.com/vim/vim/blob/master/runtime/vim16x16.xpm
キーコード変換戦略 w32-experimental-keycode-trans-strategy
Patch v8.2.4807 で、W32 の GVIM は、より多くのキーボードショートカットを使用で
きるようにすること、特に非標準のキーボードレイアウトをサポートすることを目的と
して、実験的なキーコード変換方法に変更された。このサポートを実装するために、
Win API TranslateMessage() 呼び出しは削除され、代わりにキーコードの認識が
ToUnicode() Win API 呼び出しに切り替えられた。このアプローチにより、多数の特殊
なケースが明らかになったが、これらは明らかに TranslateMessage() 実装によってカ
バーされており、それぞれ個別に対処する必要がある。したがって、当面はこの機能を
実験的であると宣言し、「古典的」キーコード変換方法をデフォルトとして再び復活さ
せることが決定された。
「実験的」キーコード変換方法の使用に関する議論は、おそらくまだしばらく続くだろ
う。それまでの間、W32 GVIM で「古典的」キーコード変換方法に戻るこの変更の影響
を受ける場合は、次のスニペットを使用して vimrc で「実験的」変換方法を再度有効
にすることができる。
同様に、「古典的」キーコード変換方法を元に戻す必要がある場合 (例えば、テスト目
的など)、以下を使用する:
あるいは (この方法は、test_mswin_event() を呼び出すことができない TINY GVIM ビ
ルドのために特に役立つ)、環境変数 VIM_KEYCODE_TRANS_STRATEGY を目的の値
("experimental" または "classic") に設定し、デフォルトをオーバーライドすること
もできる。例えば、dos プロンプトに以下のように入力する:
vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
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. "送る" のためのディレクトリに移動する:
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
メインのメニューバーには存在しないフローティングメニューを作成する。: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')
: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
キーコード変換戦略 w32-experimental-keycode-trans-strategy
Patch v8.2.4807 で、W32 の GVIM は、より多くのキーボードショートカットを使用で
きるようにすること、特に非標準のキーボードレイアウトをサポートすることを目的と
して、実験的なキーコード変換方法に変更された。このサポートを実装するために、
Win API TranslateMessage() 呼び出しは削除され、代わりにキーコードの認識が
ToUnicode() Win API 呼び出しに切り替えられた。このアプローチにより、多数の特殊
なケースが明らかになったが、これらは明らかに TranslateMessage() 実装によってカ
バーされており、それぞれ個別に対処する必要がある。したがって、当面はこの機能を
実験的であると宣言し、「古典的」キーコード変換方法をデフォルトとして再び復活さ
せることが決定された。
「実験的」キーコード変換方法の使用に関する議論は、おそらくまだしばらく続くだろ
う。それまでの間、W32 GVIM で「古典的」キーコード変換方法に戻るこの変更の影響
を受ける場合は、次のスニペットを使用して vimrc で「実験的」変換方法を再度有効
にすることができる。
:call test_mswin_event('set_keycode_trans_strategy', {'strategy': 'experimental'})
同様に、「古典的」キーコード変換方法を元に戻す必要がある場合 (例えば、テスト目
的など)、以下を使用する:
:call test_mswin_event('set_keycode_trans_strategy', {'strategy': 'classic'})
あるいは (この方法は、test_mswin_event() を呼び出すことができない TINY GVIM ビ
ルドのために特に役立つ)、環境変数 VIM_KEYCODE_TRANS_STRATEGY を目的の値
("experimental" または "classic") に設定し、デフォルトをオーバーライドすること
もできる。例えば、dos プロンプトに以下のように入力する:
set VIM_KEYCODE_TRANS_STRATEGY=experimental
gvim.exe
gvim.exe
vim:tw=78:sw=4:ts=8:noet:ft=help:norl: