*gui_x11.txt* For Vim version 6.1. 最后修改: 2001年9月7日 VIM 参考手册 作者:Bram Moolenaar 翻译:Zimin<[email protected]>
VCD主页:http://vimcdoc.sf.net Vim 的图形用户界面 *gui-x11* *GUI-X11* *Athena* *Motif* 1. 启动 X11 GUI |gui-x11-start| 2. GUI 资源 |gui-resources| 3. Shell 命令行 |gui-pty| 4. 其他 |gui-x11-various| 5. GTK 版本 |gui-gtk| 6. GNOME 版本 |gui-gnome| 7. 编译 |gui-x11-compiling| 8. X11 选择机制 |x11-selection| 其他相关文章: |gui.txt| 所有的 GUI 版本的通用功能{Vi 没有 Windows 图形界面}
1. 启动 X11 GUI *gui-x11-start* 你可以通过以下任意一种方式来启动 GUI 界面: gvim [options] [files...] vim -g [options] [files...] 所以,如果你运行 "gvim",或者做一个 "gvim" 连接到可执行文件上,你就可以自动运 行 GUI 界面了。在 "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 从 shell 启动时,这将使 shell 接受其后更多的命令。如果你不想这样 (例如,当一邮件程序要等待运行的 gvim 退出时),可以用 "gvim -f" ,"vim -gf" 或 ":gui -f" 来启动。不要用"vim -fg",因为 "-fg" 表示前台颜色。 当用 "gvim -f" 启动,然后调用 ":gui" ,Vim 将在前台运行。参数 "-f" 将被记住。 要强迫 Vim 在后台运行,调用 ":gui -b"。 如果你想一直在前台运行 GUI,在 'guioptions' 加入 'f' 标志。 |-f|.
2. GUI 资源 *gui-resources* *.Xdefaults* 如果使用 Motif 或者 Athena 版本的 GUI (不是 GTK+ 或 Win32 版本),有很多 X 资源可用。你应该使用 Vim 的分类来设置。它们被列如下:资源名称 意义
reverseVideo 布尔型: 是不是倒置视频? background 背景色 foreground 普通文字颜色 scrollBackground 滚动条颜色 scrollForeground 滚动条滑块和箭头颜色 menuBackground 菜单背景色 menuForeground 菜单前景色 tooltipForeground 提示语前景色 tooltipBackground 提示语背景色 font 普通文字的字体名称 boldFont 加粗文字的字体名称 italicFont 斜体文字的字体名称 boldItalicFont 加粗、斜体文字的字体名称 menuFont 菜单字体名称,编译时使用 除去 |+xfontset| 功能 menuFontSet 菜单字体集名称,编译时使用 伴随 |+xfontset| 功能 tooltipFont 提示语的字体名称 当用 |+xfontset| 功能一起编译时, 这是一个字体名称 geometry 启动时的窗口形状(默认和终端窗口一样) scrollbarWidth 滚动条宽度 borderWidth 边界宽度 menuHeight 菜单栏高度(仅对 Athena ) 如果用户通过上述资源指定了一种字体,它将被使用。而不考虑它之前应该被使用的基 本字体。 注意:颜色也被 ":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 不检查字体大小。在屏幕象素中的尺寸必须一样。 注意有些字体有同样的点阵尺寸但是象素尺寸却不同!另外,摆放方式也要一致(或升 或降)。你可以用 "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
前三个是 Silicon Graphics 机器的标准资源,这将使 Motif 应用效果更好,推荐! "Vim*fontList" Motif菜单字体设置。例如:
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.geometry" 替代 "Vim*geometry"。不然,将破坏菜单。 如果出现 "Cannot allocate colormap entry for "gray60" 的错误信息,试试在你的 Vim 资源中加入这些(改变成你喜欢的颜色):
Vim*scrollBackground: Black
Vim*scrollForeground: Blue
资源也可用 Vim 参数来设定:
argument meaning
*-gui* -display{display}
运行 Vim 在{display}
*-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}
同上 *-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
3. Shell 命令行 *gui-pty* 警告:从 GUI 中执行外部命令并不总是有效。"normal" 命令如,"ls"、"grep"、 "make"一般是有效的。那些需要智能终端的命令如,"less"、"ispell"就未必了。有些 甚至可能使 GUI 挂起,以至于要从另外个终端里杀死它。所以要小心。 有两种方式同 shell 做 I/O:管道和伪终端。默认是伪终端,它可以很好的工作在许多 系统上。 不幸的是,伪终端的实现在每个 Unix系统上是不同的。并且,一些系统上需要管理员权 限。为了避免这类问题,先尝试一下。准备好“杀死”启动的命令或 Vim。如":r !cat" 如无法使用伪终端,重置 'guipty' 选项:
:set noguipty
管道可用在任一 Unix 系统上,但也有缺点: - 一些 shell 命令会注意到管道正在被使用,而表现不一。如 ":!ls",将在一栏里列 文件。 - ":sh" 命令将不显示提示符,尽管它应该显示。 - 当使用 ":make"时,很可能无法用
CTRL-C
中断。 当外部命令运行时,事先键入的内容经常丢失。这在管道和伪终端中,都有发生。这是 个已知的问题,但看上去无法解决(至少,很困难)。 *gui-pty-erase* 当你删除键工作不正常,你应该修改 "~/.cshrc"文件,或无论哪个文件只要是用于你的 shell 初始化的。如,当你使用退格键来删除字符时,反而产生了 "^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 或 Athena 环境下,Vim使用黑白按钮。一个彩色的 Vim 图标 包含在 $VIMRUNTIME/vim32x32.xpm 。在 GTK+ ,这是内建的图标。不幸的是,你该怎 样安装它依赖于你的窗口管理器。你可以从 'guioptions' 除去 'i'标志,来除去黑白 按钮::set guioptions-=i
如果你使用 fvwm* 系列窗口管理器,只要在 .fvwm2rc 配置文件中加入:
Style "vim" Icon vim32x32.xpm
确定图标文件的位置在窗口管理器图标路径的声明中。或在 .fvwm2rc 修改图标路径,或 将图标放入以下已定义的任一目录中: IconPath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps
在 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 进入各种模式时鼠标指针都会自动改变(例如, 在插入,或命令模式中)。当前,可用的指针是: 箭头 一个箭头指向西北 片状 象I的竖直条 型号 一个箭头指着上下 忙时 一个时间漏斗 空白 一个不可见的指针 十字 一个瘦 "+" 符号 手1 一个暗手指向西北 手2 一个亮手指向西北 笔形 一支笔指向东南 疑问 带问号的箭头 右箭头 一个箭头指向东南 上箭头 一个箭头指向上面 另外,任何一个 X11 内建的鼠标指针都可以使用,通过在 X11/cursorfont.h 指定一个 整数来实现。 如果那个名字被用在其他系统中,而不是在 X11 中,那就调用默认的 "arrow"。
5. GTK 版本 *gui-gtk* *GTK+* *GTK* GUI 的 GTK 版本的使用略有不同。 GTK 不使用传统的 X 资源设置。所以,你的~/.Xdefaults 或 应用程序设置文件就没被 调用。 许多传统的 X 命令行参数就不被支持。(例如,-bg,-fg,等等)。支持的有:命令行参数 资源名称 意义
-fn 或 -font .font 文字字体名称 -geom 或 -geometry .geometry gvim 窗口尺寸 -rv 或 -reverse *reverseVideo 白字黑底 -display 使用显示 要设置字体看|'guifont'|。对 GTK,也有相应的菜单选项设置。 另外,在 GTK 内部也有命令行参数。要知道如何使用以下的参数,请查看 GTK 文档: --sync --gdk-debug --gdk-no-debug --no-xshm --xim-preedit --xim-status --gtk-debug --gtk-no-debug --g-fatal-warnings --gtk-module --display (GTK+ 对应的是 -display;作用相同) vim 的颜色设置(语法加亮)仍然一致。参考 |:highlight| 如果你想设置其他的 gui 组件(如,菜单栏,滚动条,其他等等),那些是 GTK 的特 别设置,你需要改动 gtkrc 文件。至于如何改动,虽然文档很少,但可参考 GTK 文档 。 *gtk-tooltip-colors* 如, 设定工具提示条为黑字亮黄色背景:
style "tooltips"
{
bg[NORMAL] = "#ffffcc"
fg[NORMAL] = "#000000"
}
widget "gtk-tooltips*" style "tooltips"
将这些写如文件 ~/.gtkrc 并是自生效于 GTK。不要忘了去掉第一栏中的 ">" 字符。 使用 Vim 作为 GTK+ 的插件 *gui-gtk-socketid* 当 GTK+ 版本的 Vim 启动时,它创建了它自己的顶层窗口(就是'GtkWindow')。GTK+ 提供了用 GtkSocket 和 GtkPlug 容器嵌入的便利手段。如果一 GTK+ 应用程序在它的 一个窗口里创建了 GtkSocket 容器,通过使用 GtkSocket ID 来创建一个 GtkPlug 容 器,一个完全不同的 GTK+ 应用程序就可以把自己嵌入上一个应用程序中。 如果你通过命令行参数 '--socketid' 传给 Vim 一个十进制或十六进制的值,Vim将使 用那个值,而不是普通的 GtkWindow 的值来创建一个 GtkPlug 容器。这使 Vim 作为 GTK 的插件来运行。 这是一个真正的编程接口,专为了支持在应用程序中正确启动 Vim 而设。有关更多的 GTK+ socket 信息,参考http://www.gtk.org/api/ 注意:这个功能需要最新的 GTK 版本。GTK 1.2.10 仍然有小问题。
6. GNOME 版本 *gui-gnome* *Gnome* *GNOME* Gnome GUI 就想 GTK 一样工作,只是看上去有一点不同。有关细节参考 |GTK| 以下是不同之处: - 使用 Gnome 对话框。 - 使用 Gnome 浮动框,这使得工具栏、菜单栏可以移至不同的地方(如,工具栏可以放 在上下左右任何一处)。但目前他们的位置不能被保存,我认为这是 GNOME 回话管理 器(还)不支持的原因。 - 那意味着菜单栏和工具栏的句柄回来了!Yeah!并且重设网格尺寸仍然可以工作。 在配置时发现 GNOME时,它将被自动编译进来。
7. 编译 *gui-x11-compiling* 如果使用 X11,Vim 的Makefile将首先试着在你的系统里找到需要的 GTK+ 的文件。如 果找不到,就试着找 Motif 文件。最后,还是找不到,就找 Athena 文件。如果全失败 ,GUI 将无法使用。 对于 GTK+,Vim的配置过程需要 GTK+ 被正确安装。就是说,shell 脚本 'gtk-config' 必须在你的 PATH 中, 并且你已可以成功的编译,安装,执行 GTK+ 程序了。这样做的 原因是,编译、连接选项是通过 'gtk-config' shell 脚本中包含的。 如果你使用 Motif 或 Athena,且配置程序无法找到它们所在的目录时,更改 Makefile ,使之含有它们所在的目录名称。如,查找 "GUI_INC_LOC" 来设置 Motif 的目录,或 "GUI_OPT_X"来设置 Athena 的目录。 *gui-x11-gtk* 在写这篇文档时,你或许在 GTK+ 1.0.6 或 1.2 版本。建议使用v1.2,因为在另外的版 本中,不是所有的 GUI 功能都支持的。如,它没有 tearoff 菜单。使用 CVS 树中的 GTK+ 可能不能工作,这是不推荐的。 最后,尽管 GTK+ 已被移植到 Win32 平台上,这还没有连同 Vim 测试过,所以也不支 持。 *gui-x11-motif* 对于 Motif,你需要至少 1.2 或 X11R5 版本。Motif 2.0 和 X11R6 也可以。Motif 1.1 和 X11R4 可能可以工作,但没有保证(可能有些问题,但稍作改动你可以使之编译 、运行成功。如果你这样做了,请将补丁发给我 )。最新版的 LessTif 支持的。 *gui-x11-athena* Athena 版本默认使用 Xaw 容器。如果你有 3D 版本的,有可能要用 Xaw3d 来连接。这 使菜单看上去好看些。更改 Makefile 文件,查找 "XAW_LIB"。滚动条仍然一样,因为 Vim 使用它自己的。它已经有 3D 效果了。(事实上,它更象 Motif 里的滚动条)。 *gui-x11-misc* 总的来说,不要混合 不同版本的 GTK+,Motif,Athena,和X11的文件。这将引起问题 。如,使用 X11R5 的头文件给 X11R6 的库,大半不能工作(尽管连接不报错,Vim之后 的运行将崩溃)。
8. X11 选择机制 *x11-selection* 如果使用 X11,无论是 GUI 的还是 xterm 中用类 X11 的 Vim,Vim都提供了多种方式 访问 X11 的选中板和粘贴板。它们是通过两个选择寄存器 "* 和 "+来实现的。 X11 提供了两种基本类型的全局存储方式,选中和剪切缓冲。在一个重要方面他们是有 区别的:选中是程序拥有的,并在程序退出时(如,Vim)消失,这样数据就消失了。而 剪切缓冲无论在哪里,是存储在 X 自己的服务器里的,并且保持到被重写或 X 服务器 退出(如,登出)。 原始程序保存这选中的内容(如,拷贝),仅当其他程序要求时再传递过去(如,粘贴 )。 剪切缓冲立即被写入,是直接通过 X 服务器的,没有同原始程序交流。 *quoteplus* *quote+* 有3种可记录的 X 选中:PRIMARY(要用来重现所选择的内容的,就象 Vim 的 Visual 模式),SECONDARY(缺少定义)和 CLIPBOARD(要用于剪切、复制和粘贴的操作)。 对于以上3种,Vim 使用 PRIMARY 用于读写 "* 寄存器(这就是之所以当 X11 选中后, Vim 为 |'clipboard'| 的 "autoselect" 设了个缺省值。)。CLIPBOARD 用于读写 "+ 寄存器。Vim 不使用 SECONDARY 方式。 如:(设定了默认值) - 选中了一个 URL 在 Vim 的 Visual 模式里。转到 Netscape 的文本框里并单击鼠标中键。所选择的文字将被粘贴上(很有希望!)。 - 通过在 Netscape 中拖动鼠标选中文字。再到 Vim 中并按鼠标中键:选中的文字被插 入。 - 在 Vim 里选中文字并做 "+y。到 Netscape,拖动鼠标选中文字。现在使用鼠标右键 并在弹出菜单里选择 "Paste" 。所选择的文字被 Vim 中的文字替换。 注意:在使用 Visual 选择时, "+ 寄存器中的文字仍然存在。Visual 选择的文字存在 于 "* 寄存器中。这样就可以覆盖所选的文字了。 *x11-cut-buffer* 默认的有8个剪切缓冲:CUT_BUFFER0 到 CUT_BUFFER7。Vim 仅使用 CUT_BUFFER0,就是 xterm 默认使用的那一个。 无论何时 Vim 要不活动(或是通过退出或挂起),并且因此不能响应另一个程序的选中 请求时,Vim 将选中内容写入它自己的 CUT_BUFFER0 中。如果是 "+ CLIPBOARD 选中, 就按预先设定写入,否则如果是 "* PRIMARY 选中,就写入其中。 类似的,当 Vim 试图从 "* 或 "+ 来粘贴时(或明确的,或通过点击鼠标中键对 "* 寄 存器操作),如果被请求的 X 选中是空的或不可用,Vim 反过来读取 CUT_BUFFER0 的 值。 注意:当用这种方式拷贝文字到 CUT_BUFFER0 时,选中的类型(字符,行或块)总是被 丢失,甚至是 Vim 以后要粘贴它。 默认的 Xterm 总是将 可视的选中内容同时写入 PRIMARY 和 CUT_BUFFER0 中。当粘贴 时,如果 PRIMARY 可用就使用它,如果失败就回过来要求 CUT_BUFFER0 的。因此,在 Vim 和 Xterm 中剪切、粘贴时,你应该使用 "* 寄存器。Xterm 不用 CLIPBOARD,所 以 "+ 在 xterm 中无用。 多数较新的应用程序提供它们当前的选中内容通过 PRIMARY ("*) 并使用 CLIPBOARD ("+) 为了剪切、拷贝、粘贴操作。你可以通过选择 "* 或 "+ 缓冲器来访问。 vim:tw=78:sw=4:ts=8:ft=help:norl:
Generated by vim2html on Tue Jul 27 00:35:24 CST 2004