Причем, если поле уже чем-то уже заполнено по умолчанию, то этот текст уже должен быть транслирован в параграф. Так-что ввод с клавиатуры отслеживать не подходит.
Подходит. Достаточно сразу после назначении обработчика сгенерировать событие самостоятельно - текст скопируется:
$('input').on('input', function() {
$('p').text($(this).val());
}).trigger('input');
// или
const input = document.querySelector('input');
const p = document.querySelector('p');
input.addEventListener('input', e => p.textContent = e.target.value);
input.dispatchEvent(new Event('input'));
UPD. Вынесено из комментариев:
что делать, если параграф содержит текст по умолчанию, который должен отображаться пока в поле ввода не начали что-то вводить?
Проще говоря, когда инпут пустой, надо отображать текст параграфа.
Текст по умолчанию засунуть в data-атрибут:
<p data-default-text="Текст по умолчанию"></p>
.
Если инпут пустой, хватаем значение этого атрибута:
$('p').text($(this).val() || $('p').data('default-text'));
// или
p.textContent = e.target.value || p.dataset.defaultText