如何突出"在Vim中使用文字?

时间:2017-08-18 10:39:18

标签: vim terminal syntax-highlighting neovim

这三行Vim脚本"突出显示"我的源代码中TODO的所有实例都放置了[[[]]]

:set t_Co=1
:highlight Braces start=[[[ stop=]]]
:call matchadd("Braces", "TODO")

不幸的是,这仅适用于普通终端"。这就是为什么我必须将t_Co设置为1

可以在彩色终端或gui中实现类似的功能吗? (或者在NeoVim?)。这可能是使用元信息扩充代码的一种非常有用的方法。

1 个答案:

答案 0 :(得分:3)

请记住,Vim是文本编辑器;它们主要按原样显示文件内容。为了使用元信息扩充您的代码,Vim提供:

  • (语法)突出显示:颜色和文本属性,如粗体或斜体
  • 隐瞒:隐藏或缩小对任何/单个角色的匹配
  • 标志(显示在窗口左侧的栏中)

您的方法是黑客滥用原始终端代码的定义;这些是由终端解释的不可见控制序列,但是你发送可见文本。

正如您在:help highlight-args找到的那样:

There are three types of terminals for highlighting:
term      a normal terminal (vt100, xterm)
cterm     a color terminal (MS-DOS console, color-xterm, these have the "Co"
          termcap entry)
gui       the GUI

start=end=参数(您的黑客所依赖的)仅支持“普通终端”,而不支持 cterm gui 。这就是为什么你需要:set t_Co=1(即强制使用非彩色终端)才能使用它。

由于这些缺点(以及更多:重绘问题,垂直导航已关闭),我建议删除它,并使用上面列出的“已批准”方法之一。有很多Vim用户,他们似乎也很好。