我在编写时使用 Pandoc,并为更复杂的表粘贴 html 代码。这会使文件看起来不整洁,我想使用 Vim 的 foldexpr 使用正则表达式折叠这些表格元素。这个正则表达式:
<table\b[^>]*>(?:(?=([^<]+))\1|<(?!table\b[^>]*>))*?</table>
可以在 Sublime Text 和 BBEdit 中突出显示表格代码,但我似乎无法让它在 Vim 中工作(非常适合我选择的编辑器)。
看着“Vim Scripting the Hardway”,我希望写一个像这样的简单函数:
setlocal foldmethod=expr setlocal foldexpr=GetTableFold(v:lnum)
function! GetTableFold(lnum)
if getline(a:lnum) =~? '\v<table\b[^>]*>(?:(?=([^<]+))\1|<(?!table\b[^>]*>))*? </table>
return '-1'
endif
return '0'
endfunction
为了隐藏我的文件中的表格元素,但它不起作用。当我尝试在 Vim 中对正则表达式进行简单搜索时,我还会收到“E64: ? follow nothing”错误。
任何想法都会非常受欢迎!