*gui.txt* For Vim バージョン 8.1. Last change: 2019 Nov 16 VIMリファレンスマニュアル by Bram Moolenaar
Vim のグラフィカルユーザーインターフェイス
1. GUI の開始 | |gui-start| |
2. スクロールバー | |gui-scrollbars| |
3. マウス制禦 | |gui-mouse| |
4. GUI選擇の作成 | |gui-selections| |
5. メニュー | |menus| |
6. フォント | |gui-font| |
7. 附記 | |gui-extras| |
8. シェルコマンド | |gui-shell| |
他の GUI ドキュメント:
|gui_x11.txt| | X11 GUI に特有の項目について。 |
|gui_w32.txt| | Win32 GUI に特有の項目について。 |
まづは Vim が GUI に對應したバージョンであるか確認する必要がある。それは ":version
" コマンドで調べることができる。その出力が "with xxx GUI" または "MS-Windows 32 bit GUI version" を含んでゐれば問題ない。ここで "xxx" は MacVim, X11-Motif, X11-Athena, Photon, GTK2, GTK3 などである。
どのやうに GUI で起動するかは使用してゐるシステムに依存する。たいていはこのやうにして GUI 版の Vim を實行できる:
gvim [options] [files...]
Vim の X11 バージョンは GUI と GUI でないモードの兩方で實行することができる。|gui-x11-start| を參照。
gvimrc は GUI 固有の初期化コマンドを書くためのファイルである。gvimrc は常にファイル |vimrc| の後に讀み込まれる。環境變數 $MYGVIMRC
があると、その値が gvimrc の代はりに使はれる。
GUI の初期化は次の順序で行はれる:
:version
" でこれを確認できる。|$VIMRUNTIME| も參照。システムのメニューの讀み込みを省略するには ’guioptions’ に ’M’ を含める。
システムのメニューファイルはメニュー項目 "Buffers" (バッファ) の定義も含んでゐる。これを必要としないなら、ユーザーの .vimrc (.gvimrc ではない!) で "no_buffers_menu" を設定する:
:let no_buffers_menu = 1
Note:
構文强調表示を有效にするとメニューファイルも讀み込まれるため、メニュー項目 Buffers (バッファ) を無效にするのは ":syntax on
" の前にする。メニューに表示されるバッファの名前は 35 文字で切り詰められる。違ふ長さで切り詰めるなら、例へば 50 文字にするなら、次のやうにする::let bmenu_max_pathlen = 50
:version
" でこれを確認できる。|$VIM| も參照。
:version
" でこれを確認できる。
$HOME
が設定される。|$HOME-windows| を參照。
$MYGVIMRC
が設定されてゐないならば、$MYGVIMRC
に最初に見つかつたファイルの名前が代入される。
Note:
Vim を起動するときに、"-U" 引數を指定せずに "-u NONE" もしくは "-U NONE" を指定するか、あるいは "-U NONE" を指定して起動すると、最初のもの以外は全て實行されない。
これらは全て、ユーザーの .vimrc ファイルを讀み込む、といふやうな、通常の Vim の初期化の後に實行される。|initialization| を參照。
しかし、GUI ウィンドウは全ての初期化が實行された後に開かれる。GUI ウィンドウを開いた直後にいくつかのコマンドを實行したいなら、自動コマンドの |GUIEnter| イベントを使用する。例へば:
:autocmd GUIEnter * winpos 100 50
カスタマイズしたメニュー (|:menu| を參照) をセットアップしたり、CUI 版とは異なつた初期化をするために、gvimrc ファイルを使用することができる。
ユーザーの個人的な GUI 初期化ファイルを置くのに推奬される場所:
Unix と Mac OS X | $HOME/.gvimrc, $HOME/.vim/gvimrc |
OS/2 | $HOME/.gvimrc, $HOME/vimfiles/gvimrc, $VIM/.gvimrc |
MS-DOS と Win32 | $HOME/_gvimrc, $HOME/vimfiles/gvimrc, $VIM/_gvimrc |
Amiga | s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc, $VIM/.gvimrc |
個人的な初期化ファイルは上記の順に檢索され、最初に見つかつたものだけが讀み込まれる。
GUI 版の Vim でだけ意味を持つオプションがある。’guicursor’, ’guifont’, ’guipty’, ’guioptions’ である。それらは他の全てのオプションと共に |options.txt| で說明されてゐる。
GUI の Motif か Athena バージョン (GTK+ や Win32 バージョンではない) を使用してゐるならば、多くの X のリソースが有效である。|gui-resources| を參照。
端末の設定をする以外に文字の色を設定する方法はハイライトを設定することである。ハイライトの "Normal" グループは背景色と前景色を設定するために用ゐられる。(ナイスな) 例:
:highlight Normal guibg=grey90
"guibg" と "guifg" の設定は通常の背景と前景の設定よりも優先される。ハイライトの Normal グループに對するその他の設定は使用されない。フォントを設定するには ’guifont’ を使用する。
モード別にカーソルの色を設定するには、’guicursor’ オプションを參照。
Vim は起動時に、スクリーンに合はせてウィンドウの位置を調整しようとする。これはウィンドウの一部が隱れてしまはないやうにするためである。X Window System では、これは少し臆測を必要とする。’guiheadroom’ オプションでウィンドウタイトルとタスクバーに用ゐられる高さを變更することができる。
GUI vim ウィンドウの左上隅の現在の位置をピクセルで表示する。全てのバージョンで機能する譯ではない。|getwinpos()|, |getwinposx()| と |getwinposy()| も參照のこと。
與へられた {X} と {Y} の座標に GUI vim ウィンドウを移動する。座標はウィンドウの左上隅の位置をピクセル單位で指定する。全てのバージョンで機能する譯ではない。(新しい) xterm で機能する |xterm-color|。
GUI ウィンドウがまだ開いてゐないとき、この値はウィンドウが開かれるまで保留される。位置はスクリーンに合ふやうに調整される(可能なら)。
{width} (幅) と {height} (高さ) を指定してウィンドウの大きさを設定する。このコマンドは古いコマンド (Obsolete) なので、":set lines=11 columns=22
" を使用するやうにすること。
期待したよりも高さが低くなるなら、’guiheadroom’ オプションを確認すること。
X Window System では、これらのコマンドで Vim のウィンドウの情報を得られる:
:!xwininfo -id $WINDOWID :!xprop -id $WINDOWID :execute '!xwininfo -id ' . v:windowid :execute '!xprop -id ' . v:windowid
X で各國の文字を入力するためのインプットメソッドで XIM フレームワークに依るもの、特に iBus は、gvim で使用すると不具合が起こることが知られてゐる。スペースを入力できなかつたり、キーを押してからそれがアプリケーションに屆くまで大きな遲延が發生したりする。
對處療法としては gvim の起動引數に |-f| を付けてフォークをしないやうにすると症狀は出なくなる。理由は不明だが。
垂直スクロールバーと水平スクロールバーがある。’guioptions’ オプションでどれが表示されるかを設定することができる。
このやうな外觀になつてゐる (設定が ":set guioptions=mlrb" のとき):
+------------------------------+ | ファイル 編輯 ヘルプ | <- メニューバー(m) +-+--------------------------+-+ |^| |^| |#| テキストエリア |#| | | | | |v|__________________________|v| Vim ウィンドウ閒の -> |-+ File.c 5,2 +-| 通常のステータス行 |^|""""""""""""""""""""""""""|^| | | | | | | 別のファイルバッファ | | | | | | |#| |#| 左スクロールバー(l)-> |#| |#| <- 右 |#| |#| スクロールバー(r) | | | | |v| |v| +-+--------------------------+-+ | |< #### >| | <- 下 +-+--------------------------+-+ スクロールバー(b)
スクロールバーやメニューバーは ’guioptions’ から對應する文字を取り除くことで無效にできる。下スクロールバーは ’nowrap’ が設定されてゐるときだけ有用である。
各 Vim ウィンドウはとなりにスクロールバーを持つてゐて、上下にスクロールしてそのバッファ內のテキストの表示を移動できる。スクロールバーのつまみのサイズはウィンドウに見えてゐるバッファの割合を示してゐる。スクロールバーがずつと下方にドラッグされると、ファイルの最後の行はウィンドウの最上部に表示される。
ウィンドウが (他のウィンドウの擴大によつて) 高さゼロに縮小されると、そのスクロールバーは表示されなくなる。それはウィンドウが復元されるときに再び表示される。
ウィンドウを縱分割してゐるとき、カレントウィンドウだけがスクロールバーを利用できる。そして、複數のウィンドウの眞ん中のウィンドウを操作してゐるときは、スクロールバーは閒のウィンドウを飛び越えて作用する。
兩側にスクロールバーがあるときに、複數のウィンドウの眞ん中のカレントウィンドウが左半分に面してゐると、右側のスクロールバーは右端のウィンドウに影響する。左右が逆でも同樣。
(Vim GUI の最下段の) 水平スクロールバーは、’wrap’ オプションがオフのときに、テキストを橫にスクロールするために使用する。スクロールバーのつまみのサイズは、左右にスクロールして一番長い行のテキストを全て表示できるくらゐである。必要に應じてカーソルが移動するとき、カーソルは表示されてゐる文字の上にとどまる (’virtualedit’ が設定されてゐなければ)。
一番長い行を計算するのは多少の處理時閒を必要とする。そしてそれは何かが變更されるときに每囘行はれる。その時閒が多すぎるやうだつたり、他の行へのカーソルジャンプを好まないなら、’guioptions’ に ’h’ を含めると、スクロールはカーソルのある行の長さに制限される。
インテリマウスを持つてゐて、X サーバーがホイールをサポートしてゐるなら、gvim でテキストを上下にスクロールするのにホイールを使ふことができる。これは XFree86 4.0 以降のバージョンで機能する。古いバージョンでもパッチを當てれば利用可能になる。|scroll-mouse-wheel| を參照。
古いバージョンの XFree86 では X サーバーにパッチを當てなくてはならない。以下のページにはパッチとXサーバーのバイナリへのリンクに加へて、Linux 上でインテリマウスを使用することについて多少の情報がある (けれども必要とするものはないかもしれない):
http://www.inria.fr/koala/colas/mouse-wheel-scroll/
マウスは、’mouse’ オプションに適切なフラグが設定されてゐる場合にだけ機能する。GUI に切り替はるときに、’mouse’ がまだ設定されてゐなければ、’mouse’ オプションは自動的に "a" に設定され、|hit-enter| プロンプトを除いて全てのモードで有效になる。これを望まないならば、"gvimrc" ファイルで ’mouse’ オプションを變更する。
關聯する他のオプション:
’mousefocus’ | マウスポインタが乘つてゐるウィンドウをカレントウィンドウにする |gui-mouse-focus| |
’mousemodel’ | マウスのボタンがどのやうな動作をするか |
’mousehide’ | テキストを入力してゐる閒マウスポインタを隱す |
’selectmode’ | 選擇時に選擇モードとビジュアルモードのどちらを使ふか |
素早くこれらを設定するには ":behave
" コマンドで行ふ。
マウスと選擇の動作を設定する。有效な引數は:
mswin | MS-Windows の動作 |
xterm | Xterm の動作 |
":behave
" を使用するとこれらのオプションが變更される:
オプション | mswin | xterm |
---|---|---|
’selectmode’ | "mouse,key" | "" |
’mousemodel’ | "popup" | "extend" |
’keymodel’ | "startsel,stopsel" | "" |
’selection’ | "exclusive" | "inclusive" |
$VIMRUNTIME ディレクトリの中に、MS-Windows にあるやうな cut/copy/paste 機能のためのキーマッピングを設定する |mswin.vim| と呼ばれるスクリプトがある。これは、CTRL-V、CTRL-X、CTRL-C キーを用ゐるので、標準の操作と互換性がなくなつてしまふ。それでも構はないなら、このコマンドで使用する:
:so $VIMRUNTIME/mswin.vim
マウスのホイールでスクロールするには、|scroll-mouse-wheel| を參照。
カーソルを持つて行きたいテキストバッファのどこかでマウスの左ボタンをクリックすると、カーソルはそこに行く!
動作するモード | ’mouse’ が以下を含んでゐるとき |
---|---|
ノーマルモード | ’n’ または ’a’ |
ビジュアルモード | ’v’ まはた ’a’ |
插入モード | ’i’ または ’a’ |
選擇モードはビジュアルモードのやうに扱はれる。
現在のカーソル位置からマウスで指示する位置までのテキストを削除するために ’d’ のやうなオペレータと共にこれを使用してもよい。つまり、’d’ を入力してからどこかをマウスでクリックする。
’mousefocus’ オプションを設定してキーボードフォーカスがマウスポインタに追從するやうにできる。これはマウスポインタが乘つてゐるウィンドウがアクティブウィンドウになることを意味する。
警告:
メニューをうまく利用できなくなる。メニューを使用したときに、そのメニューに設定されたコマンドは常に一番上のウィンドウに適用されてしまふだらう。
(’mouse’ が ’c’, ’a’ のどれかを含んでゐるなら) コマンドラインモードや檢索モード中にマウスの左ボタンか右ボタンをクリックすることで、コマンドラインの行のクリックした位置にカーソルを移動できる。
どのやうな狀況でも、マウスの中ボタンをクリックして、現在の選擇を貼り付けることができる。
マウスを使つて選擇を開始できる。どのやうに使用するかは ’mousemodel’ オプションに依存する:
’mousemodel’ が "extend" である: | マウスの右ボタンを使用する。 |
’mousemodel’ が "popup" である: | Shift キーを押しながら、マウスの左ボタンを使用する。 |
選擇を開始するときには、カーソルの位置からマウスで指示した位置までが選擇される。すでに選擇されてゐる狀態で選擇の操作をすると、選擇範圍が擴張される。
’selectmode’ が "mouse" を含んでゐるなら、選擇モードが使用される。これは選擇中に入力した文字で選擇範圍が置き換へられることを意味する。|Select-mode| を參照。さうでなければ、ビジュアルモードが使用される。
ダブルクリックで單語の選擇、トリプルクリックで行の選擇、クワドルプルクリック (4 回クリック) で矩形ブロックを選擇することができる。
どのやうに選擇が用ゐられるかに關しては |gui-selections| を參照。
次のときには異なる選擇方法が使はれる:
CTRL
キーと SHIFT
キーを同時に押してゐるとき
テキストが選擇されてゐても、選擇されてゐないかのやうに、あるいは、選擇に關聯したモードが存在しないかのやうに、Vim が通常の動作を繼續するので、これはモードレス選擇と呼ばれる。Vim ウィンドウの中のどんなテキストでも選擇することができる。
開始點でマウスの左ボタンを押すことでテキストを選擇し、終點までドラッグして離す。選擇を延長するには、’mousemodel’ が "extend" のときにはマウスの右ボタンを使用し、’mousemodel’ が "popup" のときにはシフトキーを押しながらマウスの左ボタンを使用する。
選擇したテキストが變更されると、選擇は解除される。
コマンドラインでは CTRL-Y で選擇範圍をクリップボードにコピーできる。插入モード中にコピーするには CTRL-O を使ひ CTRL-Y <CR> とする。’guioptions’ に a か A が含まれるとき (X11 では既定でさうなつてゐる) は、選擇範圍が自動的にレジスタ "* にコピーされる。
マウス中ボタンでテキストを貼り付けられる。X11 以外のシステムでは CTRL-R + を使へば貼り付けられる。
Vim ウィンドウの下のステータス行でマウスの左ボタンか右のボタンをクリックすることでそのウィンドウがカレントウィンドウになる。これはボタンを放したときに起こる (クリックとドラッグの操作を區別するため)。
左ボタンを使つてステータス行を上下にドラッグすると、ウィンドウのサイズを上下に變更できる。この操作ではそのウィンドウはカレントウィンドウにならない。
ウィンドウの垂直の區切りも同樣に機能する。クリックした區切りの左のウィンドウがカレントウィンドウになる。左右にドラッグするとウィンドウの幅を變更できる。
<S-LeftMouse> | マウスクリックで單語を前方檢索する。’mousemodel’ が "popup" のときには、これは選擇を開始するか、あるいは延長する。 |
<S-RightMouse> | マウスクリックで單語を後方檢索する。 |
<C-LeftMouse> | マウスクリックでタグ名へジャンプする。 |
<C-RightMouse> | 直前のタグジャンプの前の位置に戾る ("CTRL-T" と同じ)。 |
修飾キー付きのマウスイベントをマッピングすることもできる。例へば:
:map <S-LeftMouse> <RightMouse> :map <S-LeftDrag> <RightDrag> :map <S-LeftRelease> <RightRelease> :map <2-S-LeftMouse> <2-RightMouse> :map <2-S-LeftDrag> <2-RightDrag> :map <2-S-LeftRelease> <2-RightRelease> :map <3-S-LeftMouse> <3-RightMouse> :map <3-S-LeftDrag> <3-RightDrag> :map <3-S-LeftRelease> <3-RightRelease> :map <4-S-LeftMouse> <4-RightMouse> :map <4-S-LeftDrag> <4-RightDrag> :map <4-S-LeftRelease> <4-RightRelease>
これらのマッピングは、Motif アプリケーションの作法にしたがつて、選擇領域を擴張するために、マウスの右ボタンを使はずに、Shift
キーを押しながら左ボタンを押す方法を設定してゐる。
修飾キーを使つたマウス操作のマッピングはモードレス選擇では機能しない。
Vim ウィンドウに 1 つ、あるいは複數のファイルをドラッグ&ドロップすることができる。ファイルは |:drop| コマンドを使つたときのやうに開かれる。
Shift
キーを同時に押してゐると、Vim はカレントディレクトリをドロップされた最初のファイルがあるディレクトリに變更する。Ctrl
キーを同時に押してゐると、ファイルを開くためにウィンドウを分割する。押してなければカレントバッファが變更されてゐないときだけファイルは開かれる。
ディレクトリを Vim にドロップすることもできる。この操作は explorer プラグインでそのディレクトリを開く (それが利用可能だと想定してゐる。無理ならエラーが表示されるだらう)。Shift
キーを同時に押してゐれば、ディレクトリを開かずに、カレントディレクトリをそのディレクトリに變更する。
コマンドラインを編輯中なら、ドロップされたファイルやディレクトリの名前がカーソル位置に插入される。これは Ex コマンドでそれらの名前を使ふのに便利である。特別な文字 (スペース、タブ、ダブルクォート、’|’、MS-Windows 以外ではバックスラッシュも) はエスケープされる。
マウス (|gui-mouse-select| を參照) か、あるいは Vim のビジュアルモード (|v| を參照) を使用して、選擇を作成できる。’guioptions’ に ’a’ が指定されてゐるなら、いつ選擇 (ビジュアルモードや選擇モード) が開始されるとしても、あるいは選擇が變更されるとしても、Vim がウィンドウシステムの主要な選擇の所有者になる (MS-Windows では |gui-clipboard| が用ゐられる。X11 では |x11-selection| が用ゐられる。ここの說明は兩方に共通してゐる)。
選擇を保存するための特別なレジスタがある。それは "* レジスタである。どのテキストが選擇されてゐるかといふ情報が (例へばマウスの左ボタンをクリックするなどして) 變更されるか、あるいは他のアプリケーションが選擇されたテキストを貼り付けようとしない限りここには何も書き出されない。使用されるときにはテキストは "* レジスタに書き出される。例へば、行を切り取つて、それを現在の選擇にして、クリップボードにそれを書き出すためには次のやうにする:
"*dd
同樣に、例へば、マウスの中ボタンをクリックするなどして、他のアプリケーションから選擇を貼り付けるときには、選擇は始めに "* レジスタに書き出され、それから他のレジスタと同じやうに插入される。例へば、選擇(クリップボードの內容)を貼り付けるには:
"*p
X11 でこのレジスタを使ふには、|x11-selection| も參照。これは深く關聯した "+ レジスタについても說明してゐる。
Note:
ある Vim から他の獨立した Vim にテキストを貼り付けたいときには、選擇のタイプ (文字、行あるいは矩形) もコピーされることに注意する。他のアプリケーションについては、タイプは常に文字である。|x11-cut-buffer| を介して得たテキストでも、その選擇のタイプは常に失はれる。
’clipboard’ オプションに "unnamed" 文字列が含まれてゐるときには、無名レジスタは "* レジスタと同じである。したがつてコマンドの前に "* を付けずに選擇をコピーし貼り付けることができる。
まづはユーザーマニュアルの |usr_42.txt| を禦覽ください。
基本的には、メニューは單にマッピングのやうに使用することができる。自分のメニューを好きなだけたくさん定義することができる。
長い閒 Vim ユーザーはメニューを十分に使用してこなかつた。しかし自分のメニューやメニュー項目を追加することは大きな力を祕めてゐる。ある一聯のキー操作を覺えられないやうなときに最も便利である。
別の言語用にメニューを作成するには、|:menutrans| を參照。 メニューをまつたく使ひたくない場合は、|'go-M'| を參照。
標準のメニューは "$VIMRUNTIME/menu.vim" ファイルから讀み込まれる。パスがどこを指すかについては |$VIMRUNTIME| を參照。ユーザーは自分のメニューを設定することができる。その際に標準のメニューを利用するのはいい考へである。メニューに項目を追加したり、あるいは、標準のメニューが氣に入らなければ、全てのメニューを取り除くことができる |:unmenu-all|。.vimrc ファイル (.gvimrc ファイルではない!) にこの行を追加することで標準のメニューが讀み込まれないやうにすることもできる:
:let did_install_default_menus = 1
メニュー項目の Syntax (シンタックス) も無效にしたいなら:
:let did_install_syntax_menu = 1
Syntax メニューの最初の項目 {譯注:「對應形式をメニューに表示」} を使ふと、利用可能な全てのファイルタイプをメニューに表示できる (讀み込みに少し時閒がかかるかもしれない)。起動時に全てのファイルタイプが表示されてゐるやうにしたければ次の行を加へる:
:let do_syntax_sel_menu = 1
以下のメニュー項目は、利用可能なすべてのカーラースキーム、キーマップおよびコンパイラ設定を表示する:
Edit > Color Scheme Edit > Keymap Tools > Set Compiler
しかしながら、’runtimepath’ 內のディレクトリから關聯するファイルをすべて檢索するので讀み込みに多少時閒がかかる。したがつて、それらは (イベント |CursorHold| によつて) 遲れて讀み込まれる、もしくは手動で讀み込むこともできる。
すでに存在するすべての項目を起動時に讀み込んでおきたい場合、以下を加へる:
:let do_no_lazyload_menus = 1
Note: menu.vim が讀み込まれるのは、‘
:syntax on
‘ もしくは ‘:filetype on
‘ が實行されたとき、もしくはユーザーの .vimrc ファイルが讀み込まれた後であることに注意。これは、オプション ’encoding’ およびメッセージ用の言語 (‘:language messages
‘) がそれより前に設定されてゐなければならないといふことを意味する (もし變更したいのであれば)。
このドキュメントは GUI の項目であるけれども、CUI 版の Vim でも實際にメニューを使用することができる。そのときには明示的に |menu.vim| を讀み込まなければならないだらう。それは標準では設定されない。ほぼ實際のメニューシステムのやうにメニューの項目にアクセスするために ’wildmenu’ を設定して |:emenu| コマンドの使用時にコマンドライン補完を使用することができる。これをするには、.vimrc ファイルに次のコマンドを付加しておく:
:source $VIMRUNTIME/menu.vim :set wildmenu :set cpo-=< :set wcm=<C-Z> :map <F4> :emenu <C-Z>
メニューを開始するには<F4>を押す。そのときにはメニューのエントリを選擇するためにカーソルキーを使用することができる。それを實行するには <Enter>
を入力する。キャンセルするには <Esc>
を入力する。これはコンパイル時に |+menu| 機能を有效にする必要がある。
GTK+ 2 と Motif は切取りメニュー (Tear-off メニュー) をサポートする。これは少し變はつたメニューで、ポップアップメニューが常に表示されるやうなものである。メニューのウィンドウのサイズの變更が正確に機能しないなら、これはリソースに "Vim*geometry" のやうに設定してゐることが原因かもしれない。もしさうなら代はりに "Vim.geometry" を使用する。
GTK+ 3 では、GTK+ 3.4 から切取りメニューが非推奬となつた。よつて、GTK+ 3.4 以降とリンクされた gvim ではこの機能は無效化される。
Win32 GUI バージョンは Motif の切取りメニューをエミュレートする。Motif ユーザーなら簡單に違ひを確認できるだらうが、同じやうに便利に使へると思ふ。|:tearoff| コマンドと |hidden-menus| を利用して、メインのメニューバーに項目を作らずに切取りメニューを作ることができる。
新しいメニュー項目を作るには、":menu
" コマンドを使用する。これはほとんど ":map
" のコマンド群 (|map-modes| を參照) と同じだが最初の引數はメニュー項目の名前であり、’.’ で區切つたメニューとサブメニューのパスとして與へられる。例へば:
:menu File.Save :w<CR> :inoremenu File.Save <C-O>:w<CR> :menu Edit.Big\ Changes.Delete\ All\ Spaces :%s/[ ^I]//g<CR>
この最後の1つはメニューバーに "Edit" といふ新しい項目を作る、そしてその上でマウスのボタンを押すと "Big Changes" といふ項目を含んだメニューが表示されるだらう。"Big Changes" は "Delete All Spaces" といふ項目を含むサブメニューを持つてゐて、その項目を選擇すると操作が實行される。
Terminal モード用のメニューを作成するためには、キーマッピング (|:tmap|) とは異なり、|:tmenu| の代はりに |:tlmenu| を使用する。これは |:tmenu| がツールチップメニューを定義するためにすでに使はれてゐるため。|terminal-typing| を參照。
メニュー名での特殊文字:
& | この文字の次の文字はショートカットキーである。どのショートカットキーも (サブ) メニューの中で 1 度だけしか使用されてゐないことを確認すること。メニュー名に "&" を入れるには "&&" とする。 |
<Tab> | メニューの名前をそこで區切つて以降を右詰めにする。實行する操作をそろへて表示するのに便利である。使ひやすいやうに文字として "<Tab>" をそのまま書けばいいやうになつてゐる。本當のTab文字を使用するなら、その前にバックスラッシュを付けること! |
例:
:amenu &File.&Open<Tab>:e :browse e<CR>
[文字通りタイプする]
(<Alt>
キーと同時に) ショートカットキーの "F" を押し、それから "O" を押すと、このメニューを使用できる。Openの項目は "‘Open :e’" のやうに表示される。":e" は右詰めされ、"O" にはショートカットであることを示すために下線が引かれる。
":amenu
" コマンドは Terminal モードを除く全てのモードで使へるメニューの項目を 1 度に定義することができる。コマンドを正確に機能させるために、いくつかのモード用に自動的に文字が付加される:
モード | 前に付加 | 後ろに付加 |
---|---|---|
ノーマルモード | なし | なし |
ビジュアルモード | <C-C> | <C-\><C-G> |
插入モード | <C-\><C-O> | |
コマンドラインモード | <C-C> | <C-\><C-G> |
オペレータ待機モード | <C-C> | <C-\><C-G> |
後ろに付加される CTRL-\ CTRL-G は ’insertmode’ が設定されてゐるときには插入モードに戾る。|CTRL-\_CTRL-G| を參照。
例:
:amenu File.Next :next^M
は以下と同じである:
:nmenu File.Next :next^M :vmenu File.Next ^C:next^M^\^G :imenu File.Next ^\^O:next^M :cmenu File.Next ^C:next^M^\^G :omenu File.Next ^C:next^M^\^G
注意:
插入モードでは 1 つのノーマルモードのコマンドに對してだけ機能する。これは CTRL-O の仕樣による。2 つ以上のコマンドを使ふには、":imenu
" コマンドを使用する必要がある。どのモードでもテキストを插入するために式レジスタ (’=’ レジスタ) を使用することができる::amenu Insert.foobar "='foobar'<CR>P
Note:
’cpoptions’ の中の ’<’ フラグと ’k’ フラグが適用される (含まれてゐたときには、<> による特殊キーの書式や生のキーコードは認識されない)。
Note:
コマンドラインモードでの <Esc> はマッピングで使用されたときと同樣に (入力をキャンセルするのではなく) コマンドを實行する。これは Vi 互換である。コマンドラインモードを終了するには CTRL-C を使用する。{譯注: |c_<Esc>| を參照}
實行したコマンドをコマンドラインに表示しないやうなメニューを定義するには、最初の引數に "<silent>" を加へる。例:
:menu <silent> Settings.Ignore\ case :set ic<CR>
これでこのメニューを使つても ":set ic" はコマンドラインに表示されない。それでも實行したコマンドの出力は表示される。それを表示しないやうにするには、":silent" を付けてコマンドを實行する:
:menu <silent> Search.Header :exe ":silent normal /Header\r"<CR>
"<silent>" は "<special>" や "<script>" の直後に書いてもよい。
’cpoptions’ にフラグ "<" が含まれてゐるときでも、メニューを定義する際には <> 記法で特殊なキーを表すことができる。これは ’cpoptions’ の副作用が望ましくない場合に便利である。例:
:menu <special> Search.Header /Header<CR>
"<special>" はコマンド :menu の引數の一番最初か、"<silent>" や "<script>" の直後に書かねばならない。
メニューに指定されたコマンドにはマッピングが適用される。適用しないやうにするには、":noremenu
" コマンド (とそれに類するモード別のコマンド) を使ふ。スクリプトローカルなマッピングを使ふには ":menu
" コマンドの最初の引數、あるいは "<silent>" の次に "<script>" と書く。
{譯注: これは <SID> で指定した部分だけがマッピングされる。例:
nnoremenu <script> AAA.BBB :echo "<SID>LM" "LM"<CR> cnoremap <SID>LM 'This is script-local mapping' cnoremap LM 'This is not used'
スクリプトファイルでこのやうに設定し、メニューの AAA.BBB を實行すると
'This is script-local mapping' LM
と表示される。"<SID>LM" はマッピングされ、"LM" はマッピングされてゐない。}
メニューに優先度を與へることができる。より高い優先度を與へられたメニューほど右に配置される。優先度は ":menu
" コマンドの前の數字で與へれられる。例:
:80menu Buffer.next :bn<CR>
標準のメニューはこれらの優先度を持つ:
File 10 Edit 20 Tools 40 Syntax 50 Buffers 60 Window 70 Help 9999
優先度を指定しない、あるいはゼロを指定すると、500 が用ゐられる。ポップアップメニューに對しては優先度は意味を持たない。
對應してゐるシステム (Motif と GTK+) では、「ヘルプ」メニューはメニューバーの右端に離れて配置される。これは GTK+ 2 と 3 では、もはや認められないユーザーインターフェイスデザインのため行はれない。
ヘルプメニューの後ろに置くために、9999 より高い優先度を使用することができるが、それは非標準であり、推奬しない。優先度の取り得る値は最高で約 32000 である。最低は 1 である。
同樣にサブメニューも配置を指定できる。優先度は、メニュー名の前に、ドット區切りの優先度のリストとして指定する:
:menu 80.500 Buffer.next :bn<CR>
サブメニューの優先度を與へる必要があるのは、項目を配置する位置を指定したいときだけである。例へば、他の項目の前にサブメニューを置くには:
:menu 80.100 Buffer.first :brew<CR>
あるいは他の項目の後にサブメニューを置いて、標準設定の優先度を持つ項目がその前に置かれるやうにするには:
:menu 80.900 Buffer.last :blast<CR>
數字が拔けてゐるときには、標準設定の500が用ゐられる:
:menu .900 myMenu.test :echo "text"<CR>
メニューの優先度はメニューを新しく生成するときだけ用ゐられる。すでにあるとき、例へば、別のモードで定義されてゐたときには、優先度は變更されない。したがつて、優先度はメニューを最初に定義するときだけ與へる必要がある。
例外はポップアップメニューである。各モード (ノーマルモード、オペレータ待機モード、ビジュアルモード、插入モード、コマンドラインモード) に別々のメニューがある。これらのメニューは順序が異なつてもよい。これはメニューバーのメニューとは異なる。メニューバーのメニューは全てのモードで同じ順序である。
Note:
サブメニューの優先度は現在全ての GUI のバージョンで機能する譯ではない。
メニューの各項目は特殊なメニュー項目を使つて區切ることができる。それはシステムによるが、線や點線として表示される。そのやうな項目の名前は ’-’ で始めて ’-’ で終はるやうに定義する。閒には一意な名前を挾むことができる。普通のメニュー項目と同樣に優先度を設定することもできる。
例:
:menu Example.item1 :do something :menu Example.-Sep- : :menu Example.item2 :do something different
Note:
區切りの定義にはコマンドの指定が必要である。そのメニュー項目は選擇することができないので、內容はなんでも構はない。ただ單にコロン (:) を 1 つ書いておくだけでいい。
ツールバーは今のところ MacVim, Win32, Athena, Motif, GTK+ (X11), Photon GUI で利用可能である。いづれは他の GUI でも使へるやうになるだらう。標準のツールバーは menu.vim で定義されてゐる。(Note: MacVim のツールバーは "$VIM/gvimrc" で修正されてゐることに注意。)
ツールバーの表示は ’guioptions’ の文字 ’T’ によつて制禦される。したがつて、メニューとツールバーを同時に、あるいはどちらかだけを表示することもできるし、兩方とも非表示にすることもできる。
表示方法は ’toolbar’ オプションで變更できる。畫像かテキスト、もしくは兩方を表示するかを選擇できる。
ツールバーは、1 つのレベルだけを持つ ToolBar と呼ばれる特別なメニューとして定義されてゐる。Vim はこのメニューの項目を以下のやうに解釋する:
:amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo"<CR> :amenu icon=FooIcon ToolBar.Foo :echo "Foo"<CR>
Note:
最初の例では擴張子も含めてゐる。2 番目の例では擴張子は省略されてゐる。ファイルが開けなければ 2) を試す。ファイル名に空白を含めるにはバックスラッシュでエスケープする。メニューの優先度は icon の引數の後に指定する::amenu icon=foo 1.42 ToolBar.Foo :echo "42!"<CR>
:amenu ToolBar.BuiltIn22 :call SearchNext("back")<CR>
Note:
正確なファイル名は OS 特有であることに注意する: 例へば、Win32 でのコマンド:amenu ToolBar.Hello :echo "hello"<CR>は、’hello.bmp’ ファイルを檢索するだらう。GTK+/X11 では ’Hello.xpm’ である。GTK+ 2 では ’Hello.png’, ’Hello.xpm’, ’Hello.bmp’ がチェックされ、最初に見つかつたものが使はれる。
MS-Windows と GTK+ 2 ではビットマップはボタンの大きさに合はせて擴大縮小される。MS-Windows では縱 18 橫 18 のサイズがちやうどいいだらう。
MS-Windows ではビットマップは 16 色の標準パレットを使つた物である。明るい灰色はウィンドウのフレームの色に變更され、暗い灰色はウィンドウの影の色に變更される。システムに依存するが、16 色よりも色が多くても問題ないだらう。
:amenu ToolBar.Open :e
は、open.bmp が存在しなければ、組み込みの "open a file" ボタンイメージを表示するだらう。全ての組み込みの名前は menu.vim で用ゐられてゐるので確認できる。
番號 | 名前 | 通常の動作 |
---|---|---|
00 | New | 新しいウィンドウを開く |
01 | Open | 現在のウィンドウで開くためにファイルをブラウズする |
02 | Save | バッファをファイルに保存する |
03 | Undo | 最後の變更を取り消す |
04 | Redo | 最後の取り消した變更をやり直す |
05 | Cut | 選擇されたテキストを削除しクリップボードへ送る |
06 | Copy | 選擇されたテキストをクリップボードにコピーする |
07 | Paste | クリップボードからテキストをペーストする |
08 | 現在のバッファを印刷する | |
09 | Help | Vim の組み込みのヘルプでバッファを開く |
10 | Find | 檢索コマンドを開始する |
11 | SaveAll | 全ての修正されたバッファをファイルに保存する |
12 | SaveSesn | 現在の狀態をセッションファイルに保存する |
13 | NewSesn | 新しいセッションファイルに保存する |
14 | LoadSesn | セッションファイルを讀み込む |
15 | RunScript | Vim script として實行するためにファイルをブラウズする |
16 | Replace | 置換コマンドのためのプロンプト |
17 | WinClose | 現在のウィンドウを閉ぢる |
18 | WinMax | 現在のウィンドウに使用する行數を最大にする |
19 | WinMin | 現在のウィンドウに使用する行數を最小にする |
20 | WinSplit | 現在のウィンドウを分割する |
21 | Shell | シェルを開始する |
22 | FindPrev | 後方に再檢索する |
23 | FindNext | 前方に再檢索する |
24 | FindHelp | ヘルプを檢索する單語のためのプロンプト |
25 | Make | make を實行し最初のエラーにジャンプする |
26 | TagJump | カーソルの下の tag にジャンプする |
27 | RunCtags | 現在のディレクトリのファイルに對して tags を作成する |
28 | WinVSplit | 現在のウィンドウを縱分割する |
29 | WinMaxWidth | 現在のウィンドウの幅を最大化する |
30 | WinMinWidth | 現在のウィンドウの幅を最小化する |
Win32, MacVim と GTK+ GUI では、’]’ で始まるメニュー名はメインのメニューバーから除外される。それを表示するには |:popup| か |:tearoff| コマンドを使用しなければならない。
各ウィンドウはローカルなツールバーを持つことができる。これはウィンドウの先頭行を使用し、したがつてテキスト用の領域は 1 行少なくなる。ツールバー內の項目は "WinBar" で始まらなければならない。
テキストのみを使用することができる。Unicode を使用する場合、項目をアイコンのやうに見せるために特殊文字を使ふことができる。
項目が收まらない場合、最後の項目は使用することができない。ツールバーは折り返されない。
Note:
これらのコマンドを實行してゐるとき、Vim はどのモードでもありうることに注意。メニューはノーマルモード用に定義されるべきで、かつ現狀のモードを變へることなく實行される。したがつて、カレントウィンドウがビジュアルモードで、かつメニューコマンドが意圖的にモードを變へない場合、Vim はビジュアルモードのままである。もつともよいのは、副作用を避けるために ‘:nnoremenu
‘ を使用することである。デバッガツールの例:
nnoremenu 1.10 WinBar.Step :Step<CR> nnoremenu 1.20 WinBar.Next :Next<CR> nnoremenu 1.30 WinBar.Finish :Finish<CR> nnoremenu 1.40 WinBar.Cont :Continue<CR>ウィンドウツールバーは ToolbarLine および ToolbarButton ハイライトグループを使用する。
ウィンドウを分割する際、ウィンドウツールバーは新しいウィンドウにはコピーされない。
Win32, GTK+, Motif, Athena, Photon GUI では、特別なメニュー "PopUp" を定義することができる。これは、’mousemodel’ が popup あるいは popup_setpos に設定されてゐるときに、マウスの右ボタンが押されると表示されるメニューである。 例:
nnoremenu 1.40 PopUp.&Paste "+gP menu PopUp
メニューがどのやうに定義されてゐるかを確認するには、(":map
" コマンドでするのと全く同樣に) menu コマンドの後にたつた 1 つの引數を指定するだけである。指定されたメニューがサブメニューならば、その階層の下の全てのメニューが表示される。:menu の後に引數を與へなければ、適切なモードに對する全てのメニュー項目が表示される (例へば、コマンドラインモードに對して :cmenu)。
メニュー項目の一覽には、指定されたコマンドの前に特別な文字が表示される:
* | そのメニュー項目は再マッピングを避けるために "nore" を付けて定義された |
& | そのメニュー項目は再マッピングをスクリプトローカルに限定するために "<script>" を付けて定義された |
- | そのメニュー項目は非表示である |
Note:
menu コマンドでメニューの名前を入力してゐるときに<Tab>
を打つと名前が補完される (設定による)。
コマンドラインから {menu} を實行する。
通常はノーマルモードのメニューを實行する。實行範圍が與へられたときは、ビジュアルモードのメニューを實行する。
<c-o> から實行されたときは、插入モードのメニューを實行する。例:
:emenu File.Exit
上記と同樣だが、{mode} のためのメニューは除く:
’n’: |:nmenu| | ノーマルモード |
’v’: |:vmenu| | ビジュアルモード |
’s’: |:smenu| | 選擇モード |
’o’: |:omenu| | オペレータ待機モード |
’t’: |:tlmenu| | Terminal モード |
’i’: |:imenu| | 插入モード |
’c’: |:cmenu| | コマンドラインモード |
CUI 版の vim を WANT_MENU を定義してコンパイルしたなら、:emenu
を使つて GUI のときと同じやうに便利なメニューを使用できる。その際に ’wildmenu’ を設定しておくと便利である。使用例は |console-menus| を參照。
範圍を指定するとき、’<,’> と指定すると、最後にビジュアル選擇した範圍に對して實行される。
メニュー項目やサブメニュー全體を削除するには、unmap コマンドによく似た unmenu コマンドを使用する。例へば:
:unmenu! Edit.Paste
これは插入モードとコマンドラインモードでの操作を Edit メニューの項目 Paste から取り除く。
Note:
umenu コマンドでメニューの名前を入力してゐるときに<Tab>
を打つと名前が補完される (設定による)。
全てのメニューを取り除くには次のやうにする:
:unmenu * " ノーマルモードとビジュアルモードの全てのメニューを取り除く :unmenu! * " 插入モードとコマンドラインモードの全てのメニューを取り除く :aunmenu * " 端末モードを除く全てのモードの全てのメニューを取り除く :tlunmenu * " 端末モードの全てのメニューを取り除く
メニューバーを非表示にするには:
:set guioptions-=m
メニューを削除するのではなくて、一時的に無效にしたいときは、":menu
" コマンドに "disable" キーワードを指定する。有效にするには "enable" キーワードを指定する。
例:
:menu disable &File.&Open\.\.\. :amenu enable * :amenu disable &Tools.*
このコマンドは menu コマンド群が影響する各モードに適用される。"&" は飜譯された名前にも適用するために必要である。引數に "*" を使ふと、全てのメニューに作用する。さうでなければ、指定したメニュー項目とそのサブメニューに作用する。
これはメニューを使つてメニュー項目を追加する方法の例である!カーソルの下のキーワードをメニュー項目に追加することができる。作業用にレジスタ "z" を使用してゐる。
:nmenu Words.Add\ Var wb"zye:menu! Words.<C-R>z <C-R>z<CR> :nmenu Words.Remove\ Var wb"zye:unmenu! Words.<C-R>z<CR> :vmenu Words.Add\ Var "zy:menu! Words.<C-R>z <C-R>z <CR> :vmenu Words.Remove\ Var "zy:unmenu! Words.<C-R>z<CR> :imenu Words.Add\ Var <Esc>wb"zye:menu! Words.<C-R>z <C-R>z<CR>a :imenu Words.Remove\ Var <Esc>wb"zye:unmenu! Words.<C-R>z<CR>a
(指定するコマンドには <> 記法を使へる。このテキストをそのままコピー/ペーストして試してみたり、gvimrc に書き加へることができる。"<C-R>" は CTRL-R であり、"<CR>" は <CR>
キーである。|<>|)
ユーザーマニュアルの |42.4| を參照すること。
メニューやツールバーにチップを定義する。{X11 と Win32 GUI のみ}
メニューチップを一覽表示する。{X11 と Win32 GUI のみ}
メニューやツールバーのチップを削除する。{X11 と Win32 GUI のみ}
Note:
Terminal モード用のメニューを作成するためには、代はりに |:tlmenu| を使ふことに注意。
メニューの項目にチップが定義されてゐて、マウスがその項目の上にあるとき、そのチップがコマンドラインに表示される。それは Windows 標準でステータスバーに表示されるメニューヒントに似てゐる (Vim がコマンドラインモードのときは除く、そのときはもちろん何も表示されない)。
ツールバーの項目にチップが定義されてゐるときは、慣習にしたがつて、マウスがそのボタンの上で止まつたときにツールチップが表示される。その表示に使ふ色を變更するにはハイライトグループの |hl-Tooltip| を設定する。
チップはメニューの各項目に定義できる。例へば、次のやうにメニュー項目を定義したとき:
:amenu MyMenu.Hello :echo "Hello"<CR>
次のやうにチップを定義する:
:tmenu MyMenu.Hello Displays a greeting.
そして次のやうに削除する:
:tunmenu MyMenu.Hello
ツールチップは今のところ X11 と Win32 GUI でサポートされてゐる。近い內に他の GUI 環境でもサポートされるだらう。
":tmenu
" コマンドは他の menu コマンド群と同じやうに機能し、同じ引數をとる。":tunmenu
" は他の unmenu コマンド群と同じやうにメニューチップを削除する。
メニュー項目が無效になる (例へば、全てのモードでその動作が削除される) ときには、Vim はメニューチップ (と項目) を削除する。つまり :aunmenu
でメニュー項目を削除するときには、:tunmenu
する必要はないといふことである。
Win32, MacVim と GTK+ GUI では、カーソルの位置にメニューをポップアップ表示することができる。これは「PopUp」メニューと同じやうに動作し、どんなメニューでも表示することができる。
このコマンドは後方互換性のために殘されてゐて、使用することは推奬されない。なぜならこのコマンドのふるまひは好ましくないからである。
メニュー項目 {name} をポップアップ表示する。そのメニューは少なくとも 1 つ以上の項目を持つてゐる必要がある。メニューバーに表示されてゐる必要はない (|hidden-menus| を參照)。
{Vim が Win32, MacVim および GTK GUI 機能付きでコンパイルされたときのみ、ターミナルの中で有效}
上記と同樣だが、カーソル位置でなくマウスポインタの位置にメニューを表示する。端末では、これは通常最後クリックした、もしくは話した、最後に分かつてゐる位置でありる (マウスの動きは無關係である)。
例:
:popup File
とすると "File" メニューを (もしあれば) カーソル位置に表示させる。! が使はれたときはマウスポインタの位置に表示させる。
:amenu ]Toolbar.Make :make<CR> :popup ]Toolbar
これはメインのメニューバーにメニュー項目を作らずにポップアップメニューを作成する。
Note:
GUI では、:popup
コマンドは選擇がなされる前に直ちに終了する。端末の場合はユーザーが選擇を行ふまで待つ。
Note:
’]’ で始まるメニュー項目はメニューバーに表示されない。
このセクションではフォント關聯のオプションについて說明する。
’guifont’ はどのフォントを使ふかを Vim に指示するオプションである。最も單純な形式は、フォント名のみである。コンマで區切られたフォント名のリストにすることもできる。最初の有效なフォントが使用される。有效なフォントが見つからない場合は、エラーメッセージが表示される。
’guifontset’ がサポートされてゐるシステム (X11) で、かつ ’guifontset’ が空ではない時は、’guifont’ は使用されない。|xfontset| を參照。
Note:
GTK GUI については、不正な名前に對してエラーは發生せず、常にリストの最初の要素が選ばれ、利用される。これは、GTK GUI が與へられた名前からフォントを特定するのではなく、パターンを構成するのに用い、利用可能なフォントからそのパターンを用ゐて最もよくマッチするフォントを探さうとするからである。これによりマッチングは決して失敗しない。不正な名前を與へたとしても、名前以外のフォント屬性によりマッチングが行はれるため、問題とはならない。
コンマの後の空白は無視される。フォント名の中にコンマを指定するには、コンマの前に ’\’ を置くこと。さらにオプションの値の中で空白や ’\’ を使ふには、それらの前に餘分に ’\’ を置かなければならない。|option-backslash| も參照。例へば
:set guifont=Screen15,\ 7x13,font\\,with\\,commas {譯注: 結果は "Screen15, 7x13,font\,with\,commas"}
とすると、まづ Vim はフォント "Screen15" を使はうとし、だめなら代はりに "7x13" を、そして "font,with,commas" を使はうとする。
フォントをどれも讀み込めなかつたら現在の設定のままになる。空のフォントリストが與へられると、他のリソース設定を試してみて (X では Vim.font リソースが使はれる)、それがだめなら、必ず存在するはずの組み込みの既定フォントを試す (X の場合は "7x13")。指定されるフォント名は "normal" な {譯注: 太字や斜字體でない} フォントでなければならない。Vim は關聯する太字體や斜字體を見つけようとする。
Win32, GTK, Motif, Mac OS および Photon の場合:
:set guifont=*
これはフォント選擇ダイアログを開く。そこで望みのフォントを選擇することができる。
MacVim において ":set guifont=*" は次を呼び出します:
:macaction orderFrontFontPanel:
これはメインメニューから "Show Fonts..." を選擇するのと同じことです。
フォント名は使つてゐる GUI に依存する。樣々なシステムに對して ’guifont’ を設定する方法については |setting-guifont| を參照。
GTK+ 2 と 3 ではフォント名は次のやうになる:
:set guifont=Andale\ Mono\ 11
これだけである。もう XLFD は受け付けない。中國語の場合は以下の記述でうまくいくと報告されてゐる:
if has("gui_gtk2") set guifont=Bitstream\ Vera\ Sans\ Mono\ 12,Fixed\ 12 set guifontwide=Microsoft\ Yahei\ 12,WenQuanYi\ Zen\ Hei\ 12 endif
(GTK+ 3 GUI の場合は gui_gtk2 を gui_gtk3 に置き換へる)
Mac OSX では次のやうにします:
:set guifont=Monaco:h10
’macatsui’ も參照。表示上の問題を解決する助けになる。{MacVim にはない} MacVim では、フォント名にスペースのあるフォントは次のやうに設定します:
:set guifont=DejaVu\ Sans\ Mono:h13
Note:
フォントは等幅でなければならない (全ての文字が同じ幅でなければならない)。例外は MacVim と GTK である。どんなフォントでも受け付けるが、等幅フォントがもつともきれいに見える。
X11 でフォントのプレビューをするには、プログラム "xfontsel" が使へるかもしれない。"xlsfonts" は、使用可能な全てのフォントのリストを與へる。
フォント名には以下のオプションを指定できる。(オプションを區切るには ’:’ を使用すること)。
hXX | 文字高が XX (單位はポイント。浮動小數點數でもよい) |
wXX | 文字幅が XX (單位はポイント。浮動小數點數でもよい) |
WXX | ウェイトが XX (下記のウェイトに關する Note を參照) |
b | ボールド (太字體)。これは、ウェイトを 700 に設定するのと同じである。 |
i | イタリック (斜字體) |
u | 下線付き |
s | 打ち消し (文字を橫切る線付き) |
cXX | 文字セットが XX。有效な文字セットは: ANSI, ARABIC, BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK, HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS, SYMBOL, THAI, TURKISH および VIETNAMESE である。通常は "cDEFAULT" を使用する。 |
qXX | 品質が XX。有效な品質名は: PROOF, DRAFT, ANTIALIASED, NONANTIALIASED, CLEARTYPE または DEFAULT である。通常は "qDEFAULT" を使用する。
いくつかの品質値はレガシーなOSではサポートされてゐない。 |
スペースの代はりに ’_’ を使用できるので、スペースをエスケープするためにバックスラッシュを使用する必要はない。
例:
:set guifont=courier_new:h12:w5:b:cRUSSIAN :set guifont=Andale_Mono:h7.5:w4.5
|font-sizes| も參照。
ウェイトに關する Note:
フォントにはさまざまなウェイトがある。Windowsの "標準" ウェイトは 400 の値を持ち、未指定のままであれば、これがフォントを檢索するときに使用される値である。Windows は多くの場合、フォント名よりも高い優先順位でフォントのウェイトに基づいてフォントを照合する。つまり、Light または ExtraLight 異體を指定しても、Book または Medium 異體を意味するフォント名が使用されることがある。あなたがより重いウェイトで置換されることを經驗してゐるならば、より低いウェイト値を明示的に設定することはこの望まれない置換に對して輕減するかもしれない。
空でない場合、’guifontwide’ は、全角文字に使用されるフォントのコンマ區切りリストを指定する。ロードできる最初のフォントが使用される。
Note:
これらのフォントのサイズは ’guifont’ で指定されたものの2倍の幅かつ同じ高さでなければならない。不一致があると、テキストは正しく描畫されない。
’guifontwide’ は、’encoding’ が "utf-8" に設定されてゐて、かつ ’guifontset’ が空または無效の場合にのみ使用される。
’guifont’ が設定されてゐて、その中に有效なフォントが見つかり、’guifontwide’ が空の場合、Vim は一致する倍幅フォントを見つけようと試み、それに ’guifontwide’ を設定する。
MacVim はフォントの代替を自動的に行ひます。もしも ’guifontwide’ オプションが設定されてゐるなら、すべての全角等幅が使用されるでせう。しかしながら、もしも全角等幅フォント中の字形が利用できない場合は、フォントの代替はそのまま使はれます。
設定されてをり、それが適切な値であるとき、’encoding’ が "utf-8" でなくても常に 2 倍幅文字に對して ’guifontwide’ が使はれる。Vim は自動的に ’guifontwide’ に適合する値を探さうとはしない。’guifontwide’ が空ならば Pango/Xft が ’guifont’ で利用できない文字に對するフォントを選ぶ。そのため、Pango/Xft が選んだ値を上書きしたいのでない限り、’guifontwide’ を設定する必要はまつたくない。
有效な値が設定されてゐる場合、’guifont’ の代はりに ’guifontwide’ が IME の表示に使はれる。
このセクションでは GUI に關聯したその他の特徵を說明する。
{譯注: 例へば、插入モードで CTRL-V に續いて Del
キーを押すと "<Del>" (見た通り 5 文字) が入力される。Alt
(META
) キーを押しながら Del
キーを押すと "<M-Del>" が入力される。Shift
キーなら "<S-Del>"。}
SHIFT
, CTRL
, ALT
(META
) は特殊キーやマウスイベントのマッピングで使用できる。例へば:
:map <M-LeftDrag> <LeftDrag>
<Space>
, <Tab>
, <NL>
, <CR>
, <Esc>
である。
if has("gui_running") echo "yes, we have a GUI" else echo "Boring old console" endif
if has("gui_running") if has("gui_gtk2") :set guifont=Luxi\ Mono\ 12 elseif has("x11") " Also for GTK 1 :set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-* elseif has("gui_win32") :set guifont=Luxi_Mono:h12:cANSI elseif has("gui_macvim") :set guifont=DejaVu\ Sans\ Mono:h13 endif endif
推奬される日本語フォントは MS Mincho である。MS Mincho についての情報はここで見つかる:
http://www.lexikan.com/mincho.htm
X11 GUI では外部プログラムは gvim ウィンドウの中で實行される。|gui-pty| を參照。
警告:
X11 GUI で外部プログラムを實行することは常にうまく動作するとは限らない。"ls", "grep", "make" のやうな一般的なプログラムはたいていふまく機能する。"less" や "ispell" のやうに高度なターミナルを要求するプログラムはうまく機能しないだらう。あるものはハングさえするかもしれないし、他のターミナルから kill する必要があるかもしれない。だから氣をつけて!
Win32 GUI では外部プログラムは別のウィンドウで實行される。|gui-shell-win32| を參照。