你可以通过以下两种方式之一来启动 GUI 版本的 Vim:
    gvim [options] [files...]
    vim -g [options] [files...]
所以,如果你将可执行文件取名为 "gvim",或者做一个叫 "gvim" 的链接,GUI 版本的
Vim 就会被自动运行。在 "gvim" 后也可以添加字符,如 "gvim-5"。
通过以下命令之一,你也可以从终端版本进入 GUI:
        :gui [++opt] [+cmd] [-f|-b] [files...]                   :gu   :gui 
        :gvim [++opt] [+cmd] [-f|-b] [files...]                  :gv   :gvim 
"-f" 参数在前台运行 Vim。
"-b" 参数在后台运行 Vim (默认)。
参考  ++opt  和  +cmd 。
                                                         gui-fork 
当 GUI 启动时,它调用 fork() 并退出当前进程。当 gvim 从外壳启动时,这将允许外
壳接受其后更多的命令。如果你不想这样 (例如,当一邮件程序要等待运行的 gvim 退出
时),可以用 "gvim -f","vim -gf" 或 ":gui -f" 来启动。不要用 "vim -fg",因为
"-fg" 表示前台颜色。
当用 "vim -f" 启动,然后使用 ":gui",Vim 将在前台运行。参数 "-f" 将被记住。要
强迫 Vim 在后台运行,使用 ":gui -b"。
"gvim --nofork" 和 "gvim -f" 的效果一样。
有还在运行的作业时 Vim 不会 fork,因为进程不再是子进程。
                                                                 E851   E852 
GUI 方式启动失败时,Vim 仍会继续尝试以终端方式运行。
如果你想一直在前台运行 GUI,给 'guioptions' 加入 'f' 标志位。 -f 。
如果使用 Motif 或者 Athena 版本的 GUI (不是 KDE、GTK+ 或 Win32 版本),有很多 X
资源可以用。你应该使用类名 Vim 来设置。它们被列如下:
    资源名称            意义            
    reverseVideo        布尔型: 是不是翻转视频?
    background          背景色。
    foreground          普通文字颜色。
    scrollBackground    滚动条槽的颜色。
    scrollForeground    滚动条滑块和箭头颜色。
    menuBackground      菜单背景色。
    menuForeground      菜单前景色。
    tooltipForeground   工具和气泡提示前景色。
    tooltipBackground   工具和气泡提示背景色。
    font                普通文字的字体名称。
    boldFont            加粗文字的字体名称。
    italicFont          斜体文字的字体名称。
    boldItalicFont      加粗、斜体文字的字体名称。
    menuFont            菜单字体名称。编译时没有  +xfontset  特性时使用
    menuFontSet         菜单字体集名称。编译时有  +xfontset  特性时使用
    tooltipFont         工具和气泡提示的字体名称。
                        当编译时带有  +xfontset  特性时,使用字体集名称。
    geometry            启动时的 gvim 窗口大小 (默认和启动它的终端窗口一样)。
    scrollbarWidth      滚动条宽度。
    borderWidth         文本区域周围边框的宽度。
    menuHeight          菜单栏高度 (仅对 Athena 有效)。
只有用户通过上述资源指定了粗体、斜体、斜粗体文本的特定字体时,Vim 才会使用它。
Vim 不会根据正常字体来推测应该使用的字体。
备注: 颜色也可用 ":highlight" 命令设置。可以使用这几个组: "Normal","Menu",
"Tooltip","Scrollbar"。例如: 
        :highlight Menu guibg=lightblue
        :highlight Tooltip guibg=yellow
        :highlight Scrollbar guibg=lightblue guifg=blue
        :highlight Normal guibg=grey90
                                                         font-sizes 
备注: 所有的字体 (除了菜单和工具按钮提示) 必须是同样大小!!!如果你不这样做,
文字将无法显示或混成一团。Vim 不检查字体大小。必须一样的是以屏幕像素计算的尺
寸。注意有些字体有同样的 "点" 数但是像素尺寸却不同!另外,与字体位置相关的属性
摆放 (ascent 和 descent) 也必须相同。你可以用 "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*menuBar*fontList:        -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
在 Athena 上: 
        Vim*menuBar*SmeBSB*font:     -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
        Vim*menuBar*MenuButton*font: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
