gpt4 book ai didi

vim - Matchit 跳到 HTML 中的下一个列表项而不是结束标记

转载 作者:行者123 更新时间:2023-12-02 22:33:19 27 4
gpt4 key购买 nike

我下载了 Matchit 插件并将其用于我的 HTML 文件。一切都按预期工作,直到我在我的列表中使用它。

<ol>
<li id="link-1"><a href="http://www.reddit.com/">reddit</a></li>
<li id="link-2"><a href="http://www.vim.org/">vim</a></li>
<li id="link-3"><a href="http://www.w3schools.com/">w3schools</a></li>
</ol>

如果光标在第一个 o 上,当我按 Tab 键时,光标会跳转到第一个列表项,而不是结束 ol。当我在第一个列表项的 l 上时,光标跳转到下一个列表项标记的 l。但是,如果我将光标移动到链接标签的第一个 a 并点击选项卡,那么 Matchit 就可以正常工作并跳转到结束标签。 Matchit 适用于除列表项之外的所有标签?如何解决此问题?

最佳答案

首先,matchit 与 Vim 一起分发而没有被激活。您不需要下载它,只需按照 :help matchit-install 上的说明进行操作即可。 .

Matchit 使用一个名为 b:match_words 的缓冲区变量定义匹配标签对:打开一个 HTML 文件并输入 echo b:match_words .这里的值是:

<:>,<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>

如果我明白:help matchit这些模式正确,<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>部分是“问题”所在。请注意,定义列表的行为是相同的:matchit 不是跳转到结束标记,而是跳转到中间标记。

我猜将其粘贴到 HTML ftplugin 中并进行一些自定义可以解决问题。

编辑

这一行似乎完全解决了这个问题:

autocmd FileType html let b:match_words='<:>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'

我刚刚删除了 <ul|ol> 的两个完全不必要的模式定义和 <dl> , 只留下基本匹配。

关于vim - Matchit 跳到 HTML 中的下一个列表项而不是结束标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11851320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com