提供高亮,快速告诉用户有用信息
.如,调试器在左侧列
中有个表示断点
的图标.
另一例可能是表示(PC)
程序计数器的箭头.标号功能允许在窗口左侧
放置标号或图标
,并定义应用行的高亮
.
此外,调试器还支持8到10
种不同的标号和高亮
颜色,见|NetBeans|
.
使用标号
有两个步骤:
1
.定义
标号.来指定图像,文本和高亮
.如,可用停车
图像和"!!"
文本定义"断点
"标号.
2
.放置
标号.指定了显示标号
的文件和行号
.可在不同
的行和文件
中多次放置定义的标号
.
为文件定义标号
时,Vim
会自动添加一列两个符
来显示它们.当移除掉最后标号
后,该列再次消失
.可用"signcolumn"
选项更改
此行为.
可使用SignColumn
的|hl-SignColumn|
设置列颜色高亮组
.设置颜色的示例:
:highlight SignColumn guibg=darkgrey
每个放置
的标号都由用来跳转到标号
或删除标号
的标号标识
数字来标识
.在使用|:sign-place|
命令或|sign_place()|
函数时赋值
的标识.
每个标号标识
都应该是个唯一数字
.如果多个放置
的标号
,使用相同
标识,则不可预测
跳转到或删除的标号
.为避免标识
重叠,可用标号组
.
可用零号
标识调用|sign_place()|
函数来分配下个可用标识
.
每个放置的标号
都可赋值给全局组
或命名组
.
放置
标号时,如果未提供组名
,或使用空串
,则该标号
放置在全局组
中.否则,在命名组
中放置
该标号.在组中标号标识
是唯一的.
标号组
允许Vim
插件使用唯一标号
,而不会干扰其他使用标号
的插件.
要在弹窗
中放置标号,组名
必须以"PopUp"
开头.
在弹窗
中不会显示
其他标号.由设置了"cursorline"
的弹窗使用"PopUpMenu"
组名.
每个放置的标号
都赋值了一个优先级值
.在同一行上放置多个标号
时,独立标号组
使用优先级
最高属性的标号
.标号的默认
优先级为10
.在放置
标号时赋值优先级
.
如果有两个
相同优先级
的标号,且一个在标号栏
中有一个图标或文本
,而另一个标号
有行高亮
,则两者
都会显示.
删除
放置标号的行时,把标号
移动到下一行(如果没有下一行
,则移动
到缓冲的最后一行
).撤消
删除操作后,不会移回该标号
.
同时有带行高亮
和"光标行
"高亮的标号
时,如果优先级为100
或更高
,则标号高亮
优先,否则为"光标行
"高亮.
以下示例,在当前
文件的第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()|
,等效的Vim
脚本函数.
:sign define {name} {argument}...
为现有标号
定义新标号或设置属性
,示例:
:sign define MySign text=>> texthl=Search linehl=DiffText
:sign undefine MySign
见|sign_getdefined()|
,等效的Vim
脚本函数.
:sign list
列举所有已定义的标号及其属性
.
:sign list {name}
列举已定义的标号及其属性
.
见|sign_place()|
,等效的Vim
脚本函数.
:sign place {id} line={lnum} name={name} file={fname}
在{fname}
文件的{lnum}
行,放置定义叫{name}
的标号.
该标号
叫{id}
,可用来进一步
操作.{id}
必须是个数字
.
可在"file="
之前指定以下可选
的标号属性
:
组与优先级
.
默认,在全局组
中放置标号.
默认,优先级为10
.示例:
:sign place 5 line=3 name=sign1 file=a.py
:sign place 6 group=g2 line=2 name=sign2 file=x.py
:sign place 9 group=g2 priority=50 line=5
\ name=sign1 file=a.py
加上缓冲号:
:sign place {id} line={lnum} name={name} [buffer={nr}]
相同,但使用缓冲{nr}
.如果未给定buffer
参数,
在当前缓冲
中放置标号.
示例:
:sign place 10 line=99 name=sign3
:sign place 10 line=99 name=sign3 buffer=3
:sign place {id} name={name} file={fname}
更改{fname}
文件中,放置的{id}
标号以使用定义的{name}
标号.见上面{fname}|:sign-fname|
.
可在不移动
时更改
显示的标号
它(如,当调试器在断点
处停止
时).
示例:
:sign place 23 name=sign1 file=/path/to/edit.py
:sign place {id} name={name} [buffer={nr}]
相同,但使用{nr}
缓冲.
示例:
:sign place 23 name=sign1
:sign place 23 name=sign1 buffer=7
见|sign_unplace()|
来等效的Vim
脚本函数.
:sign unplace {id} file={fname}
:sign unplace {id} group={group} file={fname}
:sign unplace {id} group=* file={fname}
:sign unplace * file={fname}
:sign unplace * group={group} file={fname}
:sign unplace * group=* file={fname}
:sign unplace {id} buffer={nr}
:sign unplace {id} group={group} buffer={nr}
:sign unplace {id} group=* buffer={nr}
:sign unplace * buffer={nr}
:sign unplace * group={group} buffer={nr}
:sign unplace * group=* buffer={nr}
:sign unplace {id}
:sign unplace {id} group={group}
:sign unplace {id} group=*
:sign unplace *
:sign unplace * group={group}
:sign unplace * group=*
:sign unplace group={group}
:sign unplace
:sign unplace group=*
删除标号们.
:sign place group={group} file={fname}
:sign place file={fname}
:sign place group=* file={fname}
:sign place buffer={nr}
:sign place group={group} buffer={nr}
:sign place group=* buffer={nr}
:sign place
:sign place group={group}
:sign place group=*
见|sign_jump()|
来等效的Vim
脚本函数.
:sign jump {id} file={fname}
:sign jump {id} group={group} file={fname}
:sign jump {id} [buffer={nr}]
:sign jump {id} group={group} [buffer={nr}]
sign_define({name} [, {dict}])
sign_define({list})
定义叫{name}
的新标号或修改
现有标号.类似|:sign-define|
命令.
call sign_define("mySign", {
\ "text" : "=>",
\ "texthl" : "Error",
\ "linehl" : "Search"})
call sign_define([
\ {'name' : 'sign1',
\ 'text' : '=>'},
\ {'name' : 'sign2',
\ 'text' : '!!'}
\ ])
sign_getdefined([{name}])
类似|:sign-list|
命令,取已定义标号
及其属性的列表
.
示例:取所有已定义标号的列表:
取名为mySign
的标号的属性:
echo sign_getdefined()
echo sign_getdefined("mySign")
sign_getplaced([{expr} [, {dict}]])
类似|:sign-place-list|
命令,返回放置在缓冲或所有缓冲
中的标号列表
.
如果指定了可选的{expr}
缓冲名,则仅返回放置在该缓冲
中的标号列表
.
示例:>"
取放置在eval.c
中的标号列表"全局组echosign_getplaced("eval.c")
"在eval.c中的所有"
echo sign_getplaced("eval.c")
"在eval.c中的'g1'组"
echo sign_getplaced("eval.c", {'group' : 'g1'})
"文件中的第10行"
echo sign_getplaced("eval.c", {'lnum' : 10})
"a.py中的id为10的那个"
echo sign_getplaced("a.py", {'id' : 10})
echo sign_getplaced("a.py", {'group' : 'g1',
\ 'id' : 20})
echo sign_getplaced()
sign_jump({id}, {group}, {expr})
打开{expr}
缓冲,或跳转到包含{expr}
,并在{group}
组中的{id}
标号处定位
光标.
类似|:sign-jump|
命令.
示例:
跳转到当前缓冲
中的10
标号.
call sign_jump(10, '', '')
sign_place({id}, {group}, {name}, {expr} [, {dict}])
buffer{expr}
并分配{id}
和{group}
给sign.
这是
类似|:sign-place|
命令.
示例:
call sign_place(5, '', 'sign1', 'json.c',
\ {'lnum' : 20})
call sign_place(5, '', 'sign2', 'json.c')
let id = sign_place(0, '', 'sign3', 'json.c',
\ {'lnum' : 30})
call sign_place(10, 'g3', 'sign4', 'json.c',
\ {'lnum' : 40, 'priority' : 90})
sign_placelist({list})
放置
多个标号.类似|sign_place()|
函数.
let [n1, n2] = sign_placelist([
\ {'id' : 5,
\ 'name' : 's1',
\ 'buffer' : 'a.c',
\ 'lnum' : 20},
\ {'id' : 10,
\ 'name' : 's1',
\ 'buffer' : 'a.c',
\ 'lnum' : 30}
\ ])
let [n1, n2] = sign_placelist([
\ {'name' : 's1',
\ 'buffer' : 'a.c',
\ 'lnum' : 40},
\ {'name' : 's1',
\ 'buffer' : 'a.c',
\ 'lnum' : 50}
\ ])
sign_undefine([{name}])
sign_undefine({list})
示例:
call sign_undefine("mySign")
"删除名为`mySign`的标号"
call sign_undefine(["sign1", "sign2"])
"删除`"sign1"`和`"sign2"`"标号
call sign_undefine()
"删除所有标号"
sign_unplace({group} [, {dict}])
删除多个缓冲
中先前
放置的标号.类似|:sign-unplace|
命令.
示例:
call sign_unplace('', {'buffer' : "a.vim", 'id' : 10})
"从`a.vim`缓冲中删除`10`标号"
call sign_unplace('g1', {'buffer' : 3, 'id' : 20})
"从`20`缓冲中删除`"g1"`组中的3标号"
call sign_unplace('g2', {'buffer' : 10})
"从`10`缓冲中删除`"g2"`组中的所有标号"
call sign_unplace('g3', {'id' : 30})
"从所有缓冲中删除`"g3"`组中的`30`标号"
call sign_unplace('*', {'buffer' : 5})
"删除5缓冲中的所有标号"
call sign_unplace('g4')
"从所有缓冲中删除`"g4"`组中的标号"
call sign_unplace('*', {'id' : 40})
"从所有缓冲中删除`40`标号"
call sign_unplace('*')
"从所有缓冲中删除所有放置的标号"
sign_unplacelist({list})
示例:
"从`a.vim`缓冲中删除`id`为`10`的标号并用`b.vim`中的`20`标号来标号"
call sign_unplacelist([
\ {'id' : 10, 'buffer' : "a.vim"},
\ {'id' : 20, 'buffer' : 'b.vim'},
\ ])