-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Remove the interactive tutor #17600
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove the interactive tutor #17600
Conversation
Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Damien Lejay <damien@lejay.be>
4a6bad7
to
1596eb1
Compare
Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Damien Lejay <damien@lejay.be>
Is the
Then how would users know about the That being said, even though I contributed a few patches to the new Tutor plugin recently, I don't like it either, but not because of your reasons but because it is badly designed (IMO). Making change to a tutor file could be very error-prone if contributors and maintainers don't notice the corresponding But anyway, I think the tutor should still be available to Vim users via an Ex command |
I have no idea. Is a beginner (that would not know how to fix the problem) likely to be in this situation ?
:-) Correct. At least a complete beginner is not asked to enter the command mode with Having the vimtutor be launched via an Ex command makes sense to me. |
But a beginner is already asked to exit Vim with |
As far as I know, Actually, as I remember, the history of including an interactive tutor is a long time ago. And it started back when Bram was still around, but he didn't do it (there's a discussion here somewhere). But now this tutor is in the package and it's unlikely to be abandoned for nothing. Considering the man-hours spent on its support, translation into other languages and your not very convincing arguments. To be honest, I'm not crazy about the interactive tutor either, also because of the complexity of preparing the translation and maintaining it. One good thing is that it doesn't change that often. Here's found this discussion: #6414 |
Thanks for the link to the discussion. I can see that Bram and @lilydjwg raised similar concerns. Regarding the man-hours, this shouldnʼt be an issue as this Tutor will likely stay the unique tutor of the Neovim project. And I guess anyone could add it as a plugin ? Would you agree that Vim should have only one tutor ? What should we tell beginners ? To me it is : “you have never used Vim before ? Open up a terminal and type So to me there can only be two possibilities :
But maybe I am missing a scenario / use case where having both in the repo is beneficial. |
I think But anyway, I think it's also worth noting that the new tutor plugin is also a framework for plugins to create their own interactive tutorial. An example is vim-visual-multi |
Sorry, but I think both can have their place. I don't think that the interactive tutor has much of a maintenance burden as I think the tutor doesn't change much. So I don't see the problem in maintaining both versions here. |
@chrisbra What is the rationale behind having both ? What is the intention behind each of them in that scenario ? @brianhuster If I understand correctly, you are in favour of
I think that is a solid option. |
I think I got to know vimtutor by tab-completion in the shell despite I learned Vim first via a book. vimtutor was a good practice exercise for me.
As I've said before, what it creates is a test, not a playground that people are encouraged to try and learn things. When I learn things, I don't always do the exercises from the tutor, and try whatever ideas that come out of my mind at the time; I learn something either they work or not; I don't want to complete certain tasks when I'm learning. It shouldn't be called interactive tutorial. It has nothing like what other interactive tutorials I've come into. It should be called testing or task tutorial. |
the original vimtutor works well, but may look scary to a new-user unfamiliar with a terminal. That's why I like the new style tutor. I think calling it interactive is fine, but I don't really mind, we can also call it tutor-plugin if you want. So the point is:
In any case, I don't have a strong feeling about it, if everybody would prefer deleting it, so be it. So community, please speak up. |
Which is why the author of this PR suggested including a syntax file for |
I think I missed it when this was added so I'm looking at it for the first time. I don't really think it makes sense to have two beginner tutorials covering the same material. They, confusingly, feel like they might be from different versions of Vim. I've just started running through it and opened the help section as suggested at the start of Lesson 0 and I'm dead in the water, with the cursor in the help window. I'm already a bit discouraged. I also noticed that moving the cursor through the concealed text was a problem, as @dlejay mentioned. Putting my "day one with Vim" hat on, it felt like the cursor was stuck. It looks like this came from Neovim so I assume it's had a fair run over there but it seems like it could do with some polish as it stands. I also set everything in My first impression, for what it's worth, has me agreeing with everything in the OP. |
As I've said before, I'm not crazy about the interactive tutor. However, I haven't seen a single convincing argument from the author why it is The author insists that there is a So it can be considered that this argument of the author is untenable. The author goes on to say that there should be only one tutor. But he doesn't So this argument doesn't hold up either. As for the shortcomings of the interactive tutor, I think they can be fixed and My point is that there is no point in removing a separate plug-in that already |
And if the author is so dissatisfied with the existing interactive tutor, he In general, it should be competition and user's choice rather than thoughtless |
Maintainance cost and inconsistency. Because the Tutor file has some outdated thing, I once sent a PR to update the new tutor file. But I didn't realize that the |
No, it can't be fixed without breaking change that will make it a totally different plugin. For this reason, I would also like Neovim to remove the "interactive" part of |
Ahm, check how many changes there were for the old tutor and it took us only about 20 years or more to include chapter 2 |
But doesn't that mean "in one way or another"? And isn't it more prudent to have at least a not worse alternative before removing something? |
I already told that alternative: make |
It hasn't made a release, no one's work flow depends on it, what is the cost of removing it? |
That's why it has been outdated for so long time. Based on this StackOverflow thread, |
All right. Let's do a decent highlighting of the old tutor's syntax first. And then we'll think about deleting it.
The main development doesn't depend on him, I agree. And the cost of its removal consists of the resources already spent on implementing an interactive tutor, fixing bugs, translations into other languages. |
Ubuntu 25.04 has Vim 9.1.0967 in its repositories. The new tutor was added in 9.1.0836. |
Then we can just remove the "interactive" part of new Tutor plugin, and make |
We were talking about a new (stable) Vim release, so probably Vim 9.2 |
Yes, I understand that. My point is that since this new Tutor is included in a major Linux distro, the assumption that "no one's work flow depends on it" may not be correct. |
most of the initial porting work was done by @yegappan so I'd also like to hear from him. |
How could someone's workflow depend on a beginner tutorial? |
If you are interested in the input of a random user, I think improving |
New It might benefit to add syntax highlighting there as was suggested, but I find plain non-colored text in vimtutor beautiful and non-distracting. |
On Wed, Jun 25, 2025 at 12:28 PM Christian Brabandt < ***@***.***> wrote:
*chrisbra* left a comment (vim/vim#17600)
<#17600 (comment)>
most of the initial porting work was done by @yegappan
<https://github.com/yegappan> so I'd also like to hear from him.
The tutor plugin is specifically designed for first-time Vim users,
providing
an interactive introduction to Vim. Compared to the older version, this
plugin
offers a more hands-on learning experience, which significantly lowers the
barrier for new users learning Vim commands. As previously mentioned, the
maintenance cost is minimal. Given its usefulness and low overhead, I
believe
the tutor plugin should remain bundled with Vim. If any issues arise, we can
address them.
Regards,
Yegappan
|
Not makes sense to me, given that While Neovim shines for people who want a development environment in the terminal, Vim still has its place. There are people who just needs a TUI editor to edit config files anyway, in which case they don't need Neovim but just a preinstalled Vim in their system. |
@yegappan I list some issues with that plugin and my preferred solution in a Neovim issue, hope you can give some opinions about it. If you are OK with it, I could send a PR to Vim first |
I am happy to work on a syntax file for the vimtutor, but first I need to know if the original tutor is here to stay (or if the future is the interactive tutor). Otherwise it makes no sense. The current
Is that the common “vision” for the future of Vim ? |
No, it's just my personal opinion about its current situations. The future of Vim will depends on its future Pull Requests. |
Syntax highlighting is going to introduce some fragility as well. It may be better to use text properties if going down that path. |
Btw, given that the |
which is what this PR is suggestions, right? Also I think syntax highlighting for the traditional tutor wouldn't also work in tiny Vim. |
Well, a beginner learning Vim through the vimtutor on |
Not very unlikely, considering some Linux distributions ship a vim-tiny by default. Surely the user is highly unlikely to want to learn with vim-tiny but a beginner may not realize that they have a tiny version of Vim. Perhaps a warning or error could be given instead. |
Why? Is there any feature taught in |
A beginner might find they have vim-tiny installed on the system and not realize that Vim has a lot of different build options (unlike most modern software). They might be confused that their Vim doesn't work as expected, only after some time they know the existence of the vim-nox or vim-gtk package. The tutor is a good place to clarify this. |
Then your comment is not related to this PR |
Are there any Linux distro that are both beginner-oriented and ship with vim-tiny by default ? |
Signed-off-by: Damien Lejay <damien@lejay.be>
abeabd4
to
bf78a8a
Compare
It’s been 3 weeks without new comments. How do we move on ? In my opinion, the only bad outcome would be : “let’s keep both just because we can”. |
Note that the new tutor plugin is so fragile (hence really confusing to beginners) that I sent some patches to Neovim to rewrite it using extended marks (similar to Vim's text properties). So if Vim really wants to keep it, someone will need to rewrite it with text properties. Otherwise, removing it and make |
I think the answer to this question is in the PR and discussion. My personal summary from a quick skim:
Except for the first bullet, any of these would make a fine small project and PR the community can have productive conversation about, I would think. |
I have troubles understanding what are the good reasons, could you help me ? |
I am sorry, I don't plan to remove the interactive tutor right now. So I'll close this as not planned (at least for now). |
Thanks for taking the time to consider this proposal. Best. |
This PR removes the interactive tutor from Vim.
Rationale
The vimtutor is one of the most beautiful features of Vim. It teaches “Vim by doing” and does it by having the beginner use just Vim and a file.
The innocent beginner simply types
vimtutor
in a terminal and at the end of the self-contained tutor, they already know how to use basic Vim commands because they have been using Vim by themselves.The vimtutor can and should be improved. The Neovim project replaced the traditional vimtutor with their own version.
:Tutor
launches their interactive tutor.Things that the vimtutor can take from the
Tutor
I see some nice additions that should likely be transferred to the vimtutor, such as :
<ENTER>
in a different colourThings the vimtutor should not take from the
Tutor
The interactive tutor uses hyperlinks that, in my view, introduce serious problems :
while the cursor arrives at the end of the hyperlink, pressing
l
does not make the cursor move to the right. It feels like the cursor is “stuck” on the hyperlink (until you pressl
enough times). I think this behaviour is unacceptable for the vimtutor ;the beauty of the vimtutor is that it teaches Vim by using Vim, not by using a Tutor infrastructure. In Vim, you cannot expect hyperlinks to be accessed via
<Enter>
.As an analogy, if you put the so-called “training wheels” on a bicycle, children learn the training wheels, not how to ride a bike.
The first chapter is less progressive than the original vimtutor and puts many possible distractions with the links and all the possibilities to actually exit the focus of the Tutor.
The
Tutor
introduces exercise validation, which is again a distraction for the user. The vimtutor let them fully interact with Vim + a raw file.Vim should not have several tutors
Just having to type
vimtutor
in a terminal is very beginner friendly. They hardly need to know anything.With Neovim, they need to type first
nvim
then inside Neovim type:Tutor
.Currently to access the Tutor in Vim, they need to do the same thing, how are they even supposed to know about this ?
Having both tutors makes no sense, is confusing for the beginner (if they ever happen to know there are two), is confusing for the maintainers and requires double the amount of translation effort.
Conclusion
I think having the Neovim
Tutor
alongside thevimtutor
is a net negative and it should be removed.The good ideas from the
Tutor
should be incorporated into thevimtutor
one at a time.Disclaimer
I am always happy to be shown a different perspective and to change my opinion. Please feel free to share any disagreement.