备注: 一个更通用,更完善,可同时在 Motif 和 Athena 使用的设置字体的方法: 
        Vim.menuFont:        -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
或者,当编译进  +xfontset  特性时: 
        Vim.menuFontSet:     -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
        Vim*scrollBackground:           Black
        Vim*scrollForeground:           Blue
    参数                含义    
                                                         -gui 
   -display {display}   在 {display} 上运行 Vim          -display 
   -iconic              图标化运行 Vim                   -iconic 
   -background {color}  背景使用 {color}                 -background 
   -bg {color}          同上                             -bg 
   -foreground {color}  普通文字使用 {color}             -foreground 
   -fg {color}          同上                             -fg 
   -ul {color}          同上                             -ul 
   -font {font}         普通文字使用 {font}              -font 
   -fn {font}           同上                             -fn 
   -boldfont {font}     粗体字使用 {font}                -boldfont 
   -italicfont {font}   斜体字使用 {font}                -italicfont 
   -menufont {font}     菜单项使用 {font}                -menufont 
   -menufontset {fontset} 菜单项使用 {fontset}           -menufontset 
   -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 {height} 菜单栏高度使用 {height}          -menuheight 
   -mh {height}         同上                             -mh 
                        备注:Motif 忽略此值,那里自动计算高度来使菜单合身
   -reverse             使用反转视频                     -reverse 
   -rv                  同上                             -rv 
   +reverse             不使用反转视频                   -+reverse 
   +rv                  同上                             -+rv 
   -xrm {resource}      设定指定资源                     -xrm 
注意 有关反转视频的注意事项: Vim 检查最终效果是在暗的背景配亮文字。原因是有些
版本的 X11 交换颜色,有些不这么做。以下两个例子都是设定了黄色文字、蓝色背景:
    gvim -fg Yellow -bg Blue -reverse
    gvim -bg Yellow -fg Blue -reverse
                                                         -geometry-example 
一个尺寸的例子: 
        gvim -geometry 80x63+8+100
这个命令创建一个自左 8 像素,自顶 100 像素的一个 80 列宽,63 行高的窗口。
警 告: 从 GUI 中执行外部命令并不总是可行的。像 "ls"、"grep"、"make" 这样的普通
命令一般都是有效的。那些需要智能终端的命令如,"less"、"ispell" 就未必了。有些
甚至可能使 GUI 挂起,你从而必须从另外个终端里 kill 它。所以要小心。
有两种方式可以用外壳命令做 I/O 操作: 管道和伪终端。默认是伪终端,它可以很好地
工作在许多系统上。
不幸的是,伪终端的实现在每个 Unix 系统上是不同的。并且,一些系统上需要 root 权
限。为了避免这类问题,可以在编辑文件之前先试一下。做好 kill 那个命令或 Vim 的
准备。如 ":r !cat" 这样的命令会导致挂起的。
如果你的无法使用伪终端,可以复位 'guipty' 选项: 
        :set noguipty
注意到管道的存在,而作出不同的操作。如 ":!ls",将在一栏里列文
  件。
- ":sh" 命令将不会显示提示符,但可以部分工作。
- 当使用 ":make" 时,很可能无法用 CTRL-C 中断。
当外部命令运行时,事先键入的内容经常丢失。这在管道和伪终端中,都有发生。这是个
已知的问题,但看上去无法解决 (至少很困难)。
                                                         gui-pty-erase 
当你的删除键工作不正常时,你应该修改 "~/.cshrc" 文件,或者你所用的外壳的等同文
件。例如,当你使用退格键来删除字符时,反而产生了 "^H",你可以添加以下内容到
"~/.cshrc" 中: 
        stty erase ^H
