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

时间:2014-01-08 23:34:55

标签: vim restructuredtext

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

 "The cursor is at the |vertical line"

然后点击%移动光标,如图所示

 "The cursor is at the vertical line|"

我尝试为b:match_words插件设置matchit,但这没有帮助。

任何提示赞赏。

3 个答案:

答案 0 :(得分:4)

请原谅我自己的号角,但我是matchit插件的专家。

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

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

这肯定适用于您提供的单行示例。类似地,您可能会认为起始`通常在它之前没有非空格字符,而结尾的字符后面没有非空白字符。 (如果这是太多的否定,那么“这是标记”通常会开始一个新行或跟随一个空格或制表符;它通常后跟一行或一个空格或制表符。)然后你可以使用

: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中所说的。

答案 1 :(得分: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="`:`"

答案 2 :(得分:0)

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