I know it sounds like a pain, but I really am a big advocate for learning how to customize vim (or emacs) yourself. These are great places to start, but the power of terminal editors is that they cater to you at a very personal level. The problem with "IDEs" isn't that they are bulky, it is that they railroad you into doing something a very specific way. Terminal emulators put the custom configuration in your face because that's the point. You should edit color schemes if you don't like them. Select only tools you actually want or will use. Learn native commands (because so many plugins do things that are native and even taught in vimtutor). Turn it into a game if you want. Whatever, it is personalized __for you__, and that's the point. Start here, but make sure to move on and make the editor __yours__
some of us don't have time to play games? i mean definitely used to when i was a kid but now i have lots of deadlines and little enough time to play games with my human friends let alone with my editor.
> make the editor __yours__
a good tool is useful immediately and has the potential to be personalized. i mean imagine how little carpentry would ever get done if every hammer, drill, and tablesaw needed to be personalized.
the reality is that software tools, like software itself, are much more complex than carpentry tools (and carpentry), and thus maybe can't be immediately useful in the same way. but that's why ux engineering exists for software tools and not for hammers. so i'm happy to leave it to the professionals to help me become productive as fast as possible (even if not immediately) when using my tools.
At least for me, Vim is immediately useful, and I rarely do much personalization. I agree that personalization is not an adequate measure of an editor. I don't agree that the problem with IDEs has anything to do with personalization.
At least for me, it boils down to wanting an editor for text, rather than some specific programming language or environment. Traditional IDEs have been very "project" focused which isn't useful if you're editing an email or writing a poem or munging some logs.
> imagine how little carpentry would ever get done if every hammer, drill, and tablesaw needed to be personalized.
This is somewhat ironic to me not because of personalization, but because in traditional carpentry (i.e. a master carpenter) it is pretty common to make your own tools. That's kind of the beauty of woodworking and especially hand tools: your tools usually have a lot of wood parts. If they don't, they usually end up with a lot of wood parts anyways.
master carpenters produce artisanal works. those works are valued for the craftsmanship itself rather than the utility. so it makes perfect sense that master carpenters would be incentivized to put thought and care into their tools. me? i'm just a tradesman/laborer. okay not really but there's still no such thing as "artisanal software", at least for sure where the code itself has intrinsic value (instead of it generating value). anyway if i ever hit it big, make it to master software developer, and have enough freedom/time that i can afford to spend it on things like personalization, maybe then i will.
> This is somewhat ironic to me
double irony: i'm a compiler engineer and i chose to work in compilers in order to be able to have more control over what my progams did. but i still don't have time (or care) to personalize my IDE (or vim).
Ever try to cut wood with a dull blade? I really don't recommend it. Even a novice carpenter will benefit from taking care of his tools. Admittedly it's more important for carpenters because blunt tools can get you injured. Excepting RSI issues, the worst that will happen with a suboptimal text editor is very marginal inefficiency (typing probably isn't the bottleneck anyway.)
i do too - all i know is :bn, :bp, b, e, ciw, v and shift+v (and :wq) and it's all i've known for over 10 years. i use the arrow keys on the keyboard too! fingers crossed it'll last me the rest of my career too.
but i mostly use clion/pycharm and there the defaults are reasonable and the ux of shift+shift is absolutely unbeatable.
I'll give you an easy useful command: smart completion. In insert mode use <C-x> then <C-p> for a word or <C-l> for a line, or <C-f> for a directory path. You can repeat them because it is contextual. See `:h ins-completion`.
Also, get away from the arrow keys. And use <C-[> for escape. But it is also okay if you don't like vim. If you want to learn, there's a community out there and we're happy to help, but if you don't then that's okay too. You just do you and that's all cool :)
So don't. See the next part you quoted from me. But also, IIRC you're in grad school (too), right? Little time is kinda part of the deal. It sucks, I know.
But like others are saying, vim is useful right away. But I do disagree immensely with your premise. A good tool has no requirements to be immediately useful. There's lots of carpentry tools that require training to use, let alone use well. You can be good at vim or emacs in 30 minutes after using vim tutor, but like all specialty tools, it takes time. And that time really comes from using it, not from sitting down and reading about it. The same way you learn how to use a jigsaw, experience. Every carpenter has their custom set of jigs and way of organizing. Same is true for any engineer, or realistically any profession. Whatever it is that makes __you__ most effective, that's what you should do. Maybe that isn't vim at all and that's okay. I never even implied you needed vim, I'm just saying you should customize your environment. And like I implied, start with something someone else has put together, but learn to customize it to you. That'll take time and that's okay. There's no difference in using one of these than just using someone else's dotfiles. But making your own dotfiles is going to make you better in the long run because your tools will match you.
Be honest how productive are you? You probably waste more time during your workday than you do work. Not every day, you might even have very productive weeks, but think over a year how many hours you "waste" on taking breaks to read HackerNews or Reddit or make a Tweet or whatever.
You could spend that time fixing issues with your editor and that would lead to improved workflow when you get back to work.
And in my mind you should use your work time to improve yourself and your tools. From the day I started I decide that I wanted to be the best at what I do and I can't get there if I just do the work. So every day from the day I started working I've taken 30-60 minutes per day from my actual working time to improve. Be it learning something new or configuring my tools (editor, terminal, operating system, browser, whatever). And no employer has complained about my output nor should they since they are getting better output for the same investment.
> Be honest how productive are you? You probably waste more time during your workday than you do work. Not every day, you might even have very productive weeks, but think over a year how many hours you "waste
Lol. Except for the odd day a month, I have worked every single day for the last 2 years (July 15 2021, when I started an internship at FB). I'm in a PhD program and I have a 20-30 hour/week job during the academic year and full-time internships during summers.
Few last times I tried VSCode it wasn’t immediately useful. I believe that you’re speaking from your own familiarity with it. How big is your settings.json?
A hammer is more like a small linux command line utility like tr. An editor is more like a table saw. A table saw is immediately useful, but carpenters also spend tons of time building sleds and jigs and fences and table extensions etc for them.
I use lazyvim and you're still going to be configuring a _lot_ of stuff by hand with it. It's really just a framework for configuring neovim with an opinionated file structure. Compared to other neovim plugin 'distributions' this one is pretty hands off as far as out of the box config--it really just has the bare minimum to get popular language LSPs up, and a lot of missing LSP features that neovim hasn't implemented yet (like autocompletions). For everything else, like defining your own little shortcuts and commands, it's wide open and up to you to figure out just like regular neovim.
Basically this distro is useful if you want to play with neovim plugins but don't want to spend days surveying the landscape to see what are the most popular and usable plugins... lazyvim is doing that for you. As far as using neovim goes this doesn't do much and it's still up to you to do the work to learn and configure it.
Probably what I like about my NeoVim setup (an organic, home-grown completely from scratch mess of .vim and .lua files) the most is universal containerized language server for any project.
It gets me go to definition, peek definition, etc. in TypeScript, Python and probably anything else LSP-compatible without polluting my main machine with any of those development environments and only requires Docker.
The editor detects a special INI file in project directory and launches a Docker container that runs a language server. The INI file can specify a common Dockerfile (works for zero-install Yarn where it mounts repository root as read-only volume and just works(tm)) or a project-specific Dockerfile that does some system setup (useful in case of complex Python/Django backends, for example).
I’d be curious to try a configuration like LazyVim if it supported something like that out of the box, but last time I checked most of these were written in mind with LSP running directly on your host.
> but I really am a big advocate for learning how to customize vim (or emacs) yourself
I got caught into this and, for me, it was a waste of a month. I found that configuring your editor serves as a great way to procrastinate doing "real work". There's always that one last thing you wanna get right
Oh, I can definitely agree that it is easy to get caught in it. I think we've all done it. I'm not sure if it is wasteful or not because there are at least worse ways to procrastinate. I'm pretty sure if you weren't procrastinating configuring your dotfiles you'd be procrastinating by doing something else haha
I like a good starting point. All these things let you tweak them to your heart's content. AstroVim plus 20 lines of customization is my ideal Rust IDE. Really takes away my motivation to burn a couple weekends doing it all myself.