^H 是 CTRL-H,要键入它,用 CTRL-V CTRL-H。
                                                         gui-x11-printing 
"File/Print" 仅仅发送当前的缓冲区内容到 "lpr"。没有选项或其他东西。如果你需要
其它效果,可以定义你自己的打印命令。如: 
  :10amenu File.Print :w !lpr -Php3
  :10vmenu File.Print :w !lpr -Php3
                                                         X11-icon 
默认的 Motif 或 Athena 版本的 Vim 使用黑白按钮。在 $VIMRUNTIME/vim32x32.xpm 包
含一个彩色的 Vim 图标。在 GTK+,这是内建的图标。不幸的是,你该怎样安装它取决于
你的窗口管理器。你可以从 'guioptions' 除去 'i' 标志,来除去黑白按钮: 
  :set guioptions-=i
  Style "vim"           Icon vim32x32.xpm
  ImagePath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps
备注: 旧版本的 fvwm 使用 "IconPath" 而不是 "ImagePath"。
对于 CDE "dtwm" (Motif 的一个变体),在 .Xdefaults 中加入这一行: 
   Dtwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
   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 内建的鼠标指针都可以通过指定一个在 X11/cursorfont.h 中定义的整
数来使用。
如果使用一个在其它系统有效,而在 X11 中无效的名字,使用默认的 "arrow"。
GUI 的 GTK 版本的使用略有不同。
GTK_不_使用传统的 X 资源设置。所以,你的 ~/.Xdefaults 或 app-defaults 文件不
会被使用。
不支持许多传统的 X 命令行参数。(例如,-bg,-fg 等)。支持的有:
    命令行参数              资源名称            含义 
    -fn  或  -font          .font               文字字体名称
    -geom  或  -geometry    .geometry           gvim 窗口尺寸
    -rv  或  -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。
工具提示条色彩 
                                                         gtk-tooltip-colors 
如,设定工具提示条为黑字亮黄色背景: 
        style "tooltips"
        {
                bg[NORMAL] = "#ffffcc"
                fg[NORMAL] = "#000000"
        }
        widget "gtk-tooltips*"          style "tooltips"
        .tooltip {
                background-color: #ffffcc;
                color: #000000;
        }
对 GTK+ 3 >= 3.20 而言: 
        tooltip {
            background-color: #ffffcc;
            text-shadow: none;
        }
        tooltip label {
            color: #2e3436;
        }
GTK+ CSS 的快速一览 
                                                         gtk-css 
这一小段的内容只适用于 GTK+ 3.2 或以后版本,因为它们有对 GTK+ CSS 的稳定支持:
        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
        }
备注: 也可用 'toolbariconsize' 来调整图标大小。
备注: 取决于图标方案和/或使用的字体,要达到满意的结果可能需要更多额外微调。
备注: 除了 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 元素视觉上和其它元素视觉上有区隔。相应地,有效地使用渐变色是
使主题方案的色彩和光线有统一的感觉一项有用的技术。
备注: 制定主题方案是困难的,因为要让所有应用都同样悦目;使单个应用更吸引往往使
其它的应用意料之外地不好看或破坏其可用性。要改进主题方案时请记住这一点。
示例 3。边框颜色 
要最大化时去掉边框: 
    @define-color bg_color #1B2B34;
    #vim-main-window {
        background-color: @bg_color;
    }
使用 Vim 作为 GTK+ 的插件 
                                                         gui-gtk-socketid 
