For the last few days I have been playing with vim and Leo's vim
bindings.  This post will discuss my explorations and conclusions.

To state my conclusions first:

1. Vim-like bindings are not something I will never be comfortable
with.

2. It might be possible to support, for example, the functionality of
vim's "." and ";" commands, but imo this would be merely a "tweak", a
minor improvement to Leo.  True, vim aficionados trumpet these
commands as big deals, but Leo's macros or scripts are perfectly
viable alternatives.

3. Studying vim did uncover some smallish improvements that can and
should be made to Leo, especially regarding Leo's incremental search
commands and how Leo handles @mode nodes.  Some are true bugs and
should be fixed asap; others can (and probably will) be delay
indefinitely.

In short, I am not interested in further work on alternative bindings.

===== An important video about vimoutliner

Yesterday I watched a video about vim given by Steve Litt, the
original author of vimoutliner: 
http://video.google.com/videoplay?docid=8810772602188234059

In the "small world" category, Steve was a member of my graduating
class at New Trier High School in Winnetka Illinois.

In this video, given to a Linux Users group in 2003, discusses why
people should use outlines.  There are essentially *no* technical, vim-
specific topics! As such, *everything* that Steve says about outlines
applies equally well to Leo!

When I realized what this video was saying I thought to myself:  OMG,
I have been assuming that everybody understood why they should be
using outlines.  But clearly Steve didn't make that assumption:  he
patiently discusses why outlines are necessary to do proper planning--
in life and in programming.

We have *got* to link to this video from Leo's home page.  It's a
brilliant piece of marketing for *any* capable outliner.  We can use
it as is, and perhaps compare and contrast Leo with vimoutliner.

Leo can do substantially more that what was discussed in the video,
but vimoutliner has grown a lot in 9 years.  For example, near the end
of the video Steve mentions that he is working
http://www.troubleshooters.com/projects/Node.rb/index.htm
Presumably, this gives vimoutliner some or all of Leo's scripting
capabilities, albeit with a scripting language that isn't Python.

===== Implications for bindings

Steve's talk mentions in passing something that has important
implications for Leo's vim-like bindings.  vimoutliner is a (clever!)
way of embedding *plain* text into vim in such a way as to represent
outlines.  (See the video for the details.)  This means that *all* of
vim's default bindings apply to all parts of vimoutliner outlines!
There is no truly separate outline or body panes or headlines.
Everything is just text.  Thus, all Steve had to do was *add* bindings
for outline-oriented commands.  He chose ",," for the lead-in keys.
This is perfectly reasonable: the bindings were unused and are easy to
type.

In contrast, Leo's key bindings must treat outlines, body text and
headlines separately.  This makes designing key bindings *much* harder
to do.  Yesterday I played around with the present vim-like bindings.
Although Tom has done a valiant job of attempting to create a vim-like
environment, my overall impression was that the bindings I use are
*substantially* easier to use.

There are a lot of subtle advantages of the present emacs-like
bindings that are not present in the vim-like bindings.  For example,
once I use an Alt-arrow key to put the focus in outline pane, I can
use *plain* arrow keys to select outline nodes.  Not so with the
present vim-like bindings.

Yesterday I played around with the idea of having command mode (vim's
"normal" mode) be the default for the body pane but not headlines.
That is, editing a headline would start in insert mode.  This is not a
terrible idea: command mode is used (mostly) for moving the cursor,
but that's not so important in headlines.  However, I didn't really
pursue this idea because I quickly concluded that vim-like bindings
are not for me.

I simply can not stand the endless confusion about modes that I get
with vim.  Please understand: this is just my personal preference:
YMMV and that's perfectly ok with me.  But I shall *never* feel that
the difficult work of designing a reasonable set of vim-like bindings
will ever be worthwhile.

===== Conclusions

1. I plan no further work on vim-like bindings.

2. It may be possible to add some vim-like commands, but this is a low
priority.  Other improvements suggest themselves, including some bug
fixes.

3. vimoutliner is an excellent outlining environment.  For those
comfortable with vim, it will likely be more pleasant to use than
Leo.  Afaik, vimoutliner lacks clones and Python scripting, but that
will be small beer for vim enthusiasts.

4. Leo's home page should link to Steve's video.  It's a superb
explanation about why outlines are important.

I am comfortable, even happy, with these conclusions.  As I will
discuss in another thread, it's important to me to do more than just
tweak Leo.  I am happy any time I can remove some difficult work from
the to-do-soon list.

All comments are welcome, but be warned: you are not likely to change
my mind about these conclusions.

Edward

P.S. At one point Steve says that outlines are insufficient in
situations where complex resources must be allocated.  In that case,
according to Steve, one must use tools like project management
software.  However, Leo's outlines *can* be used to allocate
resources:  one simply uses clones to allocate tasks to resources, or
vice versa.

EKR

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en.

Reply via email to