Hacker News new | ask | show | jobs
by ohthehugemanate 2310 days ago
I'm a terminal jockey and an i3 junkie, and for a long time vim+extensions+Unix tools were my IDE too... but ultimately there is a difference between a powerful editor used like an IDE, and an actual IDE. there are lots of features which get first class.attention in an IDE, which were just kludgy hacks in my beloved vim... and some that simply weren't possible.

For example, VSCode Remote container development. The IDE is split into client and server portions, with the server living in a container (or group of containers) of your definition. So your host environment is clean, but you still get tools that are a PITA or impossible to run remotely, like certain debuggers or linters. And best of all, the configuration is saved in the repo. Commit it, and everyone in your project gets a "one button option" to use the same developent environment as everyone else.

It's not IMPOSSIBLE to do something similar with vim+Unix. Docker compose and enough automation will get you most of the way there. But not without a tremendous amount of work and time spent maintaining it for everyone's unique environment. And certainly not in a fashion that i could call "one button".

There are a few features like that. So I stopped spending hours (and hours and hours) maintaining a collection of hacks that approximated a modern development environment, and started using software for what it was designed to do. Vim is still my superpowered editor of choice, but when i'm working on a significant codebase, I use an IDE.

4 comments

I tried VSCode several times, but always came back to vim. I think there is a fundamental difference to a purely terminal based workflow.

Learning a new commandline tool has almost always been something that paid back for years: CLI cares much more about backwards compatibility than a GUI because it's used in shell scripts. And that's another advantage: you are only one step away from automating stuff. A homogeneousness set of keybindings over all applications are just the icing on the cake.

I use both VSCode (in Vim mode) and Vim+Tmux in my work these days.

VSCode is good for working in TypeScript codebases—I couldn't find any way to show helpful and long TS compiler errors in Vim nicely.

However, VSCode’s terminal is semi-broken and sessions do not persist, so for other kinds of work that might involve grepping around, running builds and one-off data migration scripts, etc., Tmux+Vim (with respective shortcuts to unify pane navigation) work perfectly.

I was doing remote development with code completion and navigation using Emacs TRAMP years before this feature you talk of. So... Not as difficult as you seen to be implying.
I am this kind of guy, too - i3 + st + vim bindings almost everywhere.

But it's a mixed bag, like I can use vim and do something complex in an instant, e.g. replacing a column of characters with something else, but I'm too used to the regular expression replace all mode of vscode. Or the file manager on large projects, I'm pretty much used to using one file at a time with vim.

I feel no shame xD

What is `st`? :)
Not GP, but I suspect they’re referring to this terminal emulator:

https://st.suckless.org/

terminal emulator by suckless https://st.suckless.org/
suckless terminal I love the "externalpipe" functionality, which is the main reason I switched from terminator.
Probably meant sublime text?
I've been using both VSCode and JetBrains IDEs with their VIM plugins. The VSCode one is kind of shitty, but overall both do the job well enough that as a not-super-proficient-vim-master-guru I don't really lack any features.

And you get all the IDE stuff as well. Pretty much a win-win there. (if the vim functionality is good enough for you)