Это не так просто, на самом деле. Если пользователь ввел ваш div и текст обернут, JavaScript не знает, что он обернут; нет строки для подсчета!
Это решение суперспецифично c, и я оставлю показывать вам номера строк:
<div contenteditable="true" id="myDiv" style="width:300px;font-family:monospace" onchange="myHandler()"></div>
<script>
const limit = 40 // number of monospace chars to fill a row
let count = 0
function myHandler (e) {
let lines = Math.ceil(e.target.value.length / limit)
if (lines !== count) {
showlines(lines) // your function to display the line #s
count = lines
}
}
</script>
Вывод: ваш div должен быть фиксированным ширина, и вы должны посчитать, сколько моноширинных символов вписываются в эту ширину. Затем отобразите эти строки.