Merge branch 'vim'
[MacVim.git] / runtime / doc / gui_x11.txt
blob4b09919ccc5bb7ebd5c9937776ae2e7e5c592d77
1 *gui_x11.txt*   For Vim version 7.2.  Last change: 2009 Oct 28
4                   VIM REFERENCE MANUAL    by Bram Moolenaar
7 Vim's Graphical User Interface                          *gui-x11* *GUI-X11*
8                                                         *Athena* *Motif*
9 1. Starting the X11 GUI         |gui-x11-start|
10 2. GUI Resources                |gui-resources|
11 3. Shell Commands               |gui-pty|
12 4. Various                      |gui-x11-various|
13 5. GTK version                  |gui-gtk|
14 6. GNOME version                |gui-gnome|
15 7. KDE version                  |gui-kde|
16 8. Compiling                    |gui-x11-compiling|
17 9. X11 selection mechanism      |x11-selection|
19 Other relevant documentation:
20 |gui.txt|       For generic items of the GUI.
22 {Vi does not have any of these commands}
24 ==============================================================================
25 1. Starting the X11 GUI                                 *gui-x11-start* *E665*
27 Then you can run the GUI version of Vim in either of these ways:
28     gvim [options] [files...]
29     vim -g [options] [files...]
31 So if you call the executable "gvim", or make "gvim" a link to the executable,
32 then the GUI version will automatically be used.  Additional characters may be
33 added after "gvim", for example "gvim-5".
35 You may also start up the GUI from within the terminal version by using one of
36 these commands:
37         :gui [++opt] [+cmd] [-f|-b] [files...]                  *:gu* *:gui*
38         :gvim [++opt] [+cmd] [-f|-b] [files...]                 *:gv* *:gvim*
39 The "-f" option runs Vim in the foreground.
40 The "-b" option runs Vim in the background (this is the default).
41 Also see |++opt| and |+cmd|.
43 Note: For technical reasons, MacVim always runs Vim in the foreground when
44 using :gui.
46                                                         *gui-fork*
47 When the GUI is started, it does a fork() and exits the current process.
48 When gvim was started from a shell this makes the shell accept further
49 commands.  If you don't want this (e.g. when using gvim for a mail program
50 that waits for gvim to exit), start gvim with "gvim -f", "vim -gf" or use
51 ":gui -f".  Don't use "vim -fg", because "-fg" specifies the foreground
52 color.
54 When using "gvim -f" and then ":gui", Vim will run in the foreground.  The
55 "-f" argument will be remembered.  To force running Vim in the background use
56 ":gui -b".
58 MacVim supports forking only when you're launching Vim. "mvim" and
59 "mvim -f" work as expected: "mvim" launches the gui and forks, while "mvim -f"
60 launches the gui but doesn't fork (see |mvim|). However, doing |:gui| in an
61 already running vim will never fork in MacVim.
63 "gvim --nofork" does the same as "gvim -f".
65 If you want the GUI to run in the foreground always, include the 'f'
66 flag in 'guioptions'.  |-f|.  MacVim does not support this flag in
67 'guioptions'.
69 ==============================================================================
70 2. GUI Resources                        *gui-resources* *.Xdefaults*
72 If using the Motif or Athena version of the GUI (not for the KDE, GTK+ or Win32
73 version), a number of X resources are available.  You should use Vim's class
74 "Vim" when setting these.  They are as follows:
76     Resource name       Meaning         ~
78     reverseVideo        Boolean: should reverse video be used?
79     background          Color of background.
80     foreground          Color of normal text.
81     scrollBackground    Color of trough portion of scrollbars.
82     scrollForeground    Color of slider and arrow portions of scrollbars.
83     menuBackground      Color of menu backgrounds.
84     menuForeground      Color of menu foregrounds.
85     tooltipForeground   Color of tooltip and balloon foreground.
86     tooltipBackground   Color of tooltip and balloon background.
88     font                Name of font used for normal text.
89     boldFont            Name of font used for bold text.
90     italicFont          Name of font used for italic text.
91     boldItalicFont      Name of font used for bold, italic text.
92     menuFont            Name of font used for the menus, used when compiled
93                         without the |+xfontset| feature
94     menuFontSet         Name of fontset used for the menus, used when compiled
95                         with the |+xfontset| feature
96     tooltipFont         Name of the font used for the tooltip and balloons.
97                         When compiled with the |+xfontset| feature this is a
98                         fontset name.
100     geometry            Initial geometry to use for gvim's window (default
101                         is same size as terminal that started it).
102     scrollbarWidth      Thickness of scrollbars.
103     borderWidth         Thickness of border around text area.
104     menuHeight          Height of the menu bar (only for Athena).
106 A special font for italic, bold, and italic-bold text will only be used if
107 the user has specified one via a resource.  No attempt is made to guess what
108 fonts should be used for these based on the normal text font.
110 Note that the colors can also be set with the ":highlight" command, using the
111 "Normal", "Menu", "Tooltip", and "Scrollbar" groups.  Example: >
112         :highlight Menu guibg=lightblue
113         :highlight Tooltip guibg=yellow
114         :highlight Scrollbar guibg=lightblue guifg=blue
115         :highlight Normal guibg=grey90
117                                                         *font-sizes*
118 Note: All fonts (except for the menu and tooltip) must be of the same size!!!
119 If you don't do this, text will disappear or mess up the display.  Vim does
120 not check the font sizes.  It's the size in screen pixels that must be the
121 same.  Note that some fonts that have the same point size don't have the same
122 pixel size!  Additionally, the positioning of the fonts must be the same
123 (ascent and descent).  You can check this with "xlsfonts -l {fontname}".
125 If any of these things are also set with Vim commands, e.g. with
126 ":set guifont=Screen15", then this will override the X resources (currently
127 'guifont' is the only option that is supported).
129 Here is an example of what you might put in your ~/.Xdefaults file: >
131         Vim*useSchemes:                 all
132         Vim*sgiMode:                    true
133         Vim*useEnhancedFSB:             true
134         Vim.foreground:                 Black
135         Vim.background:                 Wheat
136         Vim*fontList:                   7x13
138 The first three of these are standard resources on Silicon Graphics machines
139 which make Motif applications look even better, highly recommended!
141 The "Vim*fontList" is to set the menu font for Motif.  Example: >
142         Vim*menuBar*fontList:        -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
143 With Athena: >
144         Vim*menuBar*SmeBSB*font:     -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
145         Vim*menuBar*MenuButton*font: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
147 NOTE: A more portable, and indeed more correct, way to specify the menu font
148 in either Motif or Athena is through the resource: >
149         Vim.menuFont:        -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
150 Or, when compiled with the |+xfontset| feature: >
151         Vim.menuFontSet:     -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
153 Don't use "Vim*geometry" in the defaults.  This will break the menus.  Use
154 "Vim.geometry" instead.
156 If you get an error message "Cannot allocate colormap entry for "gray60",
157 try adding this to your Vim resources (change the colors to your liking): >
159         Vim*scrollBackground:           Black
160         Vim*scrollForeground:           Blue
162 The resources can also be set with arguments to Vim:
164     argument            meaning ~
165                                                         *-gui*
166    -display {display}   Run vim on {display}            *-display*
167    -iconic              Start vim iconified             *-iconic*
168    -background {color}  Use {color} for the background  *-background*
169    -bg {color}          idem                            *-bg*
170    -foreground {color}  Use {color} for normal text     *-foreground*
171    -fg {color}          idem                            *-fg*
172    -ul {color}          idem                            *-ul*
173    -font {font}         Use {font} for normal text      *-font*
174    -fn {font}           idem                            *-fn*
175    -boldfont {font}     Use {font} for bold text        *-boldfont*
176    -italicfont {font}   Use {font} for italic text      *-italicfont*
177    -menufont {font}     Use {font} for menu items       *-menufont*
178    -menufontset {fontset} Use {fontset} for menu items  *-menufontset*
179    -mf {font}           idem                            *-mf*
180    -geometry {geom}     Use {geom} for initial geometry *-geometry*
181    -geom {geom}         idem, see |-geometry-example|   *-geom*
182    -borderwidth {width} Use a border width of {width}   *-borderwidth*
183    -bw {width}          idem                            *-bw*
184                                                         *-scrollbarwidth*
185    -scrollbarwidth {width}      Use a scrollbar width of {width}
186    -sw {width}          idem                            *-sw*
187    -menuheight {height} Use a menu bar height of {height} *-menuheight*
188    -mh {height}         idem                            *-mh*
189                         NOTE: On Motif the value is ignored, the menu height
190                         is computed to fit the menus.
191    -reverse             Use reverse video               *-reverse*
192    -rv                  idem                            *-rv*
193    +reverse             Don't use reverse video         *-+reverse*
194    +rv                  idem                            *-+rv*
195    -xrm {resource}      Set the specified resource      *-xrm*
197 Note about reverse video: Vim checks that the result is actually a light text
198 on a dark background.  The reason is that some X11 versions swap the colors,
199 and some don't.  These two examples will both give yellow text on a blue
200 background:
201     gvim -fg Yellow -bg Blue -reverse
202     gvim -bg Yellow -fg Blue -reverse
204                                                         *-geometry-example*
205 An example for the geometry argument: >
206         gvim -geometry 80x63+8+100
207 This creates a window with 80 columns and 63 lines at position 8 pixels from
208 the left and 100 pixels from the top of the screen.
210 ==============================================================================
211 3. Shell Commands                                       *gui-pty*
213 WARNING: Executing an external command from the GUI will not always work.
214 "normal" commands like "ls", "grep" and "make" mostly work fine.  Commands
215 that require an intelligent terminal like "less" and "ispell" won't work.
216 Some may even hang and need to be killed from another terminal.  So be
217 careful!
219 There are two ways to do the I/O with a shell command: Pipes and a pseudo-tty.
220 The default is to use a pseudo-tty.  This should work best on most systems.
222 Unfortunately, the implementation of the pseudo-tty is different on every Unix
223 system.  And some systems require root permission.  To avoid running into
224 problems with a pseudo-tty when you least expect it, test it when not editing
225 a file.  Be prepared to "kill" the started command or Vim.  Commands like
226 ":r !cat" may hang!
228 If using a pseudo-tty does not work for you, reset the 'guipty' option: >
230         :set noguipty
232 Using a pipe should work on any Unix system, but there are disadvantages:
233 - Some shell commands will notice that a pipe is being used and behave
234   differently.  E.g., ":!ls" will list the files in one column.
235 - The ":sh" command won't show a prompt, although it will sort of work.
236 - When using ":make" it's not possible to interrupt with a CTRL-C.
238 Typeahead while the external command is running is often lost.  This happens
239 both with a pipe and a pseudo-tty.  This is a known problem, but it seems it
240 can't be fixed (or at least, it's very difficult).
242                                                         *gui-pty-erase*
243 When your erase character is wrong for an external command, you should fix
244 this in your "~/.cshrc" file, or whatever file your shell uses for
245 initializations.  For example, when you want to use backspace to delete
246 characters, but hitting backspaces produces "^H" instead, try adding this to
247 your "~/.cshrc": >
248         stty erase ^H
249 The ^H is a real CTRL-H, type it as CTRL-V CTRL-H.
251 ==============================================================================
252 4. Various                                              *gui-x11-various*
254                                                         *gui-x11-printing*
255 The "File/Print" menu simply sends the current buffer to "lpr".  No options or
256 whatever.  If you want something else, you can define your own print command.
257 For example: >
259   :10amenu File.Print :w !lpr -Php3
260   :10vmenu File.Print :w !lpr -Php3
262                                                         *X11-icon*
263 Vim uses a black&white icon by default when compiled with Motif or Athena.  A
264 colored Vim icon is included as $VIMRUNTIME/vim32x32.xpm.  For GTK+, this is
265 the builtin icon used.  Unfortunately, how you should install it depends on
266 your window manager.  When you use this, remove the 'i' flag from
267 'guioptions', to remove the black&white icon: >
268   :set guioptions-=i
270 If you use one of the fvwm* family of window managers simply add this line to
271 your .fvwm2rc configuration file: >
273   Style "vim"           Icon vim32x32.xpm
275 Make sure the icon file's location is consistent with the window manager's
276 ImagePath statement.  Either modify the ImagePath from within your .fvwm2rc or
277 drop the icon into one the pre-defined directories: >
279   ImagePath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps
281 Note: older versions of fvwm use "IconPath" instead of "ImagePath".
283 For CDE "dtwm" (a derivative of Motif) add this line in the .Xdefaults: >
284    Dtwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
286 For "mwm" (Motif window manager) the line would be: >
287    Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
289 Mouse Pointers Available in X11                         *X11_mouse_shapes*
291 By using the |'mouseshape'| option, the mouse pointer can be automatically
292 changed whenever Vim enters one of its various modes (e.g., Insert or
293 Command).  Currently, the available pointers are:
295         arrow                   an arrow pointing northwest
296         beam                    a I-like vertical bar
297         size                    an arrow pointing up and down
298         busy                    a wristwatch
299         blank                   an invisible pointer
300         crosshair               a thin "+" sign
301         hand1                   a dark hand pointing northeast
302         hand2                   a light hand pointing northwest
303         pencil                  a pencil pointing southeast
304         question                question_arrow
305         right_arrow             an arrow pointing northeast
306         up_arrow                an arrow pointing upwards
308 Additionally, any of the mouse pointers that are built into X11 may be
309 used by specifying an integer from the X11/cursorfont.h include file.
311 If a name is used that exists on other systems, but not in X11, the default
312 "arrow" pointer is used.
314 ==============================================================================
315 5. GTK version                                          *gui-gtk* *GTK+* *GTK*
317 The GTK version of the GUI works a little bit different.
319 GTK does _not_ use the traditional X resource settings.  Thus items in your
320 ~/.Xdefaults or app-defaults files are not used.
321 Many of the traditional X command line arguments are not supported.  (e.g.,
322 stuff like -bg, -fg, etc).  The ones that are supported are:
324     command line argument   resource name       meaning ~
325     -fn  or  -font          .font               font name for the text
326     -geom  or  -geometry    .geometry           size of the gvim window
327     -rv  or  -reverse       *reverseVideo       white text on black background
328     -display                                    display to be used
329     -fg -foreground {color}                     foreground color
330     -bg -background {color}                     background color
332 To set the font, see |'guifont'|.  For GTK, there's also a menu option that
333 does this.
335 Additionally, there are these command line arguments, which are handled by GTK
336 internally.  Look in the GTK documentation for how they are used:
337         --sync
338         --gdk-debug
339         --gdk-no-debug
340         --no-xshm       (not in GTK+ 2)
341         --xim-preedit   (not in GTK+ 2)
342         --xim-status    (not in GTK+ 2)
343         --gtk-debug
344         --gtk-no-debug
345         --g-fatal-warnings
346         --gtk-module
347         --display       (GTK+ counterpart of -display; works the same way.)
348         --screen        (The screen number; for GTK+ 2.2 multihead support.)
350 These arguments are ignored when the |+netbeans_intg| feature is used:
351         -xrm
352         -mf
354 As for colors, Vim's color settings (for syntax highlighting) is still
355 done the traditional Vim way.  See |:highlight| for more help.
357 If you want to set the colors of remaining gui components (e.g., the
358 menubar, scrollbar, whatever), those are GTK specific settings and you
359 need to set those up in some sort of gtkrc file.  You'll have to refer
360 to the GTK documentation, however little there is, on how to do this.
361 See http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html
362 for more information.
364                                                 *gtk-tooltip-colors*
365 Example, which sets the tooltip colors to black on light-yellow: >
367         style "tooltips"
368         {
369                 bg[NORMAL] = "#ffffcc"
370                 fg[NORMAL] = "#000000"
371         }
373         widget "gtk-tooltips*"          style "tooltips"
375 Write this in the file ~/.gtkrc and it will be used by GTK+.  For GTK+ 2
376 you might have to use the file ~/.gtkrc-2.0 instead, depending on your
377 distribution.
379 Using Vim as a GTK+ plugin                              *gui-gtk-socketid*
381 When the GTK+ version of Vim starts up normally, it creates its own top level
382 window (technically, a 'GtkWindow').  GTK+ provides an embedding facility with
383 its GtkSocket and GtkPlug widgets.  If one GTK+ application creates a
384 GtkSocket widget in one of its windows, an entirely different GTK+ application
385 may embed itself into the first application by creating a top-level GtkPlug
386 widget using the socket's ID.
388 If you pass Vim the command-line option '--socketid' with a decimal or
389 hexadecimal value, Vim will create a GtkPlug widget using that value instead
390 of the normal GtkWindow.  This enables Vim to act as a GTK+ plugin.
392 This really is a programmer's interface, and is of no use without a supporting
393 application to spawn the Vim correctly.  For more details on GTK+ sockets, see
394 http://www.gtk.org/api/
396 Note that this feature requires the latest GTK version.  GTK 1.2.10 still has
397 a small problem.  The socket feature has not yet been tested with GTK+ 2 --
398 feel free to volunteer.
400 ==============================================================================
401 6. GNOME version                                *gui-gnome* *Gnome* *GNOME*
403 The GNOME GUI works just like the GTK+ version.  See |GTK+| above for how it
404 works.  It looks a bit different though, and implements one important feature
405 that's not available in the plain GTK+ GUI:  Interaction with the session
406 manager. |gui-gnome-session|
408 These are the different looks:
409 - Uses GNOME dialogs (GNOME 1 only).  The GNOME 2 GUI uses the same nice
410   dialogs as the GTK+ 2 version.
411 - Uses the GNOME dock, so that the toolbar and menubar can be moved to
412   different locations other than the top (e.g., the toolbar can be placed on
413   the left, right, top, or bottom).  The placement of the menubar and
414   toolbar is only saved in the GNOME 2 version.
415 - That means the menubar and toolbar handles are back!  Yeah!  And the
416   resizing grid still works too.
418 GNOME is compiled with if it was found by configure and the
419 --enable-gnome-check argument was used.
422 GNOME session support                   *gui-gnome-session* *gnome-session*
424 On logout, Vim shows the well-known exit confirmation dialog if any buffers
425 are modified.  Clicking [Cancel] will stop the logout process.  Otherwise the
426 current session is stored to disk by using the |:mksession| command, and
427 restored the next time you log in.
429 The GNOME session support should also work with the KDE session manager.
430 If you are experiencing any problems please report them as bugs.
432 Note: The automatic session save works entirely transparent, in order to
433 avoid conflicts with your own session files, scripts and autocommands.  That
434 means in detail:
435 - The session file is stored to a separate directory (usually $HOME/.gnome2).
436 - 'sessionoptions' is ignored, and a hardcoded set of appropriate flags is
437   used instead: >
438         blank,curdir,folds,globals,help,options,tabpages,winsize
439 - The internal variable |v:this_session| is not changed when storing the
440   session.  Also, it is restored to its old value when logging in again.
442 The position and size of the GUI window is not saved by Vim since doing so
443 is the window manager's job.  But if compiled with GTK+ 2 support, Vim helps
444 the WM to identify the window by restoring the window role (using the |--role|
445 command line argument).
447 ==============================================================================
448 7. KDE version                                  *gui-kde* *kde* *KDE* *KVim*
449                                                         *gui-x11-kde*
450 There is no KDE version of Vim.  There has been some work on a port using the
451 Qt toolkit, but it never worked properly and it has been abandoned.  Work
452 continues on Yzis: www.yzis.org.
454 ==============================================================================
455 8. Compiling                                            *gui-x11-compiling*
457 If using X11, Vim's Makefile will by default first try to find the necessary
458 GTK+ files on your system.  If the GTK+ files cannot be found, then the Motif
459 files will be searched for.  Finally, if this fails, the Athena files will be
460 searched for.  If all three fail, the GUI will be disabled.
462 For GTK+, Vim's configuration process requires that GTK+ be properly
463 installed.  That is, the shell script 'gtk-config' must be in your PATH, and
464 you can already successful compile, build, and execute a GTK+ program.  The
465 reason for this is because the compiler flags (CFLAGS) and link flags
466 (LDFLAGS) are obtained through the 'gtk-config' shell script.
468 If you want to build with GTK+ 2 support pass the --enable-gtk2-check argument
469 to ./configure.  Optionally, support for GNOME 2 will be compiled if the
470 --enable-gnome-check option is also given.  Note that the support for GTK+ 2
471 is still experimental.  However, many people have reported that it works just
472 fine for them.
474 Otherwise, if you are using Motif or Athena, when you have the Motif or Athena
475 files in a directory where configure doesn't look, edit the Makefile to enter
476 the names of the directories.  Search for "GUI_INC_LOC" for an example to set
477 the Motif directories, "CONF_OPT_X" for Athena.
479                                                         *gui-x11-gtk*
480 At the time of this writing, you may use either GTK+ version 1.0.6 or 1.2.  It
481 is suggested that you use v1.2 since not all of Vim's GUI features are present
482 if using v1.0.6.  For instance, there are no tearoff menus present in v1.0.6.
483 Using a version from GTK+'s CVS tree may or may not work, and is therefore not
484 supported and not recommended.
486 For the experimental GTK+ 2 GUI, using the latest release of the GTK+ 2.0 or
487 GTK+ 2.2 series is recommended.  CVS HEAD seems to work fine most of time as
488 well.
490 Lastly, although GTK+ has supposedly been ported to the Win32 platform, this
491 has not been tested with Vim and is also unsupported.  Also, it's unlikely to
492 even compile since GTK+ GUI uses parts of the generic X11 code.  This might
493 change in distant future; particularly because getting rid of the X11 centric
494 code parts is also required for GTK+ framebuffer support.
496                                                         *gui-x11-motif*
497 For Motif, you need at least Motif version 1.2 and/or X11R5.  Motif 2.0 and
498 X11R6 are OK.  Motif 1.1 and X11R4 might work, no guarantee (there may be a
499 few problems, but you might make it compile and run with a bit of work, please
500 send me the patches if you do).  The newest releases of LessTif have been
501 reported to work fine too.
503                                                         *gui-x11-athena*
504 The Athena version uses the Xaw widget set by default.  If you have the 3D
505 version, you might want to link with Xaw3d instead.  This will make the
506 menus look a bit better.  Edit the Makefile and look for "XAW_LIB".  The
507 scrollbars will remain the same, because Vim has its own, which are already
508 3D (in fact, they look more like Motif).
510                                                         *gui-x11-neXtaw*
511 The neXtaw version is mostly like Athena, but uses different widgets.
513                                                         *gui-x11-misc*
514 In general, do not try to mix files from different GTK+, Motif, Athena and X11
515 versions.  This will cause problems.  For example, using header files for
516 X11R5 with a library for X11R6 probably doesn't work (although the linking
517 won't give an error message, Vim will crash later).
519 ==============================================================================
520 9. X11 selection mechanism                              *x11-selection*
522 If using X11, in either the GUI or an xterm with an X11-aware Vim, then Vim
523 provides varied access to the X11 selection and clipboard.  These are accessed
524 by using the two selection registers "* and "+.
526 X11 provides two basic types of global store, selections and cut-buffers,
527 which differ in one important aspect: selections are "owned" by an
528 application, and disappear when that application (e.g., Vim) exits, thus
529 losing the data, whereas cut-buffers, are stored within the X-server itself
530 and remain until written over or the X-server exits (e.g., upon logging out).
532 The contents of selections are held by the originating application (e.g., upon
533 a copy), and only passed on to another application when that other application
534 asks for them (e.g., upon a paste).
536 The contents of cut-buffers are immediately written to, and are then
537 accessible directly from the X-server, without contacting the originating
538 application.
540                                                         *quoteplus* *quote+*
541 There are three documented X selections: PRIMARY (which is expected to
542 represent the current visual selection - as in Vim's Visual mode), SECONDARY
543 (which is ill-defined) and CLIPBOARD (which is expected to be used for
544 cut, copy and paste operations).
546 Of these three, Vim uses PRIMARY when reading and writing the "* register
547 (hence when the X11 selections are available, Vim sets a default value for
548 |'clipboard'| of "autoselect"), and CLIPBOARD when reading and writing the "+
549 register.  Vim does not access the SECONDARY selection.
551 Examples: (assuming the default option values)
552 - Select an URL in Visual mode in Vim.  Go to your browser and click the
553   middle mouse button in the URL text field.  The selected text will be
554   inserted (hopefully!).  Note: in Firefox you can set the
555   middlemouse.contentLoadURL preference to true in about:config, then the
556   selected URL will be used when pressing middle mouse button in most places
557   in the window.
558 - Select some text in your browser by dragging with the mouse.  Go to Vim and
559   press the middle mouse button: The selected text is inserted.
560 - Select some text in Vim and do "+y.  Go to your browser, select some text in
561   a textfield by dragging with the mouse.  Now use the right mouse button and
562   select "Paste" from the popup menu.  The selected text is overwritten by the
563   text from Vim.
564 Note that the text in the "+ register remains available when making a Visual
565 selection, which makes other text available in the "* register.  That allows
566 overwriting selected text.
567                                                         *x11-cut-buffer*
568 There are, by default, 8 cut-buffers: CUT_BUFFER0 to CUT_BUFFER7.  Vim only
569 uses CUT_BUFFER0, which is the one that xterm uses by default.
571 Whenever Vim is about to become unavailable (either via exiting or becoming
572 suspended), and thus unable to respond to another application's selection
573 request, it writes the contents of any owned selection to CUT_BUFFER0.  If the
574 "+ CLIPBOARD selection is owned by Vim, then this is written in preference,
575 otherwise if the "* PRIMARY selection is owned by Vim, then that is written.
577 Similarly, when Vim tries to paste from "* or "+ (either explicitly, or, in
578 the case of the "* register, when the middle mouse button is clicked), if the
579 requested X selection is empty or unavailable, Vim reverts to reading the
580 current value of the CUT_BUFFER0.
582 Note that when text is copied to CUT_BUFFER0 in this way, the type of
583 selection (character, line or block) is always lost, even if it is a Vim which
584 later pastes it.
586 Xterm, by default, always writes visible selections to both PRIMARY and
587 CUT_BUFFER0.  When it pastes, it uses PRIMARY if this is available, or else
588 falls back upon CUT_BUFFER0.  For this reason, when cutting and pasting
589 between Vim and an xterm, you should use the "* register.  Xterm doesn't use
590 CLIPBOARD, thus the "+ doesn't work with xterm.
592 Most newer applications will provide their current selection via PRIMARY ("*)
593 and use CLIPBOARD ("+) for cut/copy/paste operations.  You thus have access to
594 both by choosing to use either of the "* or "+ registers.
597  vim:tw=78:sw=4:ts=8:ft=help:norl: