【问题标题】:Vim: how to automatically highlight each line containing a keyword?Vim:如何自动突出显示包含关键字的每一行?
【发布时间】:2013-10-27 13:08:54
【问题描述】:

如果是一个“.log”文件,想让文件中包含关键字“dog”的每一行都变成红色,并且让文件中包含关键字“cat”的每一行都变成黄色。这应该在我在 vim 中打开“.log”文件时自动完成。有没有办法做到这一点?

【问题讨论】:

  • 到目前为止你尝试过什么,或者你见过什么代码可以做这样的事情?

标签: syntax-highlighting vim vim-plugin vim-syntax-highlighting


【解决方案1】:

首先,将颜色定义为高亮组

:hi Dogs ctermbg=red guibg=red
:hi Cats ctermbg=yellow guibg=yellow

您可以通过:match 命令或matchadd() 函数添加(窗口本地)突出显示。通过匹配包含关键字的整行,您将全部突出显示。 :autocmd 为您的日志文件安装它(尽管我更喜欢使用 Vim 的 filetype 检测而不是硬编码文件模式)。

:autocmd BufWinEnter *.log call matchadd('Dogs', '^.*dog.*$') | call matchadd('Cats', '^.*cat.*$')

:match 的好处是它不会干扰语法突出显示(这是一种替代方法)。缺点是当您在同一窗口中查看非日志缓冲区时,突出显示将持续存在。 (您可以通过添加更多 autocmd 来解决此问题,但这并非易事。)

【讨论】:

  • @romainl:当我返回浏览器并看到您已经回答了一堆时,我经常会这么想。我认为这里的 Vim 社区服务很好。感谢(也感谢 Kent、ZyX、glts 等)!
  • @romainl 你也很快!当我打开页面时,哦,已经有答案了,Ingo很快!当我要发“你好快”的时候,我看到了你的评论!
  • 非常有帮助!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
相关资源
最近更新 更多