我的Vim文档包含使用'syntax include'区域的代码块区域,以便从主文档中突出显示不同的语法。例如,我在输入Python代码时使用了一个名为'pyregion'的语法区域。然后使用Python的语法文件中的设置突出显示文档的pyregion区域,而区域外的区域使用主文档的语法文件。
我想让Python区域中的整个背景以不同的颜色着色,以区别于文档的非Python区域。我可以通过输入整个python区域的背景来获得部分路径:
:highlight pyregion guibg=#555555
但是上面的命令只更改了背景上有文本字符的区域的背景,而不是区域的整个背景,这似乎仍然被定义为背景颜色的文档的其余部分。对于'正常'组。这没关系 - 它确实引起了对该区域的注意,但它有一个斑点的外观,因为只有代码字符本身具有不同的背景,而不是整个屏幕区域的整个区域。
有没有办法在整个区域内获得不同背景颜色的统一乐队,而不仅仅是有角色的区域?
以下链接中有相关的问题和答案,但据我所知,答案也会在有文字的地方改变背景: Highlight Code Block Backgrounds with Vim
感谢您的帮助。
答案 0 :(得分:7)
如果没有荒谬的躲避(见下文),我不相信这是可能的。如果你试试这个:
:match Error /\%3l/
它突出了Vim认为是第3行的全部内容。突出显示仅延伸到角色的结尾。这让我怀疑无法突出显示不存在的角色。
现在停止阅读。
纯粹作为一种荒谬的练习,你当然可以在每一行的末尾附加大量空格,然后在保存时删除它们。这将是愚蠢的,但这是我唯一能想到的。
" Add spaces to the end of every line (you could also do
" this selectively for lines that don't already have lots
" of spaces and you could do it on reading a file or whatever)
:exe '%s/$/' . repeat(' ', 1000) . '/'
" Automatically remove spaces at the end of every line when saving
:autocmd BufWritePre %s/ *$//
" Make 'A' append at the end of the non-space characters on the line
:nmap A / *$<CR>i
" Make '$' go to the end of the non-space characters on the line
:nmap $ /.\? *$<CR>
免责声明:请勿这样做。
答案 1 :(得分:3)
是的,您可以使用sign命令执行此操作。
http://vimdoc.sourceforge.net/htmldoc/sign.html
sign define 1 linehl=Error
sign place 1 name=er1 line=1 file=file.txt
将突出显示第一行file.txt一直到终端的边缘。