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} 没有名字,报错。