当 GTK+ 版本的 Vim 启动时,它会创建自己的顶层窗口 (技术上,'GtkWindow')。GTK+
提供了用 GtkSocket 和 GtkPlug 组件 (widget) 嵌入的便利手段。如果一 GTK+ 应用程
序在它的一个窗口里创建了一个 GtkSocket 组件,另外一个完全不同的 GTK+ 程序就可
以使用该 socket 的 ID 来建立一个在顶层的 GtkPlug 组件,从而将自己完全嵌入前一
个应用程序中。
如果你通过命令行参数 '--socketid' 传给 Vim 一个十进制或十六进制的值,Vim 将使
用该值来创建一个 GtkPlug 组件,而不是普通的 GtkWindow。这将使 Vim 作为 GTK 的
插件来运行。
这其实是一个编程的接口,必须有专门的应用程序支持 (该程序必须正确地启动 Vim)。
有关更多的 GTK+ socket 信息,参考 http://www.gtk.org/api/
备注: 这个功能需要最新的 GTK 版本。GTK 1.2.10 仍然有小问题。socket 特性还没有
在 GTK+ 2 下测试过,欢迎毛遂自荐。
Gnome GUI 就像 GTK 一样工作。有关细节可以参考  GTK 。但是程序的外观有些不同,
而且 Gnome GUI 有一个很重要的特性是 GTK+ 没有的: 和会话管理器的交互。
 gui-gnome-session 
以下是外观上的不同之处:
- 使用 GNOME 对话框 (仅对 GNOME 1 而言)。GNOME 2 GUI 使用和 GTK+ 2 一样的对话
  框。
- 使用 GNOME 锚接机制 (dock),这使得工具栏、菜单栏可以移至不同的地方,而不是必
  须在顶部 (如,工具栏可以放在上下左右任何一处)。只有在 GNOME 2 中,保存它们的
  位置。
- 那意味着菜单栏和工具栏的句柄回来了!Yeah!并且重设网格尺寸又可以工作了。
在 configure (配置) 阶段如果发现 GNOME 或者使用 --enable-gnome-check 参数,
GNOME 将被编译进来。
注意: GTK+ 3 GUI 版本不要用 --enable-gnome-check。上述的功能已经整合进了 GTK+
3。
GNOME 会话支持 
                                         gui-gnome-session   gnome-session 
如果在退出登录时有任何改动过的缓冲区,Vim 会显示一个确认窗口。单击 [Cancel] 会
终止退出的过程。否则当前的会话会被用  :mksession  命令存入硬盘,并在下次登陆时
自动恢复。
GNOME 会话支持应该也对 KDE 会话管理器有效。如果你有在使用时遇到什么问题的话,
请提交漏洞报告。
备注: 会话的自动存储完全是透明的。这样避免了与你自己的会话文件,脚本和自动命令
的冲突。具体的细节如下:
- 会话文件被存储于一个独立的路径 (通常是 $HOME/.gnome2)。
- 'sessionoptions' 被忽略,Vim 会使用一些合适的,硬性规定的选项: 
        blank,curdir,folds,globals,help,options,tabpages,winsize
- 在存储时,内部变量  v:this_session  的值不会被改变。同时,当再次登录时,该值
  会被恢复。
Vim 不会存储 GUI 窗口的大小和位置,因为这是窗口管理器的职责。但是如果编译了
GTK+ 2 支持,Vim 会通过恢复窗口角色的方法 (用命令行参数  --role ),帮助窗口管
理器识别窗口。
如果使用 X11,Vim 的 configure 将首先试着在你的系统里找到需要的 GTK+ 的文件。
如果同时有 GTK+ 2 和 GTK+ 3 可用,优先选择 GTK+ 2,除非给 configure 显式传入
--enable-gui=gtk3。
如果找不到 GTK+ 文件,就试着找 Motif 文件。如果还是找不到,就找 Athena 文件。
如果全失败, GUI 会被禁用。
对于 GTK+,Vim 的配置过程使用 pkg-config(1) 来确保特定版本的 GTK+ 被正确安装并
可用。因此,最好在运行 configure 前确认系统的 pkg-config 可用,且有所需的 GTK+
版本的 .pc 文件。为此,运行以下命令来检查 pkg-config 是否可用于 GTK+ 2: 
    $ pkg-config --modversion gtk+-2.0
