最近我写了很多RST,我希望%
击键能够匹配重音符(即反引号)字符。因为在以下示例中github markdown阻止了我使用反引号,所以在下面的示例中,假装"
字符是反引号。
"The cursor is at the |vertical line"
然后按%
会移动光标,如图所示
"The cursor is at the vertical line|"
我尝试为b:match_words
插件设置matchit
,但这无济于事。
感谢任何提示。
原谅我吹牛角,但我是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
中所告诉的信息。
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="`:`"
有关如何在普通散文或标记文件(例如matchit
)中将相同的定界符与rst
配对的一些建议,请参阅我的repository。