* use moveByChar
* begin to switch to char movement and started to support undo