如果使用 X11,无论是 GUI 的还是 xterm 中运行的,Vim 都提供了多种使用 X11 的选
择机制和剪贴板的方法。它们是通过两个选择寄存器 "* 和 "+ 来实现的。
X11 提供了两种基本类型的全局存储方式,选择区和剪切缓冲区。在一个重要的方面它们
是有区别的: 选择区是程序拥有的,并在程序退出时 (如 Vim) 消失,因而数据也消失
了。而剪切缓冲区存储在 X 服务器的内部,会保持到被重写或 X 服务器退出 (例如登出
时) 为止。
发起程序拥有选择区的内容 (如,通过复制),仅当其它程序请求时才执行传送操作
(如,通过粘贴)。
剪切缓冲区立即被写入,之后便可直接通过 X 服务器进行存取,无需与发起程序交互。
                                                         quoteplus   quote+ 
文档上说,有三种 X 选择区: PRIMARY (用于代表当前的可视选择内容,就像 Vim 的可
视模式的操作对象),SECONDARY (定义不明) 和 CLIPBOARD (用于剪切、复制和粘贴操
作)。
在三种选择区里,Vim 使用 PRIMARY 用于读写 "* 寄存器 (因而,如果 X11 选择区可
用,Vim 为  'clipboard'  的缺省值加上 "autoselect")。CLIPBOARD 用于读写 "+ 寄
存器。Vim 不使用 SECONDARY 选择区。
例如: (假定使用默认选项)
- 在 Vim 的可视模式里选中一个 URL。转到你的浏览器的 URL 文本框里并单击鼠标中
  键。所选择的文字将被插入 (希望如此!)。备注: 在 Firefox 中,可以在
  about:config 里设置 middlemouse.contentLoadURL 属性为 true,这样在窗口的大多
  数位置单击鼠标中键都可以打开选中的 URL。
- 通过在你的浏览器中拖动鼠标选择一段文字。再到 Vim 中并按鼠标中键: 选中的文字
  被插入。
- 在 Vim 里选中一段文字并执行 "+y。转到你的浏览器,拖动鼠标选中另一段文字。现
  在使用鼠标右键并在弹出菜单里选择 "Paste"。所选中的文字被 Vim 中选中的文字所
  替换。
备注: 使用可视模式进行选择时,"+ 寄存器中的文字仍然存在。而选中的文字存于 "*
寄存器中。这样就可以选择被覆盖的文字了。
                                                         x11-cut-buffer 
默认有 8 个剪切缓冲区: CUT_BUFFER0 到 CUT_BUFFER7。Vim 仅使用 CUT_BUFFER0,就
是 xterm 默认使用的那一个。
只有当 Vim 不可用 (或退出或挂起),并且因此不能响应另一个程序的选择区请求时,
Vim 才将它自己的选择区内容写入 CUT_BUFFER0 中。如果是 Vim 拥有 "+ CLIPBOARD 选
择区,那么优先写入它的值;否则,如果 Vim 拥有 "* PRIMARY 选择区,写入该值。
类似的,当 Vim 试图从 "* 或 "+ 来粘贴时 (或显式或通过点击鼠标中键隐式地对 "*
寄存器操作),如果被请求的 X 选择区为空或不可用,Vim 退而求取 CUT_BUFFER0 的
值。
备注: 用这种方式复制文字到 CUT_BUFFER0 时,选择区的类型 (字符,行或列块) 总是
被丢失,即使之后要粘贴的还是 Vim。
默认情况下 Xterm 总是将选择区内容同时写入 PRIMARY 和 CUT_BUFFER0 中。当它粘贴
时,xterm 会优先选用 PRIMARY。如果失败才会选用 CUT_BUFFER0。因此,在 Vim 和
Xterm 之间剪切和粘贴时,你应该使用 "* 寄存器。Xterm 不用 CLIPBOARD,所以 "+ 在
xterm 中无效。
多数较新的应用程序会通过 PRIMARY ("*) 来提供它们当前的选择区内容,并使用
CLIPBOARD ("+) 用作剪切、拷贝、粘贴操作。你可以通过选择 "* 或 "+ 寄存器来访问
两者。
 vim:tw=78:sw=4:ts=8:noet:ft=help:norl: