我想知道(到目前为止,我没有在谷歌上找到答案,但是如果我可以指定一种风格(即一种颜色),也许它就在我面前而且我对亲戚问题的信息数量感到困惑) )到vim文本的特定部分?
例如,如果我写**文本**,文本会以粗体显示:文字
或者我可以选择一些单词,然后为它们应用颜色?
目的是使更容易阅读作为注释代码文件的文件
thx!
答案 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
。接下来的两行定义了突出显示组Asteriks
和AsteriskBold
。最后两行定义了语法匹配模式(请参阅:help pattern
和:help contains
)。
答案 1 :(得分:2)
@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;工作,但重点确实......
最后我还有一个问题:有时我想转换一个*字符,而我无法找到如何为此目的转换正则表达式?我的意思是
[^*]
不显示粗体绿色*,而是显示任何内容
这是我的界限:
*****