Tbf, how many plants are carnivorous monsters that dissolve your flesh
And how many animals can melt Rocks into Magic snap Rocks camouflage them and plan months in advanced
And how many developers can
export EDITOR=nano export VISUAL=nano
It’s wild to me that people that people use VIM in professional software development settings (especially front end).
Like, I get it if you’re a sysadmin who’s spending all day in command lines and ssh terminals, but when you’re working on high level, user facing software, it’s just absurd to have the mindset that a command line interface will be better than a command line interface + a graphical interface.
GUI || command line
, objectively provides you with more UX tools and ways of presenting data and interactions to the user, than justcommand line
. Everything you can do in VIM, you can do in VSCode running VIM in a terminal, but not the other way around.Maybe it’s because I got my start programming 3d modelling software, but there are fundamentally things that command lines are bad at representing.
It’s more wild to me that people use VSCode over any other IDE.
Name your preferred IDE so they can be compared.
to piss both audiences here:
Emacs in graphical mode
This is the editor wars equivalent of taking your shirt off and yelling “come at me bro!”
It’s literally just a basic part of debating something. You say X is bad, I say ok, then what’s your alternative?
I’m this case apparently it’s a clown emoji. So clearly they have a very valid point and definitely weren’t just making an empty pointless comment cause it sounds edgy.
🤡
VSCode is not even a true IDE like, for example, VS itself.
VS Code is not an IDE
is the dumbest most pedantic argument.It is a text editor explicitly designed to have plugins that turn it into whatever IDE you want it to be.
i.e. it’s an IDE that you get to specify yourself rather than being locked into the exact toolchain that the IDE developers think is best.
You have overdone the pedantic part, so I will do the same: GUI has objectively way more visual noise, so exactly in professional software development setting I prefer using NeoVim with plugins, configured by me for my convenience, because I have no intention of spending any extra effort, and more importantly, thought, on whatever the IDE decided I must need. I want to think about the task at hand, not memorize the finger-twisting magical shortcuts or mouse-clicking several menu layers to do one damn simple thing
GUI has objectively way more visual noise
Nope. You can open up VSCode and just have it open to a terminal window if you want.
A GUI + Terminal gives you more options than just a terminal. It’s not complicated and it’s not arguable, one is a superset of the other.
I am not a programmer but your line of argument begged the question, “Are more options better, more efficient/effective, etc. or otherwise desirable?” Sure, if the only criterion you are trying to fulfill is “have as many options and different ways to complete the task at hand as possible,” you are correct that you can emulate a CLI within a GUI so you can accomplish a task both by clicking or typing instead of just typing.
However the parent you are responding to stated that having these additional choices (what he terms as “noise”) is clearly not effective for him so he disagrees with your original premise. Apparently for them “less is more” which is certainly understandable.
Sure, if the only criterion you are trying to fulfill is “have as many options and different ways to complete the task at hand as possible,”
Except that’s not what I’m saying.
I’m saying it’s important to have the right tool available for the job.
If you limit yourself to VIM and command line interfaces, it will mot matter if a GUI is the right tool, it’s not in your tool chain, you can’t use it.
i.e. I don’t use VSCode because it provides me with multiple ways of viewing git’s branching history, I use it because it provides me with the better way of doing so. And when the better way of doing something involves using the command line, it lets me do that too.
People insisting on using the command line for everything is like a carpenter that only buys a circular saw and refuse to buy any other saws. Like yeah, you can do almost any cut with a circular saw, and it’s not a bad place to start, but theres a reason professional carpenters who need to do repeated cuts quickly, accurately, and in a way that is teachable to others, don’t limit themselves to a single type of tool for every scenario.
People insisting on using the command line for everything is like a carpenter that only buys a circular saw and refuse to buy any other saws. Like yeah, you can do almost any cut with a circular saw, and it’s not a bad place to start, but theres a reason carpenters don’t limit themselves to a single type of tool.
You’ve just given the usual argument for learning Vim.
Having mastered both, my lack of patience for GUI tools is just that: impatience. I can use any tool, but I reach first for the fastest.
Ok, cool beans bro, try and write 3d modelling software with just a command line interface and you’ll quickly see how a typewriter’s format for displaying text isn’t the fastest for every programming task.
-
that is not VSCode default, so nah. once again: I have no time for battling against software
-
and if I do not want the GUI part, how come it surprises you that I do not use that superset?
and if I do not want the GUI part, how come it surprises you that I do not use that superset?
Go ahead and represent an arbitrary 3d shape using the command line, suddenly you may realize that a typewriter’s interface isn’t the fastest for accomplishing every programming task.
Regardless, you can be happy with a limited subset of functionality and trying to cram every interaction into text, that’s not an argument that that way is better or that a new dev should go that route, just that you can get by using that method.
Lol I am not making 3d shapes in the first place. Anyway, here ya go: 1,2,3
4,5,6
7,8,9
10,11,12
Do you need an explanation for that?
K, now give me the longest edge and it’s displacement relative to the x axis. Then rotate the shape until that edge is roughly 33 degrees off the z axis.
Oh wow, look, suddenly it may be helpful to have a way other than text to draw and visualize things.
It may be, but really it doesn’t even matter to me. I will choose the tool that can do that using command line anyway
It’s wild to me that people that people use VIM in professional software development settings
Ya, sure. wild that professional software development does not begin and end with 3d shapes. Great worldvew, thanks
My worldview is that it’s wild to choose a dev tool chain incapable of drawing basic 2d shapes, when you have ones available that can do anything.
So I re-state the same n-th time over: I, and many other devs, have no need to draw anything. So I, and many other devs, will choose whatever works for us, and there is exactly nothing wild in doing so
-
Like, a GUI plus command line, objectively provides you with more UX tools and ways of presenting data and interactions to the user
My long list of vim plugins and adhoc macros would like a word. I don’t doubt VSCode can do something similar, but I love that I can script vim to do basically whatever. Also, it feels much faster to not need to touch a mouse at all.
I’ve posted a reply that basically covers my feelings on this here: https://lemmy.ca/post/41497148/15556917
you lost me at that ‘but not the other way around’ part
If you open a repo / folder in VSCode, you immediately have a terminal window pointing to that folder that you can execute any of your VIM or other command line programs in. You also immediately have a graphical file browser that’s always available in a pane to the side if you want, a visualizer of your current git branch and history, tooltips and the ability to hover over things for more info, panes that can preview images, pdfs, 3d files, assets etc, tooling and plugins for things like your dev servers / kubernetes / docker so that you can immediately see what services are running in what state, rich debugging, etc.
Fundamentally, I just don’t understand ideologically insisting on using the command line for everything. There are times when keeping it simple and text based makes sense, and it’s almost always necessary as a fallback, but if you have the option, you can represent things faster and more cleanly with modern graphical interfaces.
Like just compare the command line version of your git history:
With the Git Graph extension version in VS Code:
The Git Graph extension is built on top of those git CLI commands, but it’s an actual GUI that let’s you represent your git history in a much more readable and scannable format, with quick and immediate access to related commands like viewing the files that were changed in a commit, or jumping to specific commits and branches.
Ignoring the related workflow improvements, even just from a pure graphical standpoint, if a developer honestly cannot comprehend why the human brain more easily processes stuff like a single connected git branch like the above, compared to a bunch of disconnected pipes | and slashes \ on separate lines, then I feel like they need more design training, or perhaps they’ve just evolved into such pure text based beings that they can no longer comprehend how normal people’s brains work, but either way, it’s not going to tend them towards good frontend development. I’ve worked at MAANG companies and I’ve seen the internal research on how much of a difference a slight feeling of being overwhelmed can make towards someone’s enjoyment and usage of software, I don’t see why that’s so controversial or unexpected in some circles.
Like at work, if a developer wants to use VIM and command line tooling to do their job and has a setup that lets them work as fast as someone using a graphical IDE, I have zero issue with it, but the default Dev Environment that we’re going to setup and document is going to use something like VS Code that can do more OOTB without a huge amount of learning CLI commands and workflows.
While I agree with your general idea that there shouldn’t be any dogmatic insistence that terminal environments are superior and everyone should use them. But the points you’re bringing up tell me that you don’t actually know how to use a terminal environment for development which makes your point equally as dogmatic as the terminal purists.
But the points you’re bringing up tell me that you don’t actually know how to use a terminal environment for development
In what way? That you can have multiple terminal panes open to accomplish a small portion of the above?
Getting an automatic terminal window when you start up vs code is no different having two panes in tmux, one for VIM and once for terminal. You can get a visual project tree representation in VIM by using neotree plugin. Your git doesn’t need to look like that, you can use lazygit. The only things you can’t do within a terminal are reading the pdf or checking assets etc (but I personally wouldn’t look at those things within vs code either), everything else you can do just as easily within the terminal without it looking like the image you gave.
I gave you the benefit of doubt by stating you don’t know how to set up a terminal environment. But if you’re going to be adamant about knowing what you’re talking about then you should also know you’re deliberately misrepresenting the alternative to make your arguments seem more valid.
Getting an automatic terminal window when you start up vs code is no different having two panes in tmux, one for VIM and once for terminal.
Yes it is, and I honestly cannot fathom how you cannot seem to comprehend the difference between text, and an actual pleasant to use and look at graphical interface.
Lazygit looks exactly as trash as the OOTB command line git. How do you not understand that the human brain processes a smooth connected line more easily than a pseudo line broken up by the line space height, made out of pipes and slashes? This is like product design and UX 101.
Again, VSCode does everything VIM does. Not vice versa, one is a superset of the other.
Just as dogmatic as the people you complain about.
That you can have multiple terminal panes open to accomplish a small portion of the above?
Yes. Obviously. Two conclusions available to you are, either CLI developers are idiots, or they have tools you are unaware of.
The answer to “how can anyone work this way?” is out there, if you’re really interested.
No, the conclusion I’ve been saying is that CLI developers are smart people who have spent a long time memorizing commands to get fast at things that can be done quickly and intuitively through basic 2d graphical interfaces.
They’re now either in a situation where the gains from learning the new process aren’t going to outweigh the costs (though still doesn’t mean anyone else should follow their path), or they would, but they’re just stuck in their ways because of sunk cost fallacy.
I agree. I hate using a mouse and generally avoid it, and still the productivity gains I get from using something like VS Code versus Vim with plugins to the max are impossible to ignore.
When I’m juggling like 3 development contracts at once, it’s dumb of me to not use every little gain in productivity possible. I don’t have time to spend a day recreating a plugin to my liking in Vim when something already exists that gets me 99% of the way there. I don’t care about the extra RAM use because I have plenty of that.
I think some people just like to die on this hill out of principle, and that’s whatever, more power to them.
Everything you can do in VIM, you can do in VSCode running VIM in a terminal, but not the other way around.
You would sure think so, right?
But the VSCode plugin ecosystem still lacks some features available in the Vim ecosystem, and (fl just for example) LazyVim has most of the features available in VSCode.
At the end of the day, the biggest difference is speed. Even very brief unexpected delays can break my concentration. While VSCode is no slacker, it still has some delays, probably mainly because it’s still JavaScript under the hood.
Once there’s a GoLang, Rust or C port of VSCode, I may well switch permanently.
But the VSCode plugin ecosystem still lacks some features available in the Vim ecosystem, and (fl just for example)
Isn’t that basically the same as Command Shift P and / or the search feature?
At the end of the day, the biggest difference is speed. Even very brief unexpected delays can break my concentration. While VSCode is no slacker, it still has some delays, probably mainly because it’s still JavaScript under the hood.
Once there’s a GoLang, Rust or C port of VSCode, I may well switch permanently.
I can 100% understand how big of a deal speed delays can be, but at the same time, not to probe too hard, but what are you experiencing delays in? In all honesty waiting for ohmyzsh to start, or waiting for a git pull to run, takes far longer than any task I can think of in VSCode. Files open faster than notepad, the file browser is fast, the shortcuts and commands are fast, I honestly haven’t experienced any slow downs with it anywhere, and I’ve used it with monorepos that are TB in size.
Fly in fly trap:
:q!
Recording @q
I thought flies use
ZZ
for the onomatopoeiaSo
ZQ
comes from the sound of a fly being swatted?
But if you accidentally typed
a
ori
, press ESC first.
The best thing about Vim is that despite having all the features of a modern IDE it starts in 0.1s and you can start editing right away while the code data is loading asynchronously.
The worst thing about Vim is that… just kidding, there’s nothing bad about it.
Vscode I’m always like all right let’s code… Ah shit, the “what’s new” window has popped up again in the middle of my typing…
I never close my IDE or reboot. Problem solved.
Also had to update virtually every time I touched it and half the time those updates would break it so I had to reinstall. I didn’t use it on a daily basis or anything and it’s been a few years so maybe they fixed that but it’s why I don’t currently use it (along with the fact that it’s a microsoft product and I’m trying to stay away from all their shit as much as possible).
0.1s is way too long, you need to optimize your startup time. /s
There also IDEs that start instantly.
They don’t ship a whole browser though.
People meme about “q!” but it is super helpful to have that extra step, because sometimes your fingers are moving faster than your brain is. That quick switch back-n-forth vim - gcc - ./a.out loop and my probably ADHD mean that vim saying, “hey, remember you haven’t saved this yet” is a godsend.
You are right about the best part about vim - you can work as fast you type.
It’s a trade off for sure. I think the area editors like Vim totally win in is when you need to ssh into a server and edit something. I think it will always exist because of this use case
I can ssh in with Krusader and edit from Krusader’s GUI editor. I would probably still do it from the terminal because it’s faster, but it’s good to have more than one way to do things.
Is it bad that vscode is my favorite ssh client
I remapped the power button of my computer to whatever that series of keypresses is that exits vim.
that series of keypresses is that exits vim
One of the great mysteries of the universe. However, I can confirm that my standard power button also exits vim.
That’s really smart. That way if I ever figure out the command to exit Vim, it’ll behave the same as my current method (powering off the PC.)
Emacs with evil mode
So kind of off topic. Like 15 years ago emacs vs vim split in engineering was like 50-50. Now I see more like like 90-10 with vim winning. What happened? I always assumed they are equivalent more or less.
Emacs has scripts that can do almost anything. If you wanted to, you could pretty much replace your graphical desktop with Emacs and still do pretty much everything you do. vi is an editor.
There’s been a lot more evangelism about emacs lately.
Also the fact emacs has doom and spacemacs to ease new users in while vim drops you into
:
and tells you to swim means that it’s easier for emacs to get new users.
Ah! I loved using Doom EMacs for a while!
… but alas I came back to my initial love with Neovim 😜
Yeah, this is the best solution at the end of the day for most would be text wizards, emacs is beautiful, vim keybindings are beautiful.
lisp makes my brain relax
Do you mean Neovim?
Surely you aren’t comparing a flat text editor to an IDE that has language server support, debuggers and refactoring tools?
Vim and VS Code are both text editors that can become IDEs with plugins. You can use vim with language servers if you want, as there are plugins for it.
Thanks, I wasn’t aware of that!
Makes sense though. Vim plugins exist so anything is possible. Neovim having native support for LSP and DAP makes it a lot easier though.
I only use butterfly flaps that move magnetic needles next to my HDD.
Like a real programmer would.
I do the same with moths as they are more active at night
You need a bigger lämp brøther!
I like VSCodium, a vscode build without ms telemetry and such
sounds interesting enough to try, thanks! :D
it’s identical to vscode, except that a few extensions don’t work (notably, intellicode and the ms c/c++ extensions)
HAHAHAHA I know the secret passcode to escape!
Incidentally, it’s ctrl+]. But I remap it to ‘kj’, and somehow have never typed ‘blackjack’ in all my years of using Vim!
I fucking love that 😆
So… we meet at last, Doctor Evil!
I just use cntrl-z and then
kill %1
Seems like overkill to escape from insert mode. Then you just have to open vi again!
Wouldn’t the one that ops you into telemetry be the trap?
I used to know a developer who wrote all his code in Notepad. This was around 2005 or 6. We had just starting to replace our legacy ASP code with ASP.Net, which he was determined to do in Notepad. I was gone before I could see how that worked out.
Good luck exiting that!
ctrl-x. ;)
oh no no no
it’s the x button on the top right of the window
laughs in i3
The trap is that you should use vi. Don’t wuss out.
Too much pain there, sorry.
Yeah. A lot of people who use vim don’t know how to use the full power of vi. They’ll often install plugins to do things they could have easily done with built in features!
The one area where regular vi sucks though is undo. If you want multiple undo then you’ll have to at least go with something like nvi.
imagine thinking a non user will read this and want to use vi/vim
vim users have the same energy as latex users
I don’t really recommend people learn vi/vim even though I’ve been using it for years and love it. It’s a very personal thing and the time you invest into learning it might not be worth it if you don’t use its features enough.
I think it’s dependent on your personality and neurodivergence/neurotypical characteristics (I don’t know a word that encompasses all of this). If you’re the type of person who gets really annoyed/distracted by any sort of “friction” in the editing process then I think you may be a good candidate to learn vi. Otherwise probably not!
Edit: by the way I’m also a LaTeX user!
I sometimes wonder why some programmers don’t use vim. Aren’t they lazy enough to be bothered about unnecessary work and “friction” you have to deal with when using ordinary editors. I’d rather do the interesting parts of the job and command the computer to do the rest. Of course the communication with the computer has to be as concise, as effortless, and as easy as possible.
For me (sysadmin actually) it’s because what I’m doing is either simple enough that I can use Nano (editing simple config files) or complicated enough that I’ll want a full fledged IDE. I use VSCode and it handles remote files really really well.
Although I have learned a little bit of Vi/Vim because sometimes thats all you have.
Plus if you’re doing major changes (like more than editing a line or two) you shouldn’t be doing that on a production server anyways. Like if I found out an engineer or dev was primarily working directly off of the server they would probably be on their way out the door. Uptime is worth way too much for that nonsense.
vim user
LaTeX user
When you go to the wrong side
I prefer to call it the dark side!
Come to the evil side, we have org-mode
I’ve tried. It breaks my brain too much. I’ve even used emacs without evil but the unholy combination just does not work for me.
I have the same problem with all vi/vim emulation modes in other editors. There’s always some incongruity that messes me up.
Vim and VScode are my favorite code editors but I admit that Vim is better :]
Knowing how to actually navigate vim is worth learning. Especially if you work in embedded systems where a lot of the time you’re on setup that is running barebones and likely just has vi as a text editor.
But I used VSCode for dev work with the VIM plugin.
vim was such an unimaginable improvement over nano for doing stuff on linux servers. Having an in-shell-editor search-and-replace function alone is worth everything you have to do to learn vim.
And after I was comfortable around vim because of all the “training” on servers, I just switched to vim fulltime. No more GUI editor for me!
Nanos search and replace is
Alt+R
as far as I rememberHa, that would’ve helped me a few times. Good to know!
Still, I wouldn’t switch vim for nano ever again. nano is a good and easy start, but I think if you do more than just basic editing of a few files every now and then, learning vim is the way to go.
vim is pretty customizable, widespread and it has been around for quite some time after all. If you think you need it, somebody most likely already made it as a vim-plugin :)