Я определил следующую функцию, которая прекрасно работает при непосредственном вызове:
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 добавляются, когда в визуальном режиме выбрано несколько абзацев. Почему функция ведет себя по-разному при вызове через сопоставленный ярлык?
