Я определил следующую функцию, которая прекрасно работает при непосредственном вызове:
function EncloseParagraphs() execute "normal `>a</p>\<Esc>`<i<p>\<Esc>" %s/\%V\n\{2,}\%V/<\/p>\r\r<p>/ge nohl endfunction
Но когда я использую следующее отображение
map <silent> <C-P> :call EncloseParagraphs()<CR>
Результаты выглядят так
<p><p><p>This is a paragraph.</p></p></p> <p><p><p>This is a paragraph.</p> </p></p>
Другими словами, несколько тегов p добавляются, когда в визуальном режиме выбрано несколько абзацев. Почему функция ведет себя по-разному при вызове через сопоставленный ярлык?