vim着色特定文字

时间:2018-04-06 13:12:58

标签: vim colors

我想知道(到目前为止,我没有在谷歌上找到答案,但是如果我可以指定一种风格(即一种颜色),也许它就在我面前而且我对亲戚问题的信息数量感到困惑) )到vim文本的特定部分?

例如,如果我写**文本**,文本会以粗体显示:文字

或者我可以选择一些单词,然后为它们应用颜色?

目的是使更容易阅读作为注释代码文件的文件

thx!

2 个答案:

答案 0 :(得分:2)

您可以使用:

set concealcursor=n                                                             
set conceallevel=3                                                              
hi Asterisks NONE
hi AsteriskBold  cterm=bold gui=bold
syn match Asterisks contained "**" conceal                                      
syn match AsteriskBold "\\\@<!\*\*[^"*|]\+\*\*" contains=Asterisks 

最后四行与$VIMRUNTIME/syntax/help.vim中定义的隐藏栏(|)非常相似。相反,我们想要隐藏双星号(**)。

前两行请参阅:help concealcursor:help conceallevel。接下来的两行定义了突出显示组AsteriksAsteriskBold。最后两行定义了语法匹配模式(请参阅:help pattern:help contains)。

答案 1 :(得分:2)

BigPike&amp; amp;塞尔吉奥!

@Sergio所以,我已经在我的vimrc文件中插入了你的行,这对它有很大的帮助:) 我为其他像我这样的初学者添加评论以节省时间:

- &GT; 隐藏表示隐藏的字符,此处用于隐藏* *,而其他命令会转换任何一对* *

之间的内容

- &GT; concealcursor = n 表示字符隐藏在正常模式下,但您可以在可视模式或插入模式下看到它们(它可能等于&#39; v&#39;或&#39; i& #39;或多个值,例如&#39; nv&#39;隐藏正常和可视模式下的字符)

- &GT; conceallevel = 3 表示字符将被完全隐藏(设置为&#39; 0&#39;表示它未被隐藏,&#39; 1&#39;和&# 39; 2&#39;是用其他东西取而代之的)

- &GT; hi syn 将用于转换由&#39; * *&#39;

包围的文本

- &GT; hi 表示高亮显示,它指定了选择文字的显示方式,因此对于星号,它设置为,这意味着它不会被转换(I&#39;我不确定它是否必要,因为它将被隐藏)

- &GT;选项 AsteriskBold 通过 cterm = bold 变为粗体。在我的shell中 gui = bold 什么都不做,所以我删除了它,并且我在 cterm = bold 之前添加了 ctermfg = Green 以绿色为文本着色除了使它变得大胆(之前:因为它在&#39;中指定:帮助你以前放置它以避免我不理解的问题)

- &GT; syn match Asterisks&#34; * *&#34;隐藏我认为这一行定义了Asterisks所代表的变量,它应该被隐藏(隐藏)

- &GT; syn匹配AsteriskBold \\\@<!\*\*[^"*|]\+\*\*包含= Asterisks 此行定义了与正则表达式名称AsteriskBold匹配的文本,我完全不理解(我删除了 { {1}} 因为我不知道它做了什么,如果没有它到目前为止效果很好,我只用\\\@<!更改了字符集,因为我希望模式匹配均匀当有一个&#34;或者一个|)时,我也不明白为什么+之前用反斜杠工作。并且结尾&#39;包含= Asterisks&#39;是必要的,但我不明白这个表述的逻辑...如果我们不说它,或者如果我们没有定义前一行中的Asterisks,那么隐藏行为就不会#&# 39;工作,但重点确实......

最后我还有一个问题:有时我想转换一个*字符,而我无法找到如何为此目的转换正则表达式?我的意思是

[^*]

不显示粗体绿色*,而是显示任何内容

这是我的界限:

*****