When done programmatically, it's true that it might create a mess such as "^b^b^b" (instead of just "^b") - although there are ways to reduce this, and it would really only be a problem for large lines anyway. Even if the control codes are a mess, it doesn't really matter as long as they can be sent and viewed by other clients.