Vim matchadd 命令不适用于多个选项卡

标签 vim tabs highlight

这些是用于在 .vimrc 文件中设置自定义单词突出显示的行。

hi CustomYellow ctermbg=205 guibg=yellow guifg=black ctermfg=black
call matchadd('CustomYellow', '\<TODO\>')
hi CustomCyan ctermbg=205 guibg=Cyan guifg=black ctermfg=black
call matchadd('CustomCyan', '\<DEBUG\>')
hi CustomGray ctermbg=205 guibg=Gray guifg=black ctermfg=black
call matchadd('CustomGray', '\<TEMP\>')

当我在不同的 Vim 窗口中打开不同的文件时,突出显示可以正常工作,但是,如果我使用选项卡在同一个 Vim 窗口中打开不同的文件,突出显示就会停止工作。

最佳答案

matchadd():match 一样,仅适用于当前窗口。 :split:tab split 创建一个新窗口,并且不会突出显示匹配项。您需要为每个新窗口重新进行匹配定义。

:autocmd WinEnter 允许您在进入窗口时执行代码。为了避免在重新访问窗口时定义额外的相同匹配项,您可以使用静态 {id} 并在该错误已存在时使用 :silent! 抑制错误:

autocmd WinEnter * silent! call matchadd('CustomYellow', '\<TODO\>', 10, 12345)

关于Vim matchadd 命令不适用于多个选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56555803/

相关文章:

css - 如何禁用文本选择突出显示

bash - 如何语法高亮 bash 输出(一些帮助信息)?

macos - 在 mac 预览中突出显示文本的新颜色

Vim 不按空格缩进

Vim Action 跳转到字符并在其后发生变化

vim - 如何使用 Vim 分隔页面?

ubuntu - 在 ubuntu 上使用官方存档安装 go-vim 后无法正常工作

javascript - 如何使用 Protractor 比较不同窗口(选项卡)中的两个值?

jquery - 从其他页面上的链接覆盖默认的 jQuery UI 选项卡

javascript - 替换 JavaScript 中的制表符