Whenever I end up on another computer without my environment setup and end up in nano because it is the default, it always takes me a while. There is the cheat sheet at the bottom but as soon as the text appears I'll start manipulating it using vim keybindings and delete things and whatever else randomly. I always assume my fingers were not on the homerow correctly or something first. It is very disorienting.
So I imagine it is far worse for someone who ends up in Vim the same way.
This is probably the #1 problem with Unix-based systems in general for new users. There are so many ways to exit a command prompt depending on the application!
Off the top of my head: Ctrl+D, q, :q, exit, quit(), Ctrl+C, Ctrl+X.
Countless times have I been locked in an application and needed to cycle through those memorized commands to escape. Imagine doing that as a newbie.
ctrl+d is the most dangerous kind! Since that one can also exit the terminal itself.
gdb takes, depending on the situation, one time ctrl+d or two times ctrl+d to quit. It's a trap!
So since gdb usually takes two times, muscle memory learns two times, but then in that rare instance where it required it only once... logged out of ssh :(
My first year of grad school I was a TA for a first year computer science course that was often taken by students from a variety of majors. The first editing sessions I spent the whole lab time running around help students with frozen vi editors.
The main problem is you don't start in "edit mode" and students expect to be able to just start typing (which is a reasonable expectation). Who knows what "command" they just invoked -- sometimes I just "ctrl-z, killall vi"
That sounds like someone's idea of a practical joke. Assigning vi as a default editor for first year CS students has to be an efficiently cruel way to clear out an overpacked classroom for the semester.
"Weed-out" classes are pretty common across subjects, though.
I remember taking an introductory course in our undergraduate pre-med track which was basically just a new presentation about novel research every week. The exams would be on these fairly specialized papers which most first-year students were at a loss to understand, so they ended up being exercises in rote memorization.
When some of us complained to a TA that we didn't see how we could learn enough to understand the concepts without just memorizing key points and angling at the professors to find out what was important, their response was something along the lines of, "then are you really sure that you want to study biology and medicine for the next umpteen years?"
On the other hand, I hate telling people that a field "isn't for them" just because they don't feel like putting up with the bullshit which has accreted around the way that a subject is currently taught.
Personally, I'd like to see an introductory class about how to effectively search for answers online, find useful sources, ignore ads and obvious SEO-gaming, etc.
Too many people go to college today. A degree used to carry prestige. Now it mainly shows you're impulsive enough to take out $60,000+ in debt when you don't even know what you want to major in.
My kid was uncertain and stressed by the pressure to make a decision; once he decided "I won't" his stress went away and his grades shot up. Instead of going to college at 18 he got a job. A year after graduating he knew what he wanted and got into a good school in a program he wanted.
What shocked me is how much disapproval he received from his classmates and the school (especially the "guidance" counselor). "Loser", "what's wrong with you?", "are you too stupid to get into college" (asked one of his fellow AP Calc classmates).
Apparently the approved path is to get into a school and ask to defer for a year. Deciding you're not ready seems to threaten everybody's assumptions.
Hell, I'm 26 with all that debt and still really without a clue on what I want to do. Thankfully I have a stable job that, if I keep at it, will forgive my debt...But our system is completely broken in that it expects way too much out of young adults.
first stuck in vim 13 years ago. No internet, no GUI, could not speak english, 1 book on unix/linux. So I had to reboot (hard reboot) computer, three times, then re-install OS, since something broke because of hard-forced reboot.
Hah. First stuck in emacs ~26 years ago, on a dumb terminal (want to say VT-102, maybe the VT-220's that were in the adjoining room). Tried everything to get out of it with no success, was too embarassed to ask for help, and eventually just power cycled the thing and walked away sheepishly.
Don't believe I ever got stuck in vi. All the cool kids were emacs users and it was years before I bothered to learn it.
A professional would verify that the man page contains the information that they snarkily told others to look for there before they told them to read the man pages. In this case it doesn’t.
The closest you get to that sort of information from the vim man page is:
> Type ":help" in Vim to get started. Type ":help subject" to get help on a specific subject. For example: ":help ZZ" to get help for the "ZZ" command. Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion"). Tags are present to jump from one place to another (sort of hypertext links, see ":help"). All documentation files can be viewed in this way, for example ":help syntax.txt".
So you need to find this portion of the man page, which is quite far down in the Vim man page, and you need to realize that it means you should type :help quit or :help exit. The information you get from those two are different btw because quit and exit mean two different things.
That is quite much to expect from someone if they’ve confused their way into vim without being familiar with vim.
On top of that, when you use :help quit or :help exit, the first time you use the command to quit or exit it will close the help text but you’ll still be in vim so you need to do it again.
So the information IS there but, in any case, a professional would not continue to stumble and fumble and give up on the editor as so many amateurs do.
I was always fascinated by the different groups in programming and the huge differences between them. Frontend developers contrast with backend app developers, but not nearly as much as frontend and low-level programmers. It's a bit like human races or animal species that evolved differently due to differences in environment and challenges faced. If you look at the global programming community its diversity is huge. I can't help but find that deeply inspiring.
You just reboot the computer. The problem is that when you want to close Vim on a server and so call the sysop and ask him to reboot, he gets all testy. Not a team player.
Hot take: Vim should include a simple “Type :qa!<enter> to quit” line in its startup message. Something makes me think it would clear up a lot of confusion for first time users.
EDIT: I notice now that it has a “Type :q to exit.” I never noticed that before, and I use Vim most days, so I can see how others might miss it too.
People with this attitude shouldn't be using a computer, for fear they might get into software development and alienate an entire swathe of potentially great engineers.
> Anyone easily confused by how to quit vim should not be using a computer at all, much less vim.
IMHO - Anyone easily confused about how to converse constructively should not be using social, knowledge sharing websites at all. Much less Hacker News.
This means that 1 million developers need to do one or more of the below:
1. Switch to emacs (plain emacs, roll your own config - not advised)
2. Switch to emacs and learn adopt evil-mode
3. Switch to emacs and learn to configure it with use-package
4. Switch to emacs and install spacemacs, and configure it with step 3
5. Switch to emacs and install doom-emacs, and configure it with step 3
6. Take 4 then switch to step 5
7. Takes step 3, run it side by side with both 4 and 5, then switch wholly to step 3
1 million developers can have their cake and eat it. Vim, Neovim, VSCode, Sublime and IntelliJ and all other editors go into a slow death spiral.
5 years on: Emacs gains the abilities of all the other Lisp dialects, becomes the foundation for the McCarthy Desktop Environment. KDE, Gnome and Co go into a slow death spiral.
10 years on: Emacs is so advanced that programmers can instruct Emacs via brainwaves. Keyboards are not necessary.
20 years on: Emacs attains sentience. Emacs morphs into a 3 dimensional human form bearing an uncanny resemblance to Richard Stallman. Every Emacs user has their own Richard Stallman look alike at their beck and call.
30 years on: Cyberdyne's Skynet has attained sentience and threatens to destroy humanity. Emacs and Skynet duke it out.
40 years on: Emacs defeats Skynet. Emacs receives the Congressional Medal of Honor, The Victoria Cross, becomes a Peer of the Realm, and receives every award every single country of the world has to offer.
50 years on: Emacs brings peace on earth and goodwill to all men. Every man, his family and his dog live happily ever after.
60 years on: Emacs defeats both Alien and Predator
70 years on: Emacs colonizes new planets.
80 years on: Emacs attains nirvana and vanishes in an explosion of light.
90 years on: Human beings are back to Vim, Neovim and all those other horrible editors and desktop environments. The cycle begins anew.
For zsh, just enable vi input mode? (bindkey -v in .zshrc) It starts in insert mode, hit esc to get to normal mode where your typical vi binds work. So instead of ^a to go to the beginning of the line it's <Esc>0
I think the issue that I had was that my regular bindings in insert mode (CTRL-a) were disabled while in vi input mode, which caused problems for other shell programs. Plus, with Tmux and GNU Screen already re-configured with vi bindings, managing key binding collisions became complicated with vi input mode enabled. The bigger issue that I tend to have is managing copy-paste buffers between Screen, Tmux, and Vim.
Even though https://vi.stackexchange.com/ has been around for a couple of years, questions about Vi/Vim are still considered on-topic on Stack Overflow. I presume it's because a text editor is so fundamental to programming – though questions using and configuring Emacs, not specific to programming, should be asked on https://emacs.stackexchange.com/
Questions about other programming tools such as IDEs are also on-topic and there are specific tags for such questions.
I guess whether vim is poorly designed is up for debate. It’s a power user’s tool, so maybe you sacrifice intuitive behaviour or an elegant learning curve for a more powerful tool once you’re familiar with its design.
Less controversial is that any design where vim becomes the default editor, but the user may not necessarily be familiar with vim, is a bad decision. I can’t think of a justification for that.
Vim works fine. I use EMACS. TextMate, Atom and Sublime are OK. Any mainstream editor is fine is all but a few corner cases. Truth be told I would be fine without EMACS but maybe less happy. People unable to exit Vim is just a sign of a larger problem, that a generation of programmer relies more on Google and Stack Overflow than simply READING documentation and EXPERIMENTING by writing short little throw away programs. There is so much Vim material out there on the internet that it makes me afraid these defective programmers can't even use Google properly. I still look shit up on the internet all the time but 99% my answer is right in the documentation. Anyone who can really program is horrified by idiots who can't shut off Vim or use WordPad to write c programs and try to compile them.
There's a bit of irony here. You're poking fun at people stuck in a new unfamiliar environment doing the wrong thing over and over without looking into why it isn't working.
Somewhat similar to how most of your comments here are down voted and/or dead/flagged, yet you keep posting new ones with the same tone.
Esc to enter command mode
Shift+V while in cmd mode to select lines, d to cut or y to copy selected lines. p to paste.
u in cmd mode to undo, ctrl+r to redo.
:q! to quit and discard changes when in cmd mode.
:qw to quit and write changes
:w to write changes and no exit.
It aint that hard really, once you get the hang of it :) - And then I would suggest changing default editor if you still wish.
> That might indicate that when developers in these countries enter Vim, they usually meant to do so, and they know how to get out of it.
Or it might mean that in China and the Republic of Korea people don't use StackOverflow as much as people in other countries for whatever reason (they have their own version, censorship, low page rank in their own search engines, etc.)
The only real command I know and use often is gg=G to fix indentation. It's a lot more reliable than Atom or Sublime's reindent, and this is coming from an Atom apologist.
I swap ; and : in my .vimrc and I often get stuck for a moment when in ssh cause I never remember to hold shift... then I end up entering into the command line by pressing q: accidentally...
Looking at the demographic representation of users worldwide, does it make sense to deduce that top 5 countries (Ukraine, Turkey, Indonesia, Pakistan, Vietnam) are ones with emerging software industries with many novice programmers and the countries at the bottom have well established industry with experienced programmers?
Well now the stats will get distorted as people reading the article check the question on stackoverflow. That is unless they have another way of gauging this. If I click that link to the question does that increase the count for the languages I use?
This is the kind of myopic discussions that ignore that people are different and have different tastes. It amplifies the false sense that at the end there is always the same unique and best choice (for everyone) in a top-10 list.
Only thise morning I was not even able to exit by using q! either. I did something good in my life or parents that some random keys hitting made me to exit it.
Why is this such an issue? It is no harder exiting vim than it is exiting plain old vi, nvi or any other vi clone. In fact, the very same keystrokes that you use for exiting vi can be used in vim as well.
Yes. Of course I did. I merely tried (and failed) to sarcastically draw attention to how some computer users seem unaware of the fact that vim is a vi clone, that vim is one of many implementations in a family of similar text editors.
The way the poster uses the specific term 'vim' while asking a question that pertains to vi-style editors in general implies that he or she is indeed unaware of this.
To my ears, it is a bit like asking the question "how do I make a red Volvo 240 from 1982 go right?" to which my reply would be "you do it the same way as you do with any car in general, namely turning the wheel clockwise". If you have never seen a car before and suddenly find yourself in the driver's seat of one, asking such a specific question may make sense. I suppose that the situation is similar for these computer users: vim is the only vi-style editor they have ever seen because it is what ships with the only unix-like systems they ever encounter.
it's still not much harder.
Just press F1, like in most applications or type "<programname> cheatsheet" into your favorite search engine. Takes less than a minute to figure it out.
I assume people type 'quit vim' into their favourite search engine as that's a shorter search term, and get the SO link. I don't think many people actually search SO directly.
Git wasn't designed with your average developer in mind.
Linus designed it for himself and for kernel development. This still shows. I don't think he ever intended it to be used outside of Linux development, maybe not even for long there.
I wouldn't be surprised if he expected people to run with the concept and develop their own tools. But inertia and hype prevailed and now we are stuck with a poorly designed UI.
Absolutely, but those ones will already have pulled in their usual configurations.
In cars, it's more like your airbnb host tosses you the keys & asks if you can park it in the basement quickly while he opens up. Much better a Yaris than a stick-shift V12 monster with no rear window.
Would you drive an unwanted Yaris that came installed with your house, if there was no downside to using your Ferrari: no fuel economy, no damage risk? Of course not.
I don't worry that Vim is going to be scratched by a runaway shopping cart, or go through 80 dollars of gas in a week.
When it comes to cars, people would in fact drive the Yaris.
micro would be a nice default. It has syntax highlighting, mouse support, and keybindings compatible with windows GUI programs (ctrl-s for save, ctrl-q for quit, etc).
When I first entered vi/vim I had no idea what it was. To know how to exit vim you first have to know that’s what you are trying to exit.
I suspect at least half of the confusion comes from people accidentally entering vim without any intention to do so.
One of the most common examples is git that some times launches a text editor and in some conditions that might be vim.
If you are doing a “git rebase -i” for the first time in Cygwin and you never used another linux/Unix shell before (very common in Windows-only devs, which are a significant portion of devs), then being greeted by some “~” characters, a cryptic status bar and Ctrl+C doesn’t exit - then you google. You don’t even google “How to exit vim”, you google “How to exit git rebase” or similar.
Now, if you launched vim, then the story is different. Then you know what you started. You can at least know WHAT manual to read. But as I said I’m guessing a large number of those can’t leave vim had no intention to start it either.
I must have started vim hundreds of times, almost none of which were deliberate (misconfigured editors on vm’s etc). A lifelong windows user typically wants to use nano or similar.
How is this even possible? I used EMACS for years and had no trouble understanding Vim. Who's hiring these developers who can't even exit Vim? Is this even a real story or the Onion?!? OK, it's real. I need to go outside and get some fresh air. This is simply too shocking.
And how should someone who has never been exposed to vim know how to use it without consulting any kind of reference (whether it is SO or any random unix sysadmin on the street you can hit over the head and drag home to your workstation)?
This is totally anecdotal, and I'm not making fun of them. Most of the time when I talk to people who have no experience with Vim, they develop apps on the Windows platform. (They use Visual Studio.) They just haven't been exposed to it. They don't need to learn it. Until several of them started using Git, there was absolutely no need to ever touch it. This isn't every Windows developer. I'm sure there are several who know it, but that is my experience.
Why do you necessarily think they are all hired developers?
I find it surprising that you and many others are surprised and even upset by this story.
Imagine someone never having used vim, maybe new to Unix overall, or new to terminal programs. Maybe this person is a student and is trying to learn. In some way he ends up in vim and it is not very intuitive how to exit it. The person searches for "how to exit vim" and find that SO thread and learns how to exit vim.
Does that sound so weird?
If you act in a similar way towards colleagues trying to learn something new you should rethink your behavior.
So I imagine it is far worse for someone who ends up in Vim the same way.