text files are a form of ui. and a very simple and portable one. beyond the utf stuff, you have a cursor or a point, you hit a key on your keyboard, it gets inserted at the cursor.
then there is navigation, which is primarily line and column based, you move in a 2d grid. and theres also the idea of a word, which is a whitespace seperated block of text. and with those, you have the editing model of most modern text editors. gnu readline (though im not sure if that's the origin), and ed are both line editors. and in turn, any derivatives are also line editors. vim is a line editor.
but then theres us programmers, the primary users of text editors. our interface isnt text files, or lines or words. it's a layer on top of all that, it's syntax that we interact with. and compilers, interpreters, or whatever else - they consume this syntax. not just any raw text. compilers work with parse trees and nodes. not lines or words. why don't editors reflect that?