Re: [dev] [RFC] Design of a vim like text editor

From: Silvan Jegen <>
Date: Wed, 24 Sep 2014 18:12:30 +0200

On Tue, Sep 23, 2014 at 08:03:45PM +0200, ale rimoldi wrote:
> - o does not go into insert mode (how easy it is to switch my habits to oi?)
> - a does not append
> - end of line is not the last char in the line but the end of line character
> - P does not paste before
> and here the only real bug i noticed:
> - <count>> indents count+1 lines
> [...]
> zt zz zb redraw the current line at the top, center or bottom of the screen
> o O should go into insert mode after adding the line
> a appends at the current cursor place
> . should also repeat insert actions
> $ should jump to the last char in the line not on the hidden return char
> in normal mode, when the cursor is at the end of the line it should be on the last char.
> x should not delete the end of line character (but this might be solved with the placement issue above)
> implement the difference between word and WORD

Nice observations with which I agree.

I too think that both macros and the visual block mode belong to the
essential functionality of Vim. Hopefully I will find the time to work
on these for vis.

Additionally I found the following differences to Vim (a.k.a. my TODO

- 'J' in visual mode is not implemented
- 'r' does move the cursor
- Visual line mode
- dd is not .-able
- dd does not work when used at the end of the file
- Pasting a yy'd line with 'p' moves the cursor one additional line down
- M behaviour when used on file contents smaller than window (bottom vs
        middle of the shown buffer)
- ZZ should be implemented
- ZQ should be implemented
- 't' stops one character short
- Implement ';' and ','
- 'p' does not allow for a count

A patch to put the user in insert mode after o/O can be found below.

diff --git a/vis.c b/vis.c
index 3a6a3a3..fa0f379 100644
--- a/vis.c
+++ b/vis.c
_AT_@ -759,6 +759,7 @@ static void openline(const Arg *arg) {
 	movement(&(const Arg){ .i = arg->i == MOVE_LINE_NEXT ?
 	                       MOVE_LINE_END : MOVE_LINE_PREV });
+	switchmode(&(const Arg){ .i =VIS_MODE_INSERT });
 static void joinline(const Arg *arg) {
Received on Wed Sep 24 2014 - 18:12:30 CEST

This archive was generated by hypermail 2.3.0 : Wed Sep 24 2014 - 18:24:08 CEST