2401vim,vim标号

标号简介

提供高亮,快速告诉用户有用信息.如,调试器在左侧列中有个表示断点的图标.

另一例可能是表示(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'},
    \ ])

你可能感兴趣的:(vim,vim,编辑器)