使用Matchit匹配反引号-可能吗?

问题描述 投票:2回答:3

最近我写了很多RST,我希望%击键能够匹配重音符(即反引号)字符。因为在以下示例中github markdown阻止了我使用反引号,所以在下面的示例中,假装"字符是反引号。

 "The cursor is at the |vertical line"

然后按%会移动光标,如图所示

 "The cursor is at the vertical line|"

我尝试为b:match_words插件设置matchit,但这无济于事。

感谢任何提示。

vim restructuredtext
3个回答
4
投票

原谅我吹牛角,但我是Matchit插件的专家。

尽管它旨在扩展内置的匹配功能,但matchit以多种方式对其进行了扩展。首先,它允许您匹配正则表达式,而不仅仅是单个字符。通过使用vim的单词开头和单词结尾模式,可以获得非常好的结果:

:let b:match_words='`\<:\>`'

这当然适用于您提供的单行示例。同样,您可能会决定开头的`通常在其前面没有非空格字符,并且在结束的结尾后面没有非空格字符。 (如果负数太多,则“ This is markup”通常会开始新行或在空格或制表符之后;通常在行,空格或制表符的末尾。)然后可以使用

:let b:match_words='\S\@<!`:`\S\@!'

matchit插件尝试实现vim的设计目标,包括:help design-documented。标准vim发行版包括matchit.vim(脚本)和matchit.txt中的$VIMRUNTIME/macros/。您可以阅读那里的文档,也可以按照:help matchit-install上的说明进行操作,并使用:help浏览该文档。

:help b:match_words下,

Tips: Be careful that your initial pattern does not match your final pattern.

这是因为,当您按键时,脚本必须能够确定它是在开始模式还是结束模式上。做出此决定所需的唯一信息就是您在b:match_words中所告诉的信息。


0
投票

matchit插件设计为与内置%命令相似,因此具有一些相同的限制。特别是,从:help 'matchpairs'

Only character pairs are allowed that are different, thus you cannot
jump between two double quotes.

因此,这按预期方式工作(但不是您想要的方式:

:let b:match_words="`:'"

但是这不起作用:

:let b:match_words="`:`"

0
投票

有关如何在普通散文或标记文件(例如matchit)中将相同的定界符与rst配对的一些建议,请参阅我的repository

© www.soinside.com 2019 - 2024. All rights reserved.