作成時には 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」というエラーも表示されます。
どんなアイデアでも大歓迎です!