 <p>One technique that's common (especially in older editors) is called a split buffer. Basically, you "break" the text into everything before the cursor and everything after the cursor. Everything before goes at the beginning of the buffer. Everything after goes at the end of the buffer.</p> <p>When the user types in text, it goes into the empty space in between without moving any data. When the user moves the cursor, you move the appropriate amount of text from one side of the "break" to the other. Typically there's a lot of moving around a single area, so you're usually only moving small amounts of text at a time. The biggest exception is if you have a "go to line xxx" kind of capability.</p> <p>Charles Crowley has written a much more complete <a href="http://www.cs.unm.edu/~crowley/papers/sds/sds.html">discussion of the topic</a>. You might also want to look at <a href="http://www.finseth.com/craft/index.html">The Craft of Text Editing</a>, which covers split buffers (and other possibilities) in much greater depth.</p>