From a4f6ef4301380db1ac58de1cde778f676f16afae Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Mon, 3 Mar 2025 20:22:05 +0000 Subject: [PATCH] markdown.vim: handle repeats in `[[` / `]]` --- ftplugin/markdown.vim | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ftplugin/markdown.vim b/ftplugin/markdown.vim index fb42d01..7b33561 100644 --- a/ftplugin/markdown.vim +++ b/ftplugin/markdown.vim @@ -27,10 +27,17 @@ if get(g:, 'markdown_recommended_style', 1) endif if !exists("g:no_plugin_maps") && !exists("g:no_markdown_maps") - nnoremap [[ :call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW") - nnoremap ]] :call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW") - xnoremap [[ :exe "normal! gv"call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW") - xnoremap ]] :exe "normal! gv"call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW") + function! s:NextSection(dir) + let flags = a:dir > 0 ? "sW" : "bsW" + for _ in range(v:count1) + let x = search('\%(^#\{1,5\}\s\+\S\|^\S.*\n^[=-]\+$\)', flags) + endfor + endfunction + + nnoremap [[ :call NextSection(-1) + nnoremap ]] :call NextSection(+1) + xnoremap [[ :exe "normal! gv"call NextSection(-1) + xnoremap ]] :exe "normal! gv"call NextSection(+1) let b:undo_ftplugin .= '|sil! nunmap [[|sil! nunmap ]]|sil! xunmap [[|sil! xunmap ]]' endif