Vim语法高亮隐藏字符

7
我想为vim实现一个语法文件,以隐藏文件中的某些字符。具体来说,我希望编写一个用于阅读Markdown文件的改进高亮器,而不显示一些格式字符,更喜欢隐式地表示它们。例如,我想让*bold*这样的东西简单地呈现为bold,并且有粗体文本,或者让标题像这样:
My Header
=========

不显示下划线,只是以不同的颜色出现。到目前为止,我还没有找到任何vim语法文件隐藏特定字符的显示的例子。这在vim中是否可行?如果可以,要怎么做呢?


6
我感觉这个想法很糟糕,但具体哪里不对我说不清楚。Vim适用于编辑文本,而不是使其消失(当然折叠除外)。 - Bradford
1
如果你想要一种所见即所得的体验,可以寻找一个能够将浏览器窗口与编辑的 Markdown 文档保持同步的插件。我不记得具体是哪个插件了,但之前有讨论过。 - sehe
2个回答

14

使用conceal或Ignore参数可以隐藏语法项 - 或者只是某些字符。参见

:help hl-Ignore
:help syn-conceal

可以查看语法文件“help.vim”,该文件是crefvim的一部分。CRefVim是一个嵌入在Vim帮助系统中的C参考手册。 "help.vim"语法文件扩展了帮助文件的标准语法突出显示。

这里有一个例子。 '$'字符用于以斜体显示文本:

example on how to use Ignore syntax argument, help.vim

也许这个例子对你进一步了解很有帮助...

Habi


1

你可以使用“粗体”、“斜体”等方式,制作自己的语法文件和相应的颜色主题。这样不会隐藏任何内容,因此你的语法必须与原始文本一起工作。 例如,这可能是你的标题语法:

在你的语法中,你需要:

syn match Header '^\s*\u*\.\s.*$'  contains=ALL
hi link Header   ModeMsg

并且在颜色主题中

hi ModeMsg gui=bold guifg=NONE guibg=NONE cterm=bold ctermfg=NONE ctermbg=NONE term=bold

然后是这样的标题

1. This is my new header, being bold

将以粗体显示,没有任何标记。顺便说一下,您可以使用TOhtml功能导出它并保持高亮。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接