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.
