А может сам напишешь -- это даже интересно (моя жизнь как программера с этого вроде как и началась).
И так немного теории.
Для редактирования возми буфер размером с тот же 1мб. Пусть у тебя есть два указателя char* bufb,и char* bufe -- соответственно на начало буфера и наконец.
Теперь введем понятие гапа , как свободное пространство в буфере и обозначим его указателями char* gapb и char* gape.
Теперь магия: в начале(нет текста) gapb==bufb а gape==bufe. ПРи нажатии клавиши когда идет вставка символа то делаешь *gapb++=key; (в буфер в первое свободное место помещается нажатая клавиша) если нажимаешь backspace то делаешь gapb--;
если нажал keyleft то *--gape=*--gapb; -- БУДЕМ так же считать что gapb указавает на свободное место, а gape -- на символ после каретки. если же нажали keyright то делаем *gapb++ = *gape++;
Возми напишии все это в нормальном Сишном виде и получишь простейший редактор.
Enjoy programming.