Back when I was still a VSC(odium) user, you needed to perform a small tweak to regain access to the quite useful extensions marketplace (in the sense of, paste the extension ID, see the same results as a M$ VSCode user*): There is a file named product.json which allows you to “regain” access if you populate it with the following values:
(Taken from my old dotfiles, so this may be outdated, not sure. Also, you’ll have to look up the location of this file, it will differ depending on OS. On macOS it goes in ~/Library/Application Support/VSCodium.)
*If you do not need this 1:1 identical functionality, you may try the Open VSX marketplace. But especially in a class setting, I found this very useful, since all the tutorials/instructions will work without needing adaptation.
tbh, one of the essential things vim gets right for me is that it's designed as a text editor, not (only) a code editor. I use it for so much non-code text as well, but it feels weird opening a coding tool for such things.
Have been a professional software engineer for 8 years now. Have yet to find a reason to use vim for anything (other than availability of course, but if nano isn't installed for some godforsaken reason I have other problems lol).
I've been in various forms of coding and administration for around fifteen years now. Despite trying lots of editors, I have yet to find a reason to use anything but vim.
Vim is a way more competent editor than nano. If you spend a lot of time editing files via ssh, vim is amazing. And when you get bitten by it, you’re infected. ;-)
I used to think this way. Until I found that with emacs you can edit any file on an SSH enabled computer remotely. Meaning that not only are you no longer constrained by what the computer has installed. But you can use your personality configured editor while editing that file. It's called tramp.
BTW, with Emacs you can use vim key bindings evil-mode, so don't stress about that.
Tramp is more featured, but if all one cares about is being able to edit remote files using a local editor, vim can edit remote files with scp too: scp://user@server[:port]//remote/file.txt
I tried tramp-mode at some point, but I seem to remember some gotchas with LSP and pretty bleh latency, which didn't make it all that useful to me... But I admittedly didn't spend much time in emacs land.
You can do that with vscode too. And probably many IDEs.
The only real reason for which you would need to use vim in such cases is if the target computer can't run the vscode server, which I've never encountered yet.
You'll be glad to know there isn't really any skill dependence. Just syntax awareness, as you get used to a new way of of writing certain code structures like indented curly braces for example. Tldr, almost exactly the same amount of effort whether you're coding for two weeks or two years.
I would argue that vim is fantastic for a lot of editing and coding tasks, just not all of them.
Where it utterly fails is with deep trees of files in codebases, like you see in Java or some Javascript/Typescript apps. Even with a robust suite of add-ons, you wind up backing into full-bore IDE territory to manage that much filesystem complexity. Only difference is that navigating and managing a large file tree w/o a mouse is kind of torture.
Once I got used to single-directory filetree browsing plus fuzzy finding, I have never been able to comfortably use a traditional filetree anymore. most of them are not designed for efficient keyboard use (vscode and intellij at least) and don't really help understanding the structure of the project imo (unless there arent that many files). For massive projects I find it easier to spend the initial effort of learning a few directory names and the vague structure using oil.nvim, and then eventually I can just find what I need almost instantly by fuzzy finding.
File-based navigation is often inefficient anyway (symbolic navigation is much better when you can), but if you do need it, that's what fuzzy finders are for. Blows any mouse-based navigation out of the water.
The only time a visual structure is useful is when you are actually just interested in learning how things are structured for whatever reason, but for that task, tree works just fine anyway.
The amount of time my classmates have spent dealing with vscode crashing, freezing, breaking, etc is way beyond negligible. And yet, I'm the weird guy apparently for preferring vim and GCC.
It always surprises me how complicated some of the editor tooling sounds in threads like this. Obviously once you learn how to use these things they are powerful, but how do people have the patience to deal with all of that in the beginning? This is coming from a guy who writes scripts constantly to avoid doing tedious, error-prone things.
Also I keep seeing people say vscode is slow. One of the reasons I switched to it is that it's insanely fast compared to other editors I used (even those with far-inferior featuresets) 🤷♂️
but how do people have the patience to deal with all of that in the beginning?
Whenever I was frustrated with a stupid undecipherable error message, I would just tweak my vim config a bit.
Within a few minutes, my rage at the error would be completely replaced with rage toward vimscript.
Then I would revert my vim config change, and return to the undecipherable error message with a fresh perspective. mainly relief that at least it's not vimscript.
Joking aside, I really did learn vim mostly during coffee breaks or while waiting on some long running build process.
My professor was always trying to get us to use vim or eMacs over an IDE to write our C programs. I’m sorry, I like using a mouse. I know, I know, blasphemy. I’m taking a shortcut. I’m a noob.
When I absolutely have to, I go for vim, mostly because I know a few of the key bindings for it, but otherwise avoid it.
I switched after development ended on the package manager I was using on neovim. I didn't at that moment want to simplify my vimconfig, so I looked into helix.
Helix highlights the action you take, so if for example, you are deleting 5 lines, you select the lines first then hit delete. Sometimes the vim actions end up taking fewer keystrokes though. And I still prefer some ways vim does things. And I don't always agree with the kakoune inspiration of helix (I haven't used kakoune, just going by what the docs say) - for example, movement always selects text which I then have to unhighlight.
But the biggest reason I stuck to helix was sane LSP defaults out of the box with minimal config. I was tired of having to fix LSP related bugs in my vim config after package updates.
TLDR: saner defaults for helix + lazy to fix my bloated vimconfig.
i have sort of done this. the main thing is that the reversed object-verb command model just... latches onto your brain. this is from kakoune of course, but it just makes a lot of sense coming from vimland. multicursor is also nice because it removes some modes, meaning there is less state to keep in your head. finally, the plug-and-play nature of helix means you can have an lsp-enabled environment from the word go, with no configuration.
Immediately after you install helix, you can start working, no config required. It's really nice.
It also has OOTB LSP, unlike in neovim where you have to setup manually for each installed LSP, helix just detects it. I also personally think it has better keybinds than neovim.
But it still doesn't have a plugin system, and it's quite opinionated. They're both amazing, and great options. Just depends on what you want in an editor; customizability, or do you want it to just work.
the vim plugins are so bad... they only support the super basic stuff, as soon as you want flags with your search or chaining of commands they are useless
vis is such a neat idea, i followed it years ago. any good plugins yet? i really love the structural regex workflow but since kakoune/helix hijacked my muscle memory i would need more support for external tools to go full vis...
The thing about good plugins is relative - I just have vis-pairs, but I am not a seasoned developer (I'm not even a formal developer/CS person, just a graphic designer doing frontend and a tiny bit of backend!) so I don't really miss anything else. vis' phylosophy relies on the unix-as-ide concept, though. Still I do know that there is stuff like a LSP plugin.
What I really miss from vim is buffers. vis still does not have a client/server feature so you still have to rely in its allegedly temporary split panes kinda solution. It seems vis' main developer got some personal issues going on so volunteers are doing some little changes here and there but with so few manpower it doesn't seem like those needed big changes are happening anytime soon. Hence why I'm trying to spread its gospel in hopes to get people interested in contributing to it.
Nah. As a die hard Vim user, I can explain all day long why a flexible shared common editing experience across a team is a great idea, and why VSCodium is the obvious choice.
And I'll explain and agree in principle all day long from the familiar beloved comfort of my Vim editor.
I don't mind Vim, it reminds me of my years using EDT on Vax/VMS systems in the 80s and 90s. My fingers knew all the function keys so well, the UI was almost invisible. But more recent years of using Windows because of work have ingrained VS and VSCode the same way, and I like the feel of the mouse.
I feel like I need to learn VIM at some point because various system tools have a habit of using it. (rpmrebuild and the man pages come to mind) It just comes up here and there even if you don't care for it.
The comparison is bad. It's more like comparing a kind of crappy car to a nice unicycle once you factor in UX. Not everyone likes to punch in key combinations so complicated it's making game cheats look simple in comparison.