ACE, Codemirror или реализовать на tab-ах (например взять Bootstrap или UI-Kit), по событию tab открыт или tab закрыт вызвать функцию нумерации строк. Можно использовать details тег.
Что мешает взять ACE, там уже все реализовано, подсветка, нумерация, возможность свернуть блок.
Пробуйте: https://ace.c9.io/build/kitchen-sink.html