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

标签 vim restructuredtext

我最近写了很多 RST,我希望 % 击键能够在重音(即反引号)字符之间进行匹配。

`The cursor is at the |vertical line`

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

`The cursor is at the vertical line|`

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

任何提示表示赞赏。

最佳答案

请原谅我自吹自擂,但我是 matchit 插件的专家。

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

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

这当然适用于您给出的单行示例。同样,您可能会认为起始 ` 前面通常没有非空白字符,并且结束字符后面也没有非空白字符。 (如果否定太多,那么“这是标记”通常会开始一个新行或跟随一个空格或制表符;并且后面通常跟随一个行或空格或制表符的结尾。)然后您可以使用

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

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

:help b:match_words下,它说,

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

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

关于vim - 使用 matchit 匹配反引号 --- 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21008876/

相关文章:

python-sphinx - 如何在 python-sphinx 中突出显示文本?

regex - vim 在搜索和替换中使用通配符时交换子字符串

javascript - 如何使用VIM正确缩进js文件中左括号后的函数参数?

perl - ctags 对 moops 的支持

restructuredtext - 当术语以序数形式的数字开头时,如何区分定义列表和有序列表?

python - Sphinx - 生成对 Trac 票证和变更集的自动引用

c++ - 查找包含特定文本的函数的正则表达式是什么?

vim - MacVim - 如何正确设置 vimdiff 以与 SourceTree 一起工作?

documentation - 劝诫中的替代

python-sphinx - Sphinx Doc - 在为 HTML 构建时如何渲染动画 GIF,而在为 latexpdf 构建时如何渲染 PNG?