Vim documentation: sign

*sign.txt* For Vim version 8.0. 最近更新: 2017年8月 VIM 参考手册 by Gordon Prieur and Bram Moolenaar 译者: Willis http://vimcdoc.sf.net 特性: 标号支持 *sign-support* 1. 简介 |sign-intro| 2. 命令 |sign-commands| {Vi 没有这些功能} {仅当编译时加入 |+signs| 特性才可用} ============================================================================== 1. 简介 *sign-intro* *signs* 当调试器或者其他集成开发环境的工具控制编辑器时,它需要通过给出某些特定的高亮以 给用户一些关于文件有用信息的反馈。一个例子是调试器在左边的列中给出图标来表示这 里有一个断点。另一个可能的例子是用一个箭头代表当前程序计数器 PC 的位置。标号特 性既包括在窗口的左边放置标号或者图标的支持,也包括该行使用的高亮的定义。显示图 像化的标号可能只适用于 gvim (虽然 Sun Microsystem 的 dtterm 也支持,它是我所知 的唯一支持的终端模拟器)。但文字化的标号和高亮应该可用于任何彩色终端模拟器。 标号和相应的高亮并不仅对调试器有用。Sun 的 Visual WorkShop 用标号和高亮来标识 错误和源程序浏览器的命中位置。它的调试器也支持 8 到 10 种不同的标号和高亮色。 |workshop| Netbeans |netbeans| 也是如此。 应用标号的过程分两步进行: 1. 定义标号。这里指定图像,文字和高亮设定。例如,你可以定义 "break" 标号为路边 的停止符号和文字 "!!"。 2. 放置标号。这里指定标号显示的文件和行号。每个定义好的标号可以在不同的文件和 行号上多次放置。 如果文件里定义了标号,Vim 自动增加两个字符的纵列来显示标号。撤销最后一个标号之 后,该列又会自动消失。'signcolumn' 选项可改变此行为。 该列的颜色由 SignColumn 高亮组定义 |hl-SignColumn|。一个设定该颜色的示例: > :highlight SignColumn guibg=darkgrey ============================================================================== 2. 命令 *sign-commands* *:sig* *:sign* 这里提供了一例,在当前文件的第 23 行显示 "piet" 标号,以文字 ">>" 标明。 > :sign define piet text=>> texthl=Search :exe ":sign place 2 line=23 name=piet file=" . expand("%:p") 删除标号的命令: > :sign unplace 2 < 注意 ":sign" 命令后面不能跟其它命令或者注释。如果需要,使用 |:execute| 命令。 定 义 标 号 *:sign-define* *E255* *E160* *E612* :sign define {name} {argument}... 定义新标号或为已存在的标号设置属性。{name} 可以是完全由数位组 成的数值,也可以是由非数位开头的名字。忽略开头的数位 (译者注: 零?),所以 "0012"、"012" 和 "12" 认为是相同的名字。 可以定义大约 120 个不同的标号。 允许的参数是: icon={bitmap} 位图文件名。必须是完整的路径名。位图应该能够在两个字符的宽度内 显示。但是不会实际检查这一点,如果位图太大,刷新时会有问题。只 有 GTK 2 可以按比例缩放位图,使之刚好能占据可用的空间。 工具包 支持 GTK 1 pixmap (.xpm) GTK 2 许多 Motif pixmap (.xpm) Win32 .bmp, .ico, .cur pixmap (.xpm) |+xpm_w32| linehl={group} 用以显示整个标号行的高亮组。多用于定义背景色。 text={text} *E239* 没有图标或者不用 GUI 时显示的文本。只允许可显示字符,而且必须 占据一到两个显示单元。 texthl={group} 显示文本项目的高亮组。 删 除 标 号 *:sign-undefine* *E155* :sign undefine {name} 删除已定义的标号。如果 {name} 标号已经放置,会有问题。 列 出 标 号 *:sign-list* *E156* :sign list 列出所有的标号和它们的属性。 :sign list {name} 列出单个标号和他的属性。 放 置 标 号 *:sign-place* *E158* :sign place {id} line={lnum} name={name} file={fname}{name} 指定的标号放在文件 {fname} 的第 {lnum} 行。 *:sign-fname* 文件 {fname} 必须已经在某个缓冲区调入,而且必须使用准确的文件 名。通配符,$ENV 和 ~ 不会被扩展,空白不会被转义。结尾的空白则 会忽略。 用 {id} 记住这个标号,将来可作进一步应用。{id} 必须是数值。用 户可以自行决定 {id} 在每个文件内是否唯一。(如果多次使用,撤销 放置就必须做多次,而且进行修改时未必尽如预期)。 :sign place {id} line={lnum} name={name} buffer={nr} 同上,但指定缓冲区 {nr}*E885* :sign place {id} name={name} file={fname} 把文件 {fname} 里用 {id} 记住的标号换成 {name} 指定的新标号。 参看关于 {fname} 的说明 |:sign-fname|。可用于不移动某个标号的 同时,更改它的显示方式 (例如,当调试器停在某个断点时)。 :sign place {id} name={name} buffer={nr} 同上,但指定缓冲区 {nr}。 撤 销 放 置 标 号 *:sign-unplace* *E159* :sign unplace {id} file={fname} 从文件 {fname} 里撤销已放置的标号 {id} 的放置。 参看关于 {fname} 的说明 |:sign-fname|。 :sign unplace * file={fname} 从文件 {fname} 里撤销所有已放置的标号。 :sign unplace {id} buffer={nr} 从缓冲区 {nr} 里撤销已放置的标号 {id} 的放置。 :sign unplace * buffer={nr} 从缓冲区 {nr} 里撤销所有已放置的标号。 :sign unplace {id} 撤销所有文件里出现的 {id} 标号的放置。 :sign unplace * 撤销所有标号的放置。 :sign unplace 撤销光标所在标号的放置。 列 出 放 置 标 号 *:sign-place-list* :sign place file={fname} 列出文件 {fname} 里所有放置的标号。 参看关于 {fname} 的说明 |:sign-fname|。 :sign place buffer={nr} 列出缓冲区 {nr} 里所有放置的标号。 :sign place 列出所有文件里放置的标号。 跳 到 标 号 *:sign-jump* *E157* :sign jump {id} file={fname} 打开文件 {fname} 或者跳转到包含 {fname} 的窗口并把光标设在标号 {id} 所在的位置。 参看关于 {fname} 的说明 |:sign-fname|。 如果此文件不在窗口显示但当前文件又不能被放弃 |abandon|,此动作 失败。 :sign jump {id} buffer={nr} *E934* 同上,但指定缓冲区 {nr}。如果缓冲区 {nr} 没有名字,报错。