gui_x11.txt For Vim バージョン 9.1. Last change: 2024 Nov 17
VIMリファレンスマニュアル by Bram Moolenaar
Vimのグラフィカルユーザーインターフェイス gui-x11 GUI-X11
Motif
1. X11 GUIの開始 gui-x11-start
2. GUIリソース gui-resources
3. シェルコマンド gui-pty
4. 各種事項 gui-x11-various
5. GTKバージョン gui-gtk
6. GNOMEバージョン gui-gnome
7. KDEバージョン gui-kde
8. コンパイル gui-x11-compiling
9. X11セレクション x11-selection
他の重要なドキュメント:
gui.txt GUIの一般的な項目について。
==============================================================================
1. X11 GUIの開始 gui-x11-start E665
これらのどちらの方法でもVimのGUIバージョンを実行することができる:
gvim [options] [files...]
vim -g [options] [files...]
であるから、実行可能な "gvim" を呼ぶか、あるいは "gvim" を実行可能なものとして
リンクさせるならば、GUIバージョンが自動的に使用されるだろう。例えば "gvim-5"
のように、追加の文字が "gvim" の後に追加されてもよい。
これらのコマンドの1つを使用してターミナルバージョンの中からGUIを起動してもよ
い:
:gui [++opt] [+cmd] [-f|-b] [files...] :gu :gui
:gvim [++opt] [+cmd] [-f|-b] [files...] :gv :gvim
"-f" オプションはフォアグラウンドで実行する。
"-b" オプションはバックグラウンドで実行する(これがデフォルト)。
++optと+cmdも参照すること。
gui-fork
GUIが開始されるときには、fork()して現在のプロセスを終了する。gvimがシェルから
開始されたときには、これでシェルが更にコマンドを受け入れられるようになる。これ
を望まない(例えば、メールプログラムでgvimを使用しているときにgvimが終了するの
を待つ)ならば、"gvim -f", "vim -gf" でかあるいは ":gui -f" を使用して開始する。
"-fg" は前景色の指定に用いられるので、"vim -fg" を使用してはならない。
"vim -f" の後に ":gui" を使用するときには、Vimはフォアグラウンドで実行されるだ
ろう。"-f" 引数は記憶されているだろう。Vimを強制的にバックグラウンドで実行する
には、":gui -b" を使用するとよい。
"gvim --nofork" と "gvim -f" は同じである。
実行中のジョブがある場合、Vim は fork しない。なぜならそれらのプロセスが子プロ
セスではなくなってしまうためである。
E851 E852
GUI の初期化に失敗した場合、Vim は現在の端末で実行を継続しようとする。
GUIをいつもフォアグラウンドで実行したければ、'guioptions' の中に 'f' フラグを
含めるとよい -f。
==============================================================================
2. GUIリソース gui-resources .Xdefaults
GUIのMotifバージョン(KDE, GTK+やあるいはWin32バージョンについてではない)を使用
しているならば、多くのXのリソースが有効である。これらを設定するときには、Vimの
クラス "Vim" を使用すべきである。それらは以下のようなものである:
リソース名 意味
reverseVideo ブール値: reverse videoが用いられるべきか?
background 背景色。
foreground 通常のテキストの色。
scrollBackground スクロールバーのくぼみ部分の色。
scrollForeground スクロールバーのスライダと矢印部分の色。
menuBackground メニューの背景色。
menuForeground メニューの前景色。
tooltipForeground ツールチップとバルーンの前景色。
tooltipBackground ツールチップとバルーンの背景色。
font 通常のテキストに使用されるフォント名。
boldFont ボールドのテキストに使用されるフォント名。
italicFont イタリックのテキストに使用されるフォント名。
boldItalicFont ボールド、イタリックのテキストに使用されるフォント名。
menuFond +xfontsetが無効なときに使われるメニューのフォント名。
menuFontSet +xfontsetが有効なときに使われるメニューのフォント
セット名。
tooltipFont ツールチップとバルーンに使われるフォント名。
+xfontsetが有効なときはこれはフォントセット名である。
geometry gvimのウィンドウに用いられる初期サイズ(デフォルトはそ
れを開始したターミナルと同じサイズ)。
scrollbarWidth スクロールバーの厚さ。
borderWidth テキストエリアの周りのボーダの厚さ。
イタリック、ボールド、イタリック・ボールドのテキスト用の特別なフォントはユーザー
がリソースを通して指定されたものを持っている場合にだけ用いられるだろう。通常の
テキストのフォントに基づいたこれらのためにどのフォントが用いられるべきであるか
を推測しようとは試みない。
"Normal", "Menu", "Tooltip" と "Scrollbar" グループを使用して、":highlight" コ
マンドで色を設定することもできることを覚えておくとよい。
font-sizes
Note: (メニューとツールチップ以外では)全てのフォントは同じサイズでなければなら
ない!!! こうしなければ、テキストは表示されないか、あるいはめちゃくちゃに表示さ
れるだろう。Vimはフォントサイズをチェックしない。同じでなければならないのはス
クリーンのピクセルにおけるサイズである。いくつかのフォントが同じポイントサイズ
を持っていても、同じピクセルサイズを持っているとは限らないということに注意しな
くてはならない! さらにフォントの配置は同じ(アセントとディセント)でなければなら
ない。"xlsfonts -l {fontname}" でこれをチェックすることができる。
これらのことはいずれもVimコマンド、例えば ":set guifont=Screen15" で設定される
ならば、Xのリソースを無視するだろう(現在 'guifont' がサポートされる唯一のオプ
ションである)。
あなたの~/.Xdefaultsファイルに付加したいかもしれないものを例としてここに挙げ
る:
これらの内の始めの3つはMotifアプリケーションをもっとよく見せるシリコングラ
フィックス製マシンにおける標準リソースであり、大いに推奨されている!
"Vim*fontList" はMotif用のメニューフォントを設定するためのものである。例:
NOTE: Motifでメニューのフォントを決めるのに、移植性が高く、本当に正しいのは、
リソースを使うことである。
defaultsの中で "Vim*geometry" を使用してはならない。これはメニューを壊すだろ
う。代わりに "Vim.geometry" を使用するとよい。
"Cannot allocate colormap entry for "gray60" のエラーメッセージを受け取ったな
らば、Vimリソースにこれを(色は好みに変更して)追加してみるとよい。
リソースはvimへの引数で設定することもできる:
引数 意味
-gui
-display {display} {display}上でvimを実行する -display
-iconic vimをアイコン化して開始する -iconic
-background {color} 背景に{color}を使用する -background
-bg {color} 同上 -bg
-foreground
-foreground {color} 通常のテキストに{color}を使用する
-fg {color} 同上 -fg
-ul {color} 同上 -ul
-font {font} 通常のテキストに{font}を使用する -font
-fn {font} 同上 -fn
-boldfont {font} 太字テキストに{font}を使用する -boldfont
-italicfont
-italicfont {font} 斜体のテキストに{font}を使用する
-menufont {font} メニュー項目に{font}を使用する -menufont
-menufontset
-menufontset {fontset} メニュー項目に{fontset}を使用する
-mf {font} 同上 -mf
-geometry {geom} 初期サイズに{geom}を使用する -geometry
-geom {geom} 同上。-geometry-exampleを参照 -geom
-borderwidth {width} {width}のボーダ幅を使用する -borderwidth
-bw {width} 同上 -bw
-scrollbarwidth
-scrollbarwidth {width} {width}のスクロールバー幅を使用する
-sw {width} 同上 -sw
-menuheight
-menuheight {height} {height}のメニューバー高を使用する
-mh {height} 同上 -mh
NOTE: Motifではこの値は無視される。メニューの高さは
ちょうど収まるように計算される。
-reverse reverse video を使用する -reverse
-rv 同上 -rv
+reverse reverse video を使用しない -+reverse
+rv 同上 -+rv
-xrm {resource} 指定されたリソースを設定する -xrm
reverse video についての注意: Vimは実際に暗い背景に明るいテキストになるか結果
をチェックする。X11のあるバージョンは色を交換し、あるバージョンはしないからで
ある。これらの2つの例はどちらも青い背景に黄色のテキストを提供するだろう:
gvim -fg Yellow -bg Blue -reverse
gvim -bg Yellow -fg Blue -reverse
-geometry-example
geometry引数の例:
置に置く。
==============================================================================
3. シェルコマンド gui-pty
警告: GUIからの外部コマンドの実行は常に動作するとは限らないだろう。"ls", "grep"
とか "make" のような "normal" コマンドはたいていうまく動作する。"less" とか
"ispell" のような知的ターミナルを要求するコマンドは動作しないだろう。あるもの
はハングさえするかもしれないし、他のターミナルからkillされる必要があるかもしれ
ない。だから気をつけなくてはならない!
シェルコマンドで入出力するには2つの方法がある: パイプと仮想端末(pseudo-tty)で
ある。デフォルトは仮想端末を使用する。これは大抵のシステムで最も良く動作するだ
ろう。
不幸にも、仮想端末の実装はUnixシステム毎に異なっている。そしていくつかのシステ
ムはroot権限を要求する。一番予期しないときに仮想端末における問題に出くわすのを
避けるには、ファイルを編集していないときにそれをテストをするとよい。開始したコ
マンドあるいはVimを "kill" する準備をしなくてはならない。":r !cat" のようなコ
マンドはハングするかもしれない!
仮想端末を使用して動作しないならば、'guipty' オプションをリセットするとよい:
パイプの使用はいくつかのUnixシステムで動作するだろうが、いくつか不都合がある:
- いくつかのシェルコマンドはパイプが使用されていることを通知し、異なった振る舞
いをするだろう。例えば、":!ls" はファイルの一覧を1桁で出力するだろう。
- ":sh" コマンドは、多少動作するだろうが、プロンプトを表示しないだろう。
- ":make" を使用するときには、CTRL-Cで中断できない。
外部コマンドを実行している間、先行入力された文字はしばしば失われる。これはパイ
プと仮想端末の両方で起こる。これは既知の問題だが、修正できない(かあるいは少な
くとも非常に難しい)と思われる。
gui-pty-erase
削除文字が外部コマンドに不適当であるときには、あなたの "~/.cshrc" ファイル、あ
るいはあなたのシェルを初期化するために用いるどんなファイルででもこれを修正すべ
きである。例えば、文字を削除するためにバックスペースを使用したいが、バックス
ペースを打ち込むことで代わりに "^H" が作り出されるときには、これをあなたの
"~/.cshrc" に追加してみるとよい:
==============================================================================
4. 各種事項 gui-x11-various
gui-x11-printing
"File/Print" {訳注: 日本語化されたメニューでは、ファイル/印刷}メニューは単に
現在のバッファを "lpr" に送る。オプションや何かは何もない。他に何かしたければ、
あなた自身の印刷コマンドを定義することができる。例えば:
X11-icon
Motifでコンパイルされたときには、Vimはデフォルトで白黒のアイコンを用いる。色付
きのVimアイコンは$VIMRUNTIME/vim32x32.xpmとして含まれる。GTK+については、組み
込みのアイコンが用いられる。不幸にも、どのようにしてそれをインストールするか
は、あなたのウィンドウマネージャーに依存する。これを使用するときには、白黒のア
イコンを取り除くために、'guioptions' から 'i' フラグを取り除くとよい:
fvwm*ファミリのウィンドウマネージャーの 1 つを使用するならば、単にあなたの
.fvwm2rc 構成ファイルにこの行を追加するとよい:
アイコンファイルの場所がウィンドウマネージャーのImagePath文と一致することを確
かめなくてはならない。あなたの.fvwm2rcを修正するか、あるいは事前に定義された
ディレクトリの1つにアイコンをドロップするとよい。
Note: 古いバージョンのfvwmでは "ImagePath" ではなく "IconPath" を使う。
CDE "dtwm" (Motifから派生)については、.Xdefaultsにこの行を追加するとよい:
"mwm" (Motifウィンドウマネージャー)については、その行はこうなるだろう:
X11で利用できるマウスポインタ
X11_mouse_shapes
'mouseshape' オプションを使うと、Vimがモード (挿入モードやコマンドモードなど)
を変更するたびに自動的にマウスポインタを変更できる。現在、利用できるポインタは
次の通り:
arrow 左上向きの矢印
beam 「I」のような垂直の棒
size 上下を指す矢印
busy 腕時計
blank 透明なポインタ
crosshair 細い "+" 印
hand1 左上向きの暗い手のポインタ
hand2 左右向きの明るい手のポインタ
pencil 右下向きのペン型のポインタ
question クエスチョンマーク(?)
right_arrow 右上向きの矢印
up_arrow 上向きの矢印
さらに、インクルードファイルのX11/cursorfont.hで定義された整数を指定して、
X11に組み込まれたポインタを使うことができる。
他のシステムでは使えても、X11にない名前を指定すると、デフォルトの "arrow" ポイ
ンタが使われる。
==============================================================================
5. GTKバージョン gui-gtk GTK+ GTK GTK3
GUIのGTKバージョンはほんの少し異なった動作をする。
GTKは従来のXのリソース設定を使_わない_。したがって、~/.Xdefaultsや
app-defaultsは使われない。
伝統的なXコマンドの引数はサポートされない。(例えば -bg, -fg, などの要素)。サ
ポートされているのは:
コマンドライン引数 リソース名 意味
-fn or -font .font テキストのフォント名
-geom or -geometry .geometry gvimウィンドウのサイズ
-rv or -reverse *reverseVideo 黒い背景に白いテキスト
-display 使用されるディスプレイ
-fg -foreground {color} 前景色
-bg -background {color} 背景色
フォントを設定するには、'guifont' を参照。GTKについては、これをするメニュー
オプションもある。
さらに、GTKの内部で扱われるこれらのコマンドライン引数がある。それらがどのよう
に用いられるかはGTKのドキュメントを見るとよい。
--sync
--gdk-debug
--gdk-no-debug
--no-xshm (GTK+ 2では使われない)
--xim-preedit (GTK+ 2では使われない)
--xim-status (GTK+ 2では使われない)
--gtk-debug
--gtk-no-debug
--g-fatal-warnings
--gtk-module
--display (GTK+の-displayに対応; 同じように動作する。)
--screen (スクリーン番号: GTK+ 2.2ではマルチスレッド対応)
これらの引数は+netbeans_intgが有効なときは使われない。
-xrm
-mf
色については、Vimの(構文強調表示についての)色の設定はまだ従来のVimの方法でなさ
れている。より多くのヘルプについては:highlightを参照。
残りのguiコンポーネント(例えば、メニューバー、スクロールバー、どんなものでも)
の色を設定したければ、GTK特有の設定があり、何かgtkrcファイルの類にそれらを設定
する必要がある。GTKドキュメントを参照しなければならないだろうが、この方法に関
する情報はあまりない。詳細については、
http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html
を参照。
gtk3-slow
もしあなたが GTK3 を利用しており Vim の速度低下が見られる場合、環境変数
$GDK_RENDERING を "image" に設定するのを試してみること。
ツールチップの色
gtk-tooltip-colors
ツールチップの色を明るい黄色の背景に黒のテキストに設定する例:
~/.gtkrcファイルの中にこれを書くとGTKで用いられるだろう。GTK+ 2では
~/.gtkrc-2.0を使わなければいけないかも知れない。環境による。
GTK+ 3 でも、以下の CSS コードのスニペットを $XDG_HOME_DIR/gtk-3.0/gtk.css
(次のセクションを参照) に追加する事で上記と同様の効果が得られる。
3.20 未満の GTK+ 3 では:
3.20 以上の GTK+ 3 では:
GTK+ CSS の簡単な説明
gtk-css
このサブセクションの内容は、GTK+ CSS の安定したサポートを提供する GTK+ 3.20 以
降に適用される:
https://developer.gnome.org/gtk3/stable/theming.html
GTK+ は、ウィジェットのスタイリングおよびレイアウトに CSS を使用する。このサブ
セクションでは、単純な実例を通して GTK+ CSS の簡単な説明を行う。
通常、設定は次のようにして編集できる:
例 1. 空白領域の調整
標準では、GTK+ 3 GUI のツールバーおよびタブラインは GTK+ 2 GUI のものよりも幾
分大きい。一部の人は GTK+ 2 GUI と同じサイズの見た目にしたいかもしれない。
これを行うには、明らかに余分に見えるアイコンおよびラベル周辺の空白領域を削除す
る。
以下の行を $XDG_HOME_DIR/gtk-3.0/gtk.css (通常は $HOME/.config/gtk-3.0/gtk.css)
に追加する:
CSS なので、一括指定プロパティを使って書き直すこともできる:
Note: アイコンサイズを調整するには 'toolbariconsize' を使用することもできる。
Note: 使用しているアイコンのテーマやフォントによっては、満足いく結果のために更
なる調整が必要かもしれない。
Note: margin や padding に加えて、border も使うことができる。詳細については、
次のような CSS のボックスモデルを参照すること。
https://www.w3schools.com/css/css_boxmodel.asp
例 2. 単なる色よりも
GTK+ CSS は同様にグラデーションもサポートしている:
グラデーションは、高いコントラストに頼ることなく GUI 要素を他のものと視覚的に
区別するために使用することができる。したがって、これらの効果的な活用は、テーマ
に色や輝度の統一感を与える有効なテクニックである。
Note: テーマは、すべてのアプリケーションの見た目を等しく良くしなければならない
ため困難となることもある。1 つのアプリケーションの見た目をより良くすることは、
しばしば他のものの魅力を意図せず下げてしまったり、使用感を悪化させてしまうこと
さえある。テーマを改善しようとするときには常にこれらを気に留めておくこと。
例 3. ボーダーの色
最大化したときのボーダーを取り除く:
GTK+ プラグインとして Vim を使用する
gui-gtk-socketid
GTK+版のVimを普通に起動すると、Vimは自身のトップレベルウィンドウを作成する(技
術的には 'GtkWindow')。GTK+はGtkSocket、GtkPlugウィジェットを使った埋め込み機
能を提供している。あるGTK+アプリケーションが自分のウィンドウにGtkSocketウィ
ジェットを作成していると、別のアプリケーションはトップレベルのGtkPlugウィジェッ
トをソケットIDを使って作成し、先のアプリケーションに自身を組み込める。
Vimのコマンドラインオプションに '--socketid' と10進数や16進数の値を指定すると、
Vimは通常のGtkWindowを使わず、指定された値を使いGtkPlugウィジェットを作成す
る。これはVimがGTK+プラグインとして振る舞うことを可能にする。
これはプログラマ向けのインターフェイスであり、それをサポートするアプリケーショ
ン無しではまったく役に立たない。GTK+ソケットについての詳細は次のURLを参考にす
ること。
http://www.gtk.org/api/
Note この機能は最新バージョンのGTKを必要とする。GTK 1.2.10はまだ若干問題があ
る。ソケットの機能はまだGTK+ 2ではテストされていない、自己責任でどうぞ。
==============================================================================
6. GNOME バージョン gui-gnome Gnome GNOME
GNOME GUI は GTK+ バージョンと同じように機能する。どのように動作するかは上述
の GTK+ を参照。しかし若干の違いがあり、素の GTK+ GUI では利用できない重要
な機能が 1 つ実装されている。それはセッションマネージャーとの相互作用である。
gui-gnome-session
見た目の違い:
- GNOME ダイアログを使う (GNOME 1 だけ)。GNOME 2 GUI は同じく素敵な GTK+ 2
バージョンのダイアログを使う。
- GNOME ドックを使う。したがって、ツールバーとメニューバーは上以外の別の場所
に移動することができる (例えばツールバーを左や右、上、もしくは下に置け
る)。メニューバーとツールバーの位置は GNOME 2 バージョンでのみ記憶される。
- これはメニューバーとツールバーのハンドルが戻ってきたということだ! やった!
もちろんサイズ変更グリッドもまだ使える。
GNOME バージョンは configure が GNOME を認識し、引数--enable-gnome-checkが指定
されていればコンパイルされる。
Note: GTK+ 3 GUIビルドで --enable-gnome-check を使用しない。上記で述べた機能は
GTK+ 3で統合されている。
GNOME セッションサポート
gui-gnome-session gnome-session
ログアウト時、Vim はバッファのどれかが変更されていると、よく知られた終了確認
ダイアログを表示する。[Cancel] をクリックするとログアウトが取り止めになる。
そうしなかった場合は、現在のセッションが :mksession コマンドを使ってディス
クに保存され、次回のログオン時に復元される。
GNOME セッションサポートはおそらく KDE セッションマネージャーでも機能する。
もしあなたが何かの問題に直面したらバグレポートを彼らに送っていただきたい。
Note: 自動的なセッションの保存はあなたのセッションファイルやスクリプト、自動コ
マンドの衝突を避けるために実に適切に働く。その手段としては:
- セッションファイルは別のディレクトリに保存される (普通は $HOME/.gnome2)。
- 'sessionoptions' は無視される。代わりにハードコードされた適切なフラグが使
用される:
ログインしたときに元の値に復元される。
GUI ウィンドウの位置とサイズは保存されない、それはウィンドウマネージャーの仕事
である。しかし、GTK+ 2 サポートを有効にしてコンパイルされていると、Vim はウィ
ンドウの役目を復元して WM がウィンドウを識別するのを補佐する (コマンドライン引
数の--role を使う)。
==============================================================================
7. KDE バージョン gui-kde kde KDE KVim
gui-x11-kde
KDE バージョンの Vim は存在しない。Qt ツールキットを使って移植する作業が行われ
ていたが、ちゃんと動かなかったので、今は放棄されている。作業は Yzis で継続され
ている: https://github.com/chrizel/Yzis しかし、それも放棄されたようだ。
==============================================================================
8. コンパイル gui-x11-compiling
X11を使用しているならば、Vimのconfigureはデフォルトでは最初にシステム上の必要
となるGTK+ファイルを見つけようとするだろう。GTK+ 2とGTK+ 3の両方のファイルがシ
ステムで見つかった場合は、configureに明示的に --enable-gui=gtk3 が指定されて
いない限り GTK+ 2が使われる。
GTK+のファイルが見つからなかった場合は、Motifファイルが検索される。そしてその
両方が失敗したなら、GUIは無効になる。
GTK+については、Vimのコンフィギュレーションプロセスは必要なGTK+が適切にインス
トールされ、使用可能であるかをチェックする為に pkg-config(1) が使われる。した
がって configure を実行する前に必要とされるGTK+の .pc ファイルで pkg-config が
システムで動作する事を確認するのは良い事である。例えば GTK+ 2 の pkg-config で
あれば以下のコマンドラインを実行する:
GTK+ 3 であれば gtk+-2.0 を gtk+-3.0 で置換しなさい。もし GTK+ のバージョン番
号が正しいのであれば、実行できるはずだ: もしできないのならば、おそらくシステム
管理者に正しい pkg-config と GTK+ にセットアップして貰う必要がある。
GTK+ 2 GUI がデフォルトでビルドされる。したがって通常 --enable-gui=gtk2 の様な
オプションを configure に渡してビルドする必要はない。
補足として GTK+ 2 GUI は GNOME 2 のサポートと統合可能である。これは configure
に --enable-gnome-check を渡す事で有効になる。
もし GTK+ 3 GUI でビルドしたいならば、 --enable-gui=gtk3 を明示的に configure
に渡す必要がある。GTK+ 3 では既にサポート済みの GNOME 2 サポートを有効にするの
に --enable-gnome-check を渡す事を避けるべきである。
そうではなくて、Motifを使用しているならば、configureが見に行かないないディレク
トリにMotifファイルがあるときには、ディレクトリ名を記入するためにMakefileを編
集しなくてはならない。Motifのディレクトリを設定する例については "GUI_INC_LOC"
を検索するとよい。
gui-x11-gtk
現在、Vim は GTK+ 2 と GTK+ 3 の両方をサポートしている。
GTK+ 2 GUI を使うときは GTK+ 2.0 か GTK+ 2.2 シリーズの最新版を使うことが推奨
される。
GTK+はWin32プラットフォームに恐らく移植されているけれども、これはVimではテスト
されていないし、サポートされてもいない。さらに、GTK+ GUI は一般的な X11 の
コードを使うのでコンパイルできそうもない。これはいつの日か変更されるかもしれ
ない。特に中心の X11 のコードを取り除くことは GTK+ フレームバッファのサポート
にも必要なため。
gui-x11-motif
Motifについては、少なくともMotifバージョン1.2と/あるいはX11R5が必要である。
Motif 2.0とX11R6はOKである。Motif 1.1とX11R4は動作するかもしれないが保証しない
(多少の問題があるかもしれないが、少しの作業でそれをコンパイルし実行させられる
かもしれない、もしあなたがそうするなら、どうかパッチを送って欲しい)。LessTif
の最新リリースも問題なく動作すると報告を受けている。
gui-x11-athena gui-x11-neXtaw
Athena GUI と neXtaw のサポートについては、パッチ 8.2.4677 にて削除された。
gui-x11-misc
一般的には、異なったGTK+, Motif, AthenaとX11のバージョンからのファイルを混ぜよ
うとしてはならない。これは問題を引き起こすだろう。例えば、X11R6用のライブラリ
でX11R5用のヘッダーファイルを使用しても動作しないだろう(リンクがエラーメッセー
ジを出さないとしても、Vimは後でクラッシュするだろう)。
gui-wayland
Wayland ディスプレイサーバープロトコルの最初のサポートは、patch 9.1.0064 で導
入された。これを有効にするには、シェルで環境変数 "$GVIM_ENABLE_WAYLAND" を設定
する必要がある。
Note: Wayland プロトコルにはいくつかの制限があるため、次の関数は動作しない:
getwinpos()、getwinposx()、getwinposy() ならびに、v:windowid 変数は使
用できない。
==============================================================================
9. X11 セレクション x11-selection
X11 を使っている場合、GUI や、xterm で Vim が X11 を認識している状態のとき、
Vim から X11 のセレクションやクリップボードを扱える。それらは "* レジスタと
"+ レジスタを使用して取り扱う。
X11 は 2 つの基本的な共通記憶域、セレクションとカットバッファを提供してい
る。これらは重要な点が異なっている。セレクションはアプリケーションが所有し、
Vim などのアプリケーションが終了するとなくなる、すなわちデータは失われる。一
方、カットバッファは、X サーバーが記憶し、上書きされるか、ログアウトするなどし
て X サーバーが終了するまで保存される。
セレクションの内容はそのアプリケーションによって保存され (コピー)、別のアプリ
ケーションがそれを求めたときに渡される (ペースト)。
カットバッファの内容はすぐに上書きされ、その元のアプリケーションを介さずに、
X サーバーから直接読み込まれる。
quoteplus quote+
文書化された 3 つの X セレクションがある。プライマリ (Vim のビジュアルモード
での選択のような、現在の選択範囲を表す)、セカンダリ (不明瞭である)、クリップ
ボード (カット、コピー、ペーストに使われる)。
この 3 つの内、Vim は "* レジスタを読み書きするときにはプライマリを使う (X11
セレクションが利用可能なとき、Vim は 'clipboard' にデフォルトとして
"autoselect" を設定する)。"+ レジスタを読み書きするときにはクリップボードを
使う。Vim はセカンダリを使わない。
これは GUI 版および端末版の両方に適用される。X11 以外のシステムの場合、プラス
とスターレジスタの両方がシステムクリップボードを使用する。
例: (オプションが標準設定のとき)
- Vim のビジュアルモードで URL を選択する。ブラウザーの URL 入力欄でマウスの
ミドルボタンをクリックする。選択したテキストが入力される (うまくいけば!)。
Note: Firefox では、about:config を開き、middlemouse.contentLoadURL を true
にすれば、ウィンドウ内をミドルクリックすることで、この URL を開くことができ
る。
- ブラウザーでマウスをドラッグしてテキストを選択する。Vim でマウスのミドルボ
タンをクリックすると選択したテキストが入力される。
- Vim でテキストを選択して "+y を実行する。ブラウザーのテキストエリアでマウス
をドラッグしてテキストを選択する。そのまま右クリックしてポップアップメ
ニューから "Paste" を選択する。選択したテキストは Vim で選択したテキストに
置き換わる。
Note "+ レジスタのテキストはビジュアル選択しただけで変更されない。"* レジス
タは変更される。つまり選択したテキストを上書きできる。
W23
"* または "+ レジスタにヤンクしている時に、Vim が X11 セレクション (またはク
リップボード) への接続を確立できない場合、レジスタ 0 が使用され、警告が出力さ
れる:
Warning: Clipboard register not available, using register 0
W24
Vim にはオリジナルの Vi との互換性だけを追求した小さなビルドから、多くの改善
(GUI 等) を含む拡張ビルドまでさまざまな種類がある。ただし、サーバーや組み込み
システムでは、この機能には X11 ライブラリが必要であるため、Vim は通常クリップ
ボードサポートなしでコンパイルされる。":version" の出力でフラグ +clipboard
または -clipboard を確認すること。前者はクリップボードサポートが存在することを
意味し、後者は Vim にクリップボードサポートが含まれていないことを意味する。
"* または "+ レジスタにアクセスしようとしていて、Vim がクリップボードをサポー
トしていない場合は、次の警告が表示される:
Warning: Clipboard register not available. See :h W24
クリップボードをサポートしていない vim を持っているが、クリップボードを使用し
たい場合は、vim-enhanced や vim-gtk3 等のより拡張された Vim パッケージをインス
トールしてみてほしい (GUI パッケージには通常、クリップボードをサポートしている
ターミナル Vim も付属している)。
x11-cut-buffer
既定では 8 つのカットバッファがある。CUT_BUFFER0 から CUT_BUFFER7 まで。Vim
は CUTBUFFER0 のみを使う。これは xterm が標準的に使っているものである。
Vim が利用不可能な状態 (終了やサスペンド) になり、他のアプリケーションのセレ
クションの要求に応答できなくなるときはいつでも、Vim は選択されている内容を
CUT_BUFFER0 に書き込む。"+ クリップボードセレクションが Vim のものであると
き、それが優先して書き込まれる。そうでなければ、 "* プライマリセレクションが
Vim のものであるときに、それが書き込まれる。
同様に、Vim が "* や "+ からペーストしようとするとき (明示的、もしくはマウス
のミドルボタンをクリックしたときの暗黙的な "* レジスタの使用)、要求した X セ
レクションが空もしくは利用不可能なら、Vim は CUT_BUFFER0 の現在の値を読み込
む。
Note これによってテキストが CUT_BUFFER0 にコピーされるときは、セレクションの
型情報 (文字、行、矩形) は常に失われる。後にそれをペーストするのが Vim であっ
ても。
通常、Xterm は、選択したものをプライマリと CUT_BUFFER0 の両方に書き込む。
ペースト時には、利用可能であればプライマリが使われ、それができなければ
CUT_BUFFER0 が使用される。このため、Vim と xterm の間でのカットやペーストに
は "* レジスタを使わなければならない。Xterm はクリップボードを使わないので
"+ レジスタは使えない。
最近のほとんどのアプリケーションでは範囲選択でプライマリ ("*) を、カット、コ
ピー、ペーストの操作でクリップボード ("+) を使用するようになっている。そのた
め "* レジスタか "+ レジスタを選択して使用することができる。
vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
VIMリファレンスマニュアル by Bram Moolenaar
Vimのグラフィカルユーザーインターフェイス gui-x11 GUI-X11
Motif
1. X11 GUIの開始 gui-x11-start
2. GUIリソース gui-resources
3. シェルコマンド gui-pty
4. 各種事項 gui-x11-various
5. GTKバージョン gui-gtk
6. GNOMEバージョン gui-gnome
7. KDEバージョン gui-kde
8. コンパイル gui-x11-compiling
9. X11セレクション x11-selection
他の重要なドキュメント:
gui.txt GUIの一般的な項目について。
==============================================================================
1. X11 GUIの開始 gui-x11-start E665
これらのどちらの方法でもVimのGUIバージョンを実行することができる:
gvim [options] [files...]
vim -g [options] [files...]
であるから、実行可能な "gvim" を呼ぶか、あるいは "gvim" を実行可能なものとして
リンクさせるならば、GUIバージョンが自動的に使用されるだろう。例えば "gvim-5"
のように、追加の文字が "gvim" の後に追加されてもよい。
これらのコマンドの1つを使用してターミナルバージョンの中からGUIを起動してもよ
い:
:gui [++opt] [+cmd] [-f|-b] [files...] :gu :gui
:gvim [++opt] [+cmd] [-f|-b] [files...] :gv :gvim
"-f" オプションはフォアグラウンドで実行する。
"-b" オプションはバックグラウンドで実行する(これがデフォルト)。
++optと+cmdも参照すること。
gui-fork
GUIが開始されるときには、fork()して現在のプロセスを終了する。gvimがシェルから
開始されたときには、これでシェルが更にコマンドを受け入れられるようになる。これ
を望まない(例えば、メールプログラムでgvimを使用しているときにgvimが終了するの
を待つ)ならば、"gvim -f", "vim -gf" でかあるいは ":gui -f" を使用して開始する。
"-fg" は前景色の指定に用いられるので、"vim -fg" を使用してはならない。
"vim -f" の後に ":gui" を使用するときには、Vimはフォアグラウンドで実行されるだ
ろう。"-f" 引数は記憶されているだろう。Vimを強制的にバックグラウンドで実行する
には、":gui -b" を使用するとよい。
"gvim --nofork" と "gvim -f" は同じである。
実行中のジョブがある場合、Vim は fork しない。なぜならそれらのプロセスが子プロ
セスではなくなってしまうためである。
E851 E852
GUI の初期化に失敗した場合、Vim は現在の端末で実行を継続しようとする。
GUIをいつもフォアグラウンドで実行したければ、'guioptions' の中に 'f' フラグを
含めるとよい -f。
==============================================================================
2. GUIリソース gui-resources .Xdefaults
GUIのMotifバージョン(KDE, GTK+やあるいはWin32バージョンについてではない)を使用
しているならば、多くのXのリソースが有効である。これらを設定するときには、Vimの
クラス "Vim" を使用すべきである。それらは以下のようなものである:
リソース名 意味
reverseVideo ブール値: reverse videoが用いられるべきか?
background 背景色。
foreground 通常のテキストの色。
scrollBackground スクロールバーのくぼみ部分の色。
scrollForeground スクロールバーのスライダと矢印部分の色。
menuBackground メニューの背景色。
menuForeground メニューの前景色。
tooltipForeground ツールチップとバルーンの前景色。
tooltipBackground ツールチップとバルーンの背景色。
font 通常のテキストに使用されるフォント名。
boldFont ボールドのテキストに使用されるフォント名。
italicFont イタリックのテキストに使用されるフォント名。
boldItalicFont ボールド、イタリックのテキストに使用されるフォント名。
menuFond +xfontsetが無効なときに使われるメニューのフォント名。
menuFontSet +xfontsetが有効なときに使われるメニューのフォント
セット名。
tooltipFont ツールチップとバルーンに使われるフォント名。
+xfontsetが有効なときはこれはフォントセット名である。
geometry gvimのウィンドウに用いられる初期サイズ(デフォルトはそ
れを開始したターミナルと同じサイズ)。
scrollbarWidth スクロールバーの厚さ。
borderWidth テキストエリアの周りのボーダの厚さ。
イタリック、ボールド、イタリック・ボールドのテキスト用の特別なフォントはユーザー
がリソースを通して指定されたものを持っている場合にだけ用いられるだろう。通常の
テキストのフォントに基づいたこれらのためにどのフォントが用いられるべきであるか
を推測しようとは試みない。
"Normal", "Menu", "Tooltip" と "Scrollbar" グループを使用して、":highlight" コ
マンドで色を設定することもできることを覚えておくとよい。
:highlight Menu guibg=lightblue
:highlight Tooltip guibg=yellow
:highlight Scrollbar guibg=lightblue guifg=blue
:highlight Normal guibg=grey90
:highlight Tooltip guibg=yellow
:highlight Scrollbar guibg=lightblue guifg=blue
:highlight Normal guibg=grey90
font-sizes
Note: (メニューとツールチップ以外では)全てのフォントは同じサイズでなければなら
ない!!! こうしなければ、テキストは表示されないか、あるいはめちゃくちゃに表示さ
れるだろう。Vimはフォントサイズをチェックしない。同じでなければならないのはス
クリーンのピクセルにおけるサイズである。いくつかのフォントが同じポイントサイズ
を持っていても、同じピクセルサイズを持っているとは限らないということに注意しな
くてはならない! さらにフォントの配置は同じ(アセントとディセント)でなければなら
ない。"xlsfonts -l {fontname}" でこれをチェックすることができる。
これらのことはいずれもVimコマンド、例えば ":set guifont=Screen15" で設定される
ならば、Xのリソースを無視するだろう(現在 'guifont' がサポートされる唯一のオプ
ションである)。
あなたの~/.Xdefaultsファイルに付加したいかもしれないものを例としてここに挙げ
る:
Vim*useSchemes: all
Vim*sgiMode: true
Vim*useEnhancedFSB: true
Vim.foreground: Black
Vim.background: Wheat
Vim*fontList: 7x13
Vim*sgiMode: true
Vim*useEnhancedFSB: true
Vim.foreground: Black
Vim.background: Wheat
Vim*fontList: 7x13
これらの内の始めの3つはMotifアプリケーションをもっとよく見せるシリコングラ
フィックス製マシンにおける標準リソースであり、大いに推奨されている!
"Vim*fontList" はMotif用のメニューフォントを設定するためのものである。例:
Vim*menuBar*fontList: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
NOTE: Motifでメニューのフォントを決めるのに、移植性が高く、本当に正しいのは、
リソースを使うことである。
Vim.menuFont: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
+xfontsetが有効にされているときは Vim.menuFontSet: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
defaultsの中で "Vim*geometry" を使用してはならない。これはメニューを壊すだろ
う。代わりに "Vim.geometry" を使用するとよい。
"Cannot allocate colormap entry for "gray60" のエラーメッセージを受け取ったな
らば、Vimリソースにこれを(色は好みに変更して)追加してみるとよい。
Vim*scrollBackground: Black
Vim*scrollForeground: Blue
Vim*scrollForeground: Blue
リソースはvimへの引数で設定することもできる:
引数 意味
-gui
-display {display} {display}上でvimを実行する -display
-iconic vimをアイコン化して開始する -iconic
-background {color} 背景に{color}を使用する -background
-bg {color} 同上 -bg
-foreground
-foreground {color} 通常のテキストに{color}を使用する
-fg {color} 同上 -fg
-ul {color} 同上 -ul
-font {font} 通常のテキストに{font}を使用する -font
-fn {font} 同上 -fn
-boldfont {font} 太字テキストに{font}を使用する -boldfont
-italicfont
-italicfont {font} 斜体のテキストに{font}を使用する
-menufont {font} メニュー項目に{font}を使用する -menufont
-menufontset
-menufontset {fontset} メニュー項目に{fontset}を使用する
-mf {font} 同上 -mf
-geometry {geom} 初期サイズに{geom}を使用する -geometry
-geom {geom} 同上。-geometry-exampleを参照 -geom
-borderwidth {width} {width}のボーダ幅を使用する -borderwidth
-bw {width} 同上 -bw
-scrollbarwidth
-scrollbarwidth {width} {width}のスクロールバー幅を使用する
-sw {width} 同上 -sw
-menuheight
-menuheight {height} {height}のメニューバー高を使用する
-mh {height} 同上 -mh
NOTE: Motifではこの値は無視される。メニューの高さは
ちょうど収まるように計算される。
-reverse reverse video を使用する -reverse
-rv 同上 -rv
+reverse reverse video を使用しない -+reverse
+rv 同上 -+rv
-xrm {resource} 指定されたリソースを設定する -xrm
reverse video についての注意: Vimは実際に暗い背景に明るいテキストになるか結果
をチェックする。X11のあるバージョンは色を交換し、あるバージョンはしないからで
ある。これらの2つの例はどちらも青い背景に黄色のテキストを提供するだろう:
gvim -fg Yellow -bg Blue -reverse
gvim -bg Yellow -fg Blue -reverse
-geometry-example
geometry引数の例:
gvim -geometry 80x63+8+100
これはウィンドウを80カラム、63行で作り、左から8ピクセル、上から100ピクセルの位置に置く。
==============================================================================
3. シェルコマンド gui-pty
警告: GUIからの外部コマンドの実行は常に動作するとは限らないだろう。"ls", "grep"
とか "make" のような "normal" コマンドはたいていうまく動作する。"less" とか
"ispell" のような知的ターミナルを要求するコマンドは動作しないだろう。あるもの
はハングさえするかもしれないし、他のターミナルからkillされる必要があるかもしれ
ない。だから気をつけなくてはならない!
シェルコマンドで入出力するには2つの方法がある: パイプと仮想端末(pseudo-tty)で
ある。デフォルトは仮想端末を使用する。これは大抵のシステムで最も良く動作するだ
ろう。
不幸にも、仮想端末の実装はUnixシステム毎に異なっている。そしていくつかのシステ
ムはroot権限を要求する。一番予期しないときに仮想端末における問題に出くわすのを
避けるには、ファイルを編集していないときにそれをテストをするとよい。開始したコ
マンドあるいはVimを "kill" する準備をしなくてはならない。":r !cat" のようなコ
マンドはハングするかもしれない!
仮想端末を使用して動作しないならば、'guipty' オプションをリセットするとよい:
:set noguipty
パイプの使用はいくつかのUnixシステムで動作するだろうが、いくつか不都合がある:
- いくつかのシェルコマンドはパイプが使用されていることを通知し、異なった振る舞
いをするだろう。例えば、":!ls" はファイルの一覧を1桁で出力するだろう。
- ":sh" コマンドは、多少動作するだろうが、プロンプトを表示しないだろう。
- ":make" を使用するときには、CTRL-Cで中断できない。
外部コマンドを実行している間、先行入力された文字はしばしば失われる。これはパイ
プと仮想端末の両方で起こる。これは既知の問題だが、修正できない(かあるいは少な
くとも非常に難しい)と思われる。
gui-pty-erase
削除文字が外部コマンドに不適当であるときには、あなたの "~/.cshrc" ファイル、あ
るいはあなたのシェルを初期化するために用いるどんなファイルででもこれを修正すべ
きである。例えば、文字を削除するためにバックスペースを使用したいが、バックス
ペースを打ち込むことで代わりに "^H" が作り出されるときには、これをあなたの
"~/.cshrc" に追加してみるとよい:
stty erase ^H
^Hは本当のCTRL-Hであり、CTRL-V CTRL-Hとタイプする。==============================================================================
4. 各種事項 gui-x11-various
gui-x11-printing
"File/Print" {訳注: 日本語化されたメニューでは、ファイル/印刷}メニューは単に
現在のバッファを "lpr" に送る。オプションや何かは何もない。他に何かしたければ、
あなた自身の印刷コマンドを定義することができる。例えば:
:10amenu File.Print :w !lpr -Php3
:10vmenu File.Print :w !lpr -Php3
:10vmenu File.Print :w !lpr -Php3
X11-icon
Motifでコンパイルされたときには、Vimはデフォルトで白黒のアイコンを用いる。色付
きのVimアイコンは$VIMRUNTIME/vim32x32.xpmとして含まれる。GTK+については、組み
込みのアイコンが用いられる。不幸にも、どのようにしてそれをインストールするか
は、あなたのウィンドウマネージャーに依存する。これを使用するときには、白黒のア
イコンを取り除くために、'guioptions' から 'i' フラグを取り除くとよい:
:set guioptions-=i
fvwm*ファミリのウィンドウマネージャーの 1 つを使用するならば、単にあなたの
.fvwm2rc 構成ファイルにこの行を追加するとよい:
Style "vim" Icon vim32x32.xpm
アイコンファイルの場所がウィンドウマネージャーのImagePath文と一致することを確
かめなくてはならない。あなたの.fvwm2rcを修正するか、あるいは事前に定義された
ディレクトリの1つにアイコンをドロップするとよい。
ImagePath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps
Note: 古いバージョンのfvwmでは "ImagePath" ではなく "IconPath" を使う。
CDE "dtwm" (Motifから派生)については、.Xdefaultsにこの行を追加するとよい:
Dtwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
"mwm" (Motifウィンドウマネージャー)については、その行はこうなるだろう:
Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
X11で利用できるマウスポインタ
X11_mouse_shapes
'mouseshape' オプションを使うと、Vimがモード (挿入モードやコマンドモードなど)
を変更するたびに自動的にマウスポインタを変更できる。現在、利用できるポインタは
次の通り:
arrow 左上向きの矢印
beam 「I」のような垂直の棒
size 上下を指す矢印
busy 腕時計
blank 透明なポインタ
crosshair 細い "+" 印
hand1 左上向きの暗い手のポインタ
hand2 左右向きの明るい手のポインタ
pencil 右下向きのペン型のポインタ
question クエスチョンマーク(?)
right_arrow 右上向きの矢印
up_arrow 上向きの矢印
さらに、インクルードファイルのX11/cursorfont.hで定義された整数を指定して、
X11に組み込まれたポインタを使うことができる。
他のシステムでは使えても、X11にない名前を指定すると、デフォルトの "arrow" ポイ
ンタが使われる。
==============================================================================
5. GTKバージョン gui-gtk GTK+ GTK GTK3
GUIのGTKバージョンはほんの少し異なった動作をする。
GTKは従来のXのリソース設定を使_わない_。したがって、~/.Xdefaultsや
app-defaultsは使われない。
伝統的なXコマンドの引数はサポートされない。(例えば -bg, -fg, などの要素)。サ
ポートされているのは:
コマンドライン引数 リソース名 意味
-fn or -font .font テキストのフォント名
-geom or -geometry .geometry gvimウィンドウのサイズ
-rv or -reverse *reverseVideo 黒い背景に白いテキスト
-display 使用されるディスプレイ
-fg -foreground {color} 前景色
-bg -background {color} 背景色
フォントを設定するには、'guifont' を参照。GTKについては、これをするメニュー
オプションもある。
さらに、GTKの内部で扱われるこれらのコマンドライン引数がある。それらがどのよう
に用いられるかはGTKのドキュメントを見るとよい。
--sync
--gdk-debug
--gdk-no-debug
--no-xshm (GTK+ 2では使われない)
--xim-preedit (GTK+ 2では使われない)
--xim-status (GTK+ 2では使われない)
--gtk-debug
--gtk-no-debug
--g-fatal-warnings
--gtk-module
--display (GTK+の-displayに対応; 同じように動作する。)
--screen (スクリーン番号: GTK+ 2.2ではマルチスレッド対応)
これらの引数は+netbeans_intgが有効なときは使われない。
-xrm
-mf
色については、Vimの(構文強調表示についての)色の設定はまだ従来のVimの方法でなさ
れている。より多くのヘルプについては:highlightを参照。
残りのguiコンポーネント(例えば、メニューバー、スクロールバー、どんなものでも)
の色を設定したければ、GTK特有の設定があり、何かgtkrcファイルの類にそれらを設定
する必要がある。GTKドキュメントを参照しなければならないだろうが、この方法に関
する情報はあまりない。詳細については、
http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html
を参照。
gtk3-slow
もしあなたが GTK3 を利用しており Vim の速度低下が見られる場合、環境変数
$GDK_RENDERING を "image" に設定するのを試してみること。
ツールチップの色
gtk-tooltip-colors
ツールチップの色を明るい黄色の背景に黒のテキストに設定する例:
style "tooltips"
{
bg[NORMAL] = "#ffffcc"
fg[NORMAL] = "#000000"
}
{
bg[NORMAL] = "#ffffcc"
fg[NORMAL] = "#000000"
}
widget "gtk-tooltips*" style "tooltips"
~/.gtkrcファイルの中にこれを書くとGTKで用いられるだろう。GTK+ 2では
~/.gtkrc-2.0を使わなければいけないかも知れない。環境による。
GTK+ 3 でも、以下の CSS コードのスニペットを $XDG_HOME_DIR/gtk-3.0/gtk.css
(次のセクションを参照) に追加する事で上記と同様の効果が得られる。
3.20 未満の GTK+ 3 では:
.tooltip {
background-color: #ffffcc;
color: #000000;
}
background-color: #ffffcc;
color: #000000;
}
3.20 以上の GTK+ 3 では:
tooltip {
background-color: #ffffcc;
text-shadow: none;
}
background-color: #ffffcc;
text-shadow: none;
}
tooltip label {
color: #2e3436;
}
color: #2e3436;
}
GTK+ CSS の簡単な説明
gtk-css
このサブセクションの内容は、GTK+ CSS の安定したサポートを提供する GTK+ 3.20 以
降に適用される:
https://developer.gnome.org/gtk3/stable/theming.html
GTK+ は、ウィジェットのスタイリングおよびレイアウトに CSS を使用する。このサブ
セクションでは、単純な実例を通して GTK+ CSS の簡単な説明を行う。
通常、設定は次のようにして編集できる:
vim $HOME/.config/gtk-3.0/gtk.css
例 1. 空白領域の調整
標準では、GTK+ 3 GUI のツールバーおよびタブラインは GTK+ 2 GUI のものよりも幾
分大きい。一部の人は GTK+ 2 GUI と同じサイズの見た目にしたいかもしれない。
これを行うには、明らかに余分に見えるアイコンおよびラベル周辺の空白領域を削除す
る。
以下の行を $XDG_HOME_DIR/gtk-3.0/gtk.css (通常は $HOME/.config/gtk-3.0/gtk.css)
に追加する:
toolbar button {
margin-top: -2px;
margin-right: 0px;
margin-bottom: -2px;
margin-left: 0px;
margin-top: -2px;
margin-right: 0px;
margin-bottom: -2px;
margin-left: 0px;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px
}
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px
}
notebook tab {
margin-top: -1px;
margin-right: 3px;
margin-bottom: -1px;
margin-left: 3px;
margin-top: -1px;
margin-right: 3px;
margin-bottom: -1px;
margin-left: 3px;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px
}
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px
}
CSS なので、一括指定プロパティを使って書き直すこともできる:
toolbar button {
margin: -2px 0px;
padding: 0px;
}
margin: -2px 0px;
padding: 0px;
}
notebook tab {
margin: -1px 3px;
padding: 0px
}
margin: -1px 3px;
padding: 0px
}
Note: アイコンサイズを調整するには 'toolbariconsize' を使用することもできる。
Note: 使用しているアイコンのテーマやフォントによっては、満足いく結果のために更
なる調整が必要かもしれない。
Note: margin や padding に加えて、border も使うことができる。詳細については、
次のような CSS のボックスモデルを参照すること。
https://www.w3schools.com/css/css_boxmodel.asp
例 2. 単なる色よりも
GTK+ CSS は同様にグラデーションもサポートしている:
tooltip {
background-image: -gtk-gradient(linear,
0 0, 0 1,
color-stop(0, #344752),
color-stop(0.5, #546772),
color-stop(1, #243742));
}
background-image: -gtk-gradient(linear,
0 0, 0 1,
color-stop(0, #344752),
color-stop(0.5, #546772),
color-stop(1, #243742));
}
tooltip label {
color: #f3f3f3;
}
color: #f3f3f3;
}
グラデーションは、高いコントラストに頼ることなく GUI 要素を他のものと視覚的に
区別するために使用することができる。したがって、これらの効果的な活用は、テーマ
に色や輝度の統一感を与える有効なテクニックである。
Note: テーマは、すべてのアプリケーションの見た目を等しく良くしなければならない
ため困難となることもある。1 つのアプリケーションの見た目をより良くすることは、
しばしば他のものの魅力を意図せず下げてしまったり、使用感を悪化させてしまうこと
さえある。テーマを改善しようとするときには常にこれらを気に留めておくこと。
例 3. ボーダーの色
最大化したときのボーダーを取り除く:
@define-color bg_color #1B2B34;
#vim-main-window {
background-color: @bg_color;
}
#vim-main-window {
background-color: @bg_color;
}
GTK+ プラグインとして Vim を使用する
gui-gtk-socketid
GTK+版のVimを普通に起動すると、Vimは自身のトップレベルウィンドウを作成する(技
術的には 'GtkWindow')。GTK+はGtkSocket、GtkPlugウィジェットを使った埋め込み機
能を提供している。あるGTK+アプリケーションが自分のウィンドウにGtkSocketウィ
ジェットを作成していると、別のアプリケーションはトップレベルのGtkPlugウィジェッ
トをソケットIDを使って作成し、先のアプリケーションに自身を組み込める。
Vimのコマンドラインオプションに '--socketid' と10進数や16進数の値を指定すると、
Vimは通常のGtkWindowを使わず、指定された値を使いGtkPlugウィジェットを作成す
る。これはVimがGTK+プラグインとして振る舞うことを可能にする。
これはプログラマ向けのインターフェイスであり、それをサポートするアプリケーショ
ン無しではまったく役に立たない。GTK+ソケットについての詳細は次のURLを参考にす
ること。
http://www.gtk.org/api/
Note この機能は最新バージョンのGTKを必要とする。GTK 1.2.10はまだ若干問題があ
る。ソケットの機能はまだGTK+ 2ではテストされていない、自己責任でどうぞ。
==============================================================================
6. GNOME バージョン gui-gnome Gnome GNOME
GNOME GUI は GTK+ バージョンと同じように機能する。どのように動作するかは上述
の GTK+ を参照。しかし若干の違いがあり、素の GTK+ GUI では利用できない重要
な機能が 1 つ実装されている。それはセッションマネージャーとの相互作用である。
gui-gnome-session
見た目の違い:
- GNOME ダイアログを使う (GNOME 1 だけ)。GNOME 2 GUI は同じく素敵な GTK+ 2
バージョンのダイアログを使う。
- GNOME ドックを使う。したがって、ツールバーとメニューバーは上以外の別の場所
に移動することができる (例えばツールバーを左や右、上、もしくは下に置け
る)。メニューバーとツールバーの位置は GNOME 2 バージョンでのみ記憶される。
- これはメニューバーとツールバーのハンドルが戻ってきたということだ! やった!
もちろんサイズ変更グリッドもまだ使える。
GNOME バージョンは configure が GNOME を認識し、引数--enable-gnome-checkが指定
されていればコンパイルされる。
Note: GTK+ 3 GUIビルドで --enable-gnome-check を使用しない。上記で述べた機能は
GTK+ 3で統合されている。
GNOME セッションサポート
gui-gnome-session gnome-session
ログアウト時、Vim はバッファのどれかが変更されていると、よく知られた終了確認
ダイアログを表示する。[Cancel] をクリックするとログアウトが取り止めになる。
そうしなかった場合は、現在のセッションが :mksession コマンドを使ってディス
クに保存され、次回のログオン時に復元される。
GNOME セッションサポートはおそらく KDE セッションマネージャーでも機能する。
もしあなたが何かの問題に直面したらバグレポートを彼らに送っていただきたい。
Note: 自動的なセッションの保存はあなたのセッションファイルやスクリプト、自動コ
マンドの衝突を避けるために実に適切に働く。その手段としては:
- セッションファイルは別のディレクトリに保存される (普通は $HOME/.gnome2)。
- 'sessionoptions' は無視される。代わりにハードコードされた適切なフラグが使
用される:
blank,curdir,folds,globals,help,options,tabpages,winsize
- 内部変数の v:this_session はセッションの保存で変更されない。さらに、再びログインしたときに元の値に復元される。
GUI ウィンドウの位置とサイズは保存されない、それはウィンドウマネージャーの仕事
である。しかし、GTK+ 2 サポートを有効にしてコンパイルされていると、Vim はウィ
ンドウの役目を復元して WM がウィンドウを識別するのを補佐する (コマンドライン引
数の--role を使う)。
==============================================================================
7. KDE バージョン gui-kde kde KDE KVim
gui-x11-kde
KDE バージョンの Vim は存在しない。Qt ツールキットを使って移植する作業が行われ
ていたが、ちゃんと動かなかったので、今は放棄されている。作業は Yzis で継続され
ている: https://github.com/chrizel/Yzis しかし、それも放棄されたようだ。
==============================================================================
8. コンパイル gui-x11-compiling
X11を使用しているならば、Vimのconfigureはデフォルトでは最初にシステム上の必要
となるGTK+ファイルを見つけようとするだろう。GTK+ 2とGTK+ 3の両方のファイルがシ
ステムで見つかった場合は、configureに明示的に --enable-gui=gtk3 が指定されて
いない限り GTK+ 2が使われる。
GTK+のファイルが見つからなかった場合は、Motifファイルが検索される。そしてその
両方が失敗したなら、GUIは無効になる。
GTK+については、Vimのコンフィギュレーションプロセスは必要なGTK+が適切にインス
トールされ、使用可能であるかをチェックする為に pkg-config(1) が使われる。した
がって configure を実行する前に必要とされるGTK+の .pc ファイルで pkg-config が
システムで動作する事を確認するのは良い事である。例えば GTK+ 2 の pkg-config で
あれば以下のコマンドラインを実行する:
$ pkg-config --modversion gtk+-2.0
GTK+ 3 であれば gtk+-2.0 を gtk+-3.0 で置換しなさい。もし GTK+ のバージョン番
号が正しいのであれば、実行できるはずだ: もしできないのならば、おそらくシステム
管理者に正しい pkg-config と GTK+ にセットアップして貰う必要がある。
GTK+ 2 GUI がデフォルトでビルドされる。したがって通常 --enable-gui=gtk2 の様な
オプションを configure に渡してビルドする必要はない。
補足として GTK+ 2 GUI は GNOME 2 のサポートと統合可能である。これは configure
に --enable-gnome-check を渡す事で有効になる。
もし GTK+ 3 GUI でビルドしたいならば、 --enable-gui=gtk3 を明示的に configure
に渡す必要がある。GTK+ 3 では既にサポート済みの GNOME 2 サポートを有効にするの
に --enable-gnome-check を渡す事を避けるべきである。
そうではなくて、Motifを使用しているならば、configureが見に行かないないディレク
トリにMotifファイルがあるときには、ディレクトリ名を記入するためにMakefileを編
集しなくてはならない。Motifのディレクトリを設定する例については "GUI_INC_LOC"
を検索するとよい。
gui-x11-gtk
現在、Vim は GTK+ 2 と GTK+ 3 の両方をサポートしている。
GTK+ 2 GUI を使うときは GTK+ 2.0 か GTK+ 2.2 シリーズの最新版を使うことが推奨
される。
GTK+はWin32プラットフォームに恐らく移植されているけれども、これはVimではテスト
されていないし、サポートされてもいない。さらに、GTK+ GUI は一般的な X11 の
コードを使うのでコンパイルできそうもない。これはいつの日か変更されるかもしれ
ない。特に中心の X11 のコードを取り除くことは GTK+ フレームバッファのサポート
にも必要なため。
gui-x11-motif
Motifについては、少なくともMotifバージョン1.2と/あるいはX11R5が必要である。
Motif 2.0とX11R6はOKである。Motif 1.1とX11R4は動作するかもしれないが保証しない
(多少の問題があるかもしれないが、少しの作業でそれをコンパイルし実行させられる
かもしれない、もしあなたがそうするなら、どうかパッチを送って欲しい)。LessTif
の最新リリースも問題なく動作すると報告を受けている。
gui-x11-athena gui-x11-neXtaw
Athena GUI と neXtaw のサポートについては、パッチ 8.2.4677 にて削除された。
gui-x11-misc
一般的には、異なったGTK+, Motif, AthenaとX11のバージョンからのファイルを混ぜよ
うとしてはならない。これは問題を引き起こすだろう。例えば、X11R6用のライブラリ
でX11R5用のヘッダーファイルを使用しても動作しないだろう(リンクがエラーメッセー
ジを出さないとしても、Vimは後でクラッシュするだろう)。
gui-wayland
Wayland ディスプレイサーバープロトコルの最初のサポートは、patch 9.1.0064 で導
入された。これを有効にするには、シェルで環境変数 "$GVIM_ENABLE_WAYLAND" を設定
する必要がある。
Note: Wayland プロトコルにはいくつかの制限があるため、次の関数は動作しない:
getwinpos()、getwinposx()、getwinposy() ならびに、v:windowid 変数は使
用できない。
==============================================================================
9. X11 セレクション x11-selection
X11 を使っている場合、GUI や、xterm で Vim が X11 を認識している状態のとき、
Vim から X11 のセレクションやクリップボードを扱える。それらは "* レジスタと
"+ レジスタを使用して取り扱う。
X11 は 2 つの基本的な共通記憶域、セレクションとカットバッファを提供してい
る。これらは重要な点が異なっている。セレクションはアプリケーションが所有し、
Vim などのアプリケーションが終了するとなくなる、すなわちデータは失われる。一
方、カットバッファは、X サーバーが記憶し、上書きされるか、ログアウトするなどし
て X サーバーが終了するまで保存される。
セレクションの内容はそのアプリケーションによって保存され (コピー)、別のアプリ
ケーションがそれを求めたときに渡される (ペースト)。
カットバッファの内容はすぐに上書きされ、その元のアプリケーションを介さずに、
X サーバーから直接読み込まれる。
quoteplus quote+
文書化された 3 つの X セレクションがある。プライマリ (Vim のビジュアルモード
での選択のような、現在の選択範囲を表す)、セカンダリ (不明瞭である)、クリップ
ボード (カット、コピー、ペーストに使われる)。
この 3 つの内、Vim は "* レジスタを読み書きするときにはプライマリを使う (X11
セレクションが利用可能なとき、Vim は 'clipboard' にデフォルトとして
"autoselect" を設定する)。"+ レジスタを読み書きするときにはクリップボードを
使う。Vim はセカンダリを使わない。
これは GUI 版および端末版の両方に適用される。X11 以外のシステムの場合、プラス
とスターレジスタの両方がシステムクリップボードを使用する。
例: (オプションが標準設定のとき)
- Vim のビジュアルモードで URL を選択する。ブラウザーの URL 入力欄でマウスの
ミドルボタンをクリックする。選択したテキストが入力される (うまくいけば!)。
Note: Firefox では、about:config を開き、middlemouse.contentLoadURL を true
にすれば、ウィンドウ内をミドルクリックすることで、この URL を開くことができ
る。
- ブラウザーでマウスをドラッグしてテキストを選択する。Vim でマウスのミドルボ
タンをクリックすると選択したテキストが入力される。
- Vim でテキストを選択して "+y を実行する。ブラウザーのテキストエリアでマウス
をドラッグしてテキストを選択する。そのまま右クリックしてポップアップメ
ニューから "Paste" を選択する。選択したテキストは Vim で選択したテキストに
置き換わる。
Note "+ レジスタのテキストはビジュアル選択しただけで変更されない。"* レジス
タは変更される。つまり選択したテキストを上書きできる。
W23
"* または "+ レジスタにヤンクしている時に、Vim が X11 セレクション (またはク
リップボード) への接続を確立できない場合、レジスタ 0 が使用され、警告が出力さ
れる:
Warning: Clipboard register not available, using register 0
W24
Vim にはオリジナルの Vi との互換性だけを追求した小さなビルドから、多くの改善
(GUI 等) を含む拡張ビルドまでさまざまな種類がある。ただし、サーバーや組み込み
システムでは、この機能には X11 ライブラリが必要であるため、Vim は通常クリップ
ボードサポートなしでコンパイルされる。":version" の出力でフラグ +clipboard
または -clipboard を確認すること。前者はクリップボードサポートが存在することを
意味し、後者は Vim にクリップボードサポートが含まれていないことを意味する。
"* または "+ レジスタにアクセスしようとしていて、Vim がクリップボードをサポー
トしていない場合は、次の警告が表示される:
Warning: Clipboard register not available. See :h W24
クリップボードをサポートしていない vim を持っているが、クリップボードを使用し
たい場合は、vim-enhanced や vim-gtk3 等のより拡張された Vim パッケージをインス
トールしてみてほしい (GUI パッケージには通常、クリップボードをサポートしている
ターミナル Vim も付属している)。
x11-cut-buffer
既定では 8 つのカットバッファがある。CUT_BUFFER0 から CUT_BUFFER7 まで。Vim
は CUTBUFFER0 のみを使う。これは xterm が標準的に使っているものである。
Vim が利用不可能な状態 (終了やサスペンド) になり、他のアプリケーションのセレ
クションの要求に応答できなくなるときはいつでも、Vim は選択されている内容を
CUT_BUFFER0 に書き込む。"+ クリップボードセレクションが Vim のものであると
き、それが優先して書き込まれる。そうでなければ、 "* プライマリセレクションが
Vim のものであるときに、それが書き込まれる。
同様に、Vim が "* や "+ からペーストしようとするとき (明示的、もしくはマウス
のミドルボタンをクリックしたときの暗黙的な "* レジスタの使用)、要求した X セ
レクションが空もしくは利用不可能なら、Vim は CUT_BUFFER0 の現在の値を読み込
む。
Note これによってテキストが CUT_BUFFER0 にコピーされるときは、セレクションの
型情報 (文字、行、矩形) は常に失われる。後にそれをペーストするのが Vim であっ
ても。
通常、Xterm は、選択したものをプライマリと CUT_BUFFER0 の両方に書き込む。
ペースト時には、利用可能であればプライマリが使われ、それができなければ
CUT_BUFFER0 が使用される。このため、Vim と xterm の間でのカットやペーストに
は "* レジスタを使わなければならない。Xterm はクリップボードを使わないので
"+ レジスタは使えない。
最近のほとんどのアプリケーションでは範囲選択でプライマリ ("*) を、カット、コ
ピー、ペーストの操作でクリップボード ("+) を使用するようになっている。そのた
め "* レジスタか "+ レジスタを選択して使用することができる。
vim:tw=78:sw=4:ts=8:noet:ft=help:norl: