-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathgui_x11.jax
762 lines (598 loc) · 39.3 KB
/
gui_x11.jax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
*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" コ
マンドで色を設定することもできることを覚えておくとよい。 >
:highlight Menu guibg=lightblue
: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
これらの内の始めの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への引数で設定することもできる:
引数 意味 ~
*-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
<
*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"
}
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;
}
<
3.20 以上の GTK+ 3 では: >
tooltip {
background-color: #ffffcc;
text-shadow: none;
}
tooltip label {
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;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px
}
notebook tab {
margin-top: -1px;
margin-right: 3px;
margin-bottom: -1px;
margin-left: 3px;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px
}
<
CSS なので、一括指定プロパティを使って書き直すこともできる: >
toolbar button {
margin: -2px 0px;
padding: 0px;
}
notebook tab {
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));
}
tooltip label {
color: #f3f3f3;
}
<
グラデーションは、高いコントラストに頼ることなく GUI 要素を他のものと視覚的に
区別するために使用することができる。したがって、これらの効果的な活用は、テーマ
に色や輝度の統一感を与える有効なテクニックである。
Note: テーマは、すべてのアプリケーションの見た目を等しく良くしなければならない
ため困難となることもある。1 つのアプリケーションの見た目をより良くすることは、
しばしば他のものの魅力を意図せず下げてしまったり、使用感を悪化させてしまうこと
さえある。テーマを改善しようとするときには常にこれらを気に留めておくこと。
例 3. ボーダーの色 ~
最大化したときのボーダーを取り除く: >
@define-color bg_color #1B2B34;
#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: