StudlyCaps wrote:Personally I'd use vim if it had mouse control, and context menus which facilitated discovery. [...] Do you prefer to do without these, or do you not consider them to be important?
Vi(m) is working
without menus, so
having them would not "facilitate discovery", because you would not be using them in the first place. This is part of why Vi(m) has -- admittedly -- such a steep learning curve: You are not really "shown" what Vi(m) can do, unless you study the documentation, read relevant forums, or have a sensei teaching you the Art of Vi(m).
I do not, actually, disagree with the benefits of having menus, if they are good. Yes, you can "find out" what else a program could be doing for you. I certainly welcome them in a browser, and a graphics suite, and in many, many other applications: Those where you hold the mouse
anyway.
But I think that there is a viable
alternative(*) way when it comes to text editing, and that's the way Vi(m) has taken; stop using the mouse altogether.
This means your hands remain on the keyboard. Your eyes remain on the text you are editing. Your thought process does not get interrupted. And -- once you master the art of the macro -- all the operations you
could be doing become trivially repeatable and programmable.
There are mouse controls available for Vi(m), via
:set mouse=a, and of course there is gVim. But, on the whole, I think that going down that road is doing you a disservice, because you are trying to make one tool work like another, in a way it is not
meant to be used. That's like... say, using C++ but in the way you'd be using Java. Going "new ..." every time you create a new object, and then complaining about how cumbersome C++ is with all those pointers flying around. The problem is not C++, but the fact that you are using it wrongly. Same for Vi(m) and mouse controls.
I've seen people creating elaborate mapping configs for Vi(m) to make it behave like "normal" editors, Ctrl-X and Ctrl-C and Ctrl-V and everything. That's just misuse of the tool. If you're looking for a "normal" editor, use a normal editor, trying to use Vi(m) that way will only bring you pain. Vi(m) needs to be embraced fully, or avoided.
That being said, I -- personally -- used Vi(m) without really "getting" it for a long time. I did neither love it nor hate it. It was a bit cumbersome, but it was available on every Unix server I connected to, so it was the go-to editor on Unix systems for me. Elsewhere, I much preferred GoldEd on the Amiga, and later UltraEdit on the PC after that -- "normal" Editors.
Then came a project that involved LaTeX source for a 500+ pages book, lots of reformatting, automated source generation via external tools, editing in various parts of the same source file, etc. etc.. And I went through many, many editors, generic ones with LaTeX capabilities and specialized ones, looking for one that actually helped me getting it done without getting in the way.
And without getting into details, Vim with the latexsuite plugin was eventually the one that "floated my boat". I learned so much about Vim in that time, and came to fully embrace it because I finally made all the little pieces connect that make working with it a joy instead of a burden. I now use it for everrything text-related. Even on my smartphone (through termux), as touchscreen "control" and text don't really mix.
And I absolutely understand the frustration that is Vi(m)
before you reach that point where it suddenly all makes sense. I've started working on a tutorial to make it easier for others to "get there", but unfortunately I just don't have the time to make it happen.
Just, believe me, you do not
want "mouse controls and context menus" when you're using Vi(m).
Not having to lift your hands off the keyboard is the whole point of Vi(m).
---
(*) Note that I do not claim that Vi(m) is the end-all, be-all of text editors. There are good reasons why you might prefer a full-blown IDE, or write your text in some other app. All I am saying is that Vi(m) offers an alternative, that it works, that it is enjoyable to use if done correctly, and that it doesn't involve the mouse.