如果是一个“.log”文件,希望文件中包含关键字“dog”的每一行都显示为红色,而文件中包含关键字“cat”的每一行都显示为黄色。当我在 vim 中打开“.log”文件时,这应该自动完成。有什么办法可以做到这一点吗?
最佳答案
首先,将颜色定义为突出显示组:
:hi Dogs ctermbg=red guibg=red
:hi Cats ctermbg=yellow guibg=yellow
您可以通过 :match
命令或 matchadd()
函数添加(窗口本地)突出显示。通过匹配包含关键字的整行,您将得到所有突出显示。 :autocmd
为您的日志文件安装它(尽管我更喜欢使用 Vim 的文件类型 检测而不是硬编码文件模式)。
:autocmd BufWinEnter *.log call matchadd('Dogs', '^.*dog.*$') | call matchadd('Cats', '^.*cat.*$')
:match
的好处是它不会干扰语法突出显示(这将是一种替代方案)。缺点是当您在同一窗口中查看非日志缓冲区时,突出显示将持续存在。 (您可以通过添加更多自动命令来解决此问题,但这并不简单。)
关于syntax-highlighting - Vim:如何自动突出显示包含关键字的每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453907/