It's where I write all of my personal notes, blog posts, and it's where I wrote both "Game Programming Patterns" and "Crafting Interpreters".
At the same time, it's not the tool I use as an IDE. For programming, I use whatever IDE is dominant for the language I'm working in. Over time, that's been Visual C++, Visual Studio, XCode, Eclipse, IntelliJ, and most recently VS Code.
That doesn't mean to me that I want Sublime to turn into an IDE. I like that it's lighterweight than that. It's the perfect sweet spot for me of rich enough to handle piles of notes and documents and small scale code editing, but not so huge and cumbersome that it gets in my way.
I always have my IDE up on one monitor and Sublime on the other.
This is what I do too, some IDEs are just well-suited for one language or stack over others. That said, I wish languages and IDEs and editors would share ideas more often. I actually don't hate XCode except for the performance, but I prefer the git interface of VSCode, and I prefer the ability to dangle commas and easily format JS/TS consistently (although the tools somehow used to be easier to set up) in VSCode. (absolutely hate prettier)
Are people just working on more complex software than I am so you need the build steps hidden behind a UX, or am I missing some killer IDE feature that I don't even know about?
EDIT: It probably helps that I'm a vim die-hard and couldn't imagine clicking on something to rebuild the program! And Sublime's Vim support is better than any real vim program I've ever used, much less the half-hearted versions available in the IDEs I've tried. Maybe that's the main disconnect, and y'all just prefer having dropdown menus?
Then I use emacsclient to edit all kinds of files. It loads instantly, handles any reasonable files, can access remote files when needed, and has all the tools I want handy.
OTOH the IDE features do not clutter anything: I have no tabs, no toolbars, no file trees — not until I ask for them.
SublimeText is where I go to take some notes I want to write unformatted, or with some markdown.
It's where I go to paste some blob of JSON or logs from a random command that I want to parse out into something more readable than my terminal gave me.
It's where I write a random snippet of code to help someone who's asking me a question, or a bash script for a one-off job.
It's not my IDE and I don't want it to replace my IDE, just like I don't want my leatherman tool or swiss army knife to replace my power drill or pliers.
Do you really think that's how people use IDEs?
I've never used an IDE that didn't have comprehensive keyboard shortcuts, and I don't remember one that didn't allow customization of shortcuts.
Many years ago I saw an advertisement about some cooking tool. This old East Asian grandma, ninja grandma looking, was doing some prep work for some dish. She stops, looks in disgust at the tool she was using and says "this is meant to bring joy, but this is not bringing any joy". She then switched to the "better" tool and all was good with the universe and much joy for everyone.
This is why I use the tools I use, because they bring me joy. There is an argument to be made that I use some of my tools because they bring me less sadness, but oh well.
I use vscode because it brings me joy, nevermind that I use less than 10% of its capabilities (eyeballing). I compile, run tests, use source control in Windows Terminal, because Windows Terminal brings me more joy than the vscode terminal.
I use a cage on my photo camera because it brings me joy. I use a Peak Design sling because it brings me joy. I use my Lowepro sling bag, that I got as a bonus after buying a cheapish tripod, because it brings me joy. The next version of my bag, size wise, it's a proper backpack, now I'm planning to get one and see how the joy levels are.
You use whatever you use because that brings you joy. You can try and rationalize this in any way you want, at the end of the day, the amount of joy is the only real reason you use what you use. Whatever we use doesn't make us better or worse, it makes us human.
What sets IDEs apart from trying to convert an editor to an IDE with a bunch of plugins is:
- somebody somewhere is hopefully sitting down with a cohesive vision of tying these tools together, instead of an assemblage of plugins each with their own visions. I would very much prefer to use their vision (a la macos/windows/Ubuntu) vs trying to configure each plugin to my own (arch/Gentoo). It could be an age thing, but at this point I really don't have the enthusiasm to become an expert at 12 different config file syntaxes and read the docs for all the options for each plugin i would need to tweak.
- an IDE is all encompassing in certain ways that is amazing. For example, Jetbrains is not only a fantastic code editor/refactoring swiss knife, it also has excellent git integration, and can leverage the same code navigation capabilities within diffs and PRs. It will autostash in branch specific stashes, and I can visually browse and diff these. I can attach to databases and get full SQL query and view capabilities, so it isn't just about general purpose programming languages.
- it can be hard to explain to people who haven't used a language specific IDE, how much further along its refactoring capabilities are compared to any LSP. Note that this applies much more to Java/C# than to something like python, both because of static typing and decades of investment.
- as an example of integration, say you add a new function in a file. Not only does Jetbrains highlight the modified file in the Git commit panel, but the structure panel will actually color that function differently and so on.
- due to widespread use of Jetbrains in certain communities, people will build valuable plugins to relatively niche things. So Jetbrains has excellent CMake support and decent Bazel support.
- I like the keyboard, but I also like and acknowledge that the mouse is much better at certain things. For interactive reading, I like I can right click on a commit and say "rebase from here" instead of looking up, copying and posting the red into my git rebase -i command. Conflict resolution, line by line inclusion etc. is also easier with a mouse.
I am very competent at the command line, but beyond a certain project size, IDEs just make sense to me.
Maybe give it a try? https://vscodium.com/
* Automated type-based code navigation: go to definition, find all uses, etc.
* Auto-complete: Personally, I prefer simple auto-complete based on static analysis over AI "hope for the best"-style auto-complete.
* Debugger with all the bells and whistles: Step in and out, inspect variables, modify variables, breakpoints, conditional breakpoints, etc.
* Automated refactoring: Rename, etc.
Most text editors can do most of those, but I find that good debugger integration is rare outside of a dedicated IDE.
(FTR, the setup above is used for practical, mostly commercial programming; I've left academia without even finishing my post-grad study, decades ago.)
In some cases we are forced to use a specific IDE. Not optional.
For data manipulation, I like multi-line cursors. Sure, I have expensive IDEs that can do this too, but sublime is great for non-technical people and it's very affordable and lightweight as you mentioned.
My other friend spends a lot of time in spreadsheets, and he was trying to import a bunch of tabular data one time and it didn't quite work due to the source formatting. I showed him how to pull it into sublime, quickly add some commas and remove some junk data on every line to get it in shape for importing into Excel. He loved it!
I really don't understand this question. It is like asking "What is it about SolidWorks that you find so useful"
I have a normal job using go + angular/react, lots of databases (postgres) and lots of bare-metal OS shenanigans. I use Vim with 2 plugins. One fuzzy file finder and one for integrating with go.
I've used the JetBrains products daily for many years. These are very slick and I basically regard them as works of art, but I ultimately don't need them (anymore?).
It took many years to get the vim movements into the core of my being and this was indeed quite an investment, but my hands usually move the code now. Sometimes I can just watch them shifting blocks around as I'm barely conscious anymore of the actual physical movements themselves. This sounds like satire I'm sure, but I'm dead serious. This is actually a thing that exists. Not fundamentally different from being unconscious of the key presses when touch typing.
Once you get to this level of familiarity with vim, the shell and the entire Linux or BSD ecosystem things really start to fly and the need for an IDE quickly fades into the background. It is at that point that "why do you need an IDE?" because a serious question.
(Of course this is all moot if you are embedded in a highly specialized ecosystem with its own tools and ways of doing things.)
1. Debugging right in the code, rather than in an ugly terminal copy of the code next to it (sounds nice!)
2. Better semantic features in language-specific IDEs (autocomplete, refactoring, etc).
Certainly those things sound nice, but I hope you see how they’re not essential!
I've been using IntelliJ for at least 10 years now.
If you have used it, you know what I'm talking about.
IDEAVim plugin provides Vim key bindings and Vim editing mode, so it has the best of Vim and an IDE in one application.
Refactoring and navigation in IntelliJ is superior to whatever you can hack together in Vim. You can integrate Vim with a language server but then what's the point? Just use an IDE.
At work we are forced to use a specific IDE. It's a niche programming language not supported by any other software. Vim is not an option.
IntelliJ enables quick refactoring of large JVM projects without messing with language servers. It's all integrated and just works out of the box.
IDEAVim plugin provides the Vim keybindings and the Vim editing mode so it's the best of both worlds for me.
IDEs aren't perfect - they often have performance issues, new bugs with every update and do confusing things like marking completely valid code as errors. One of the reasons why I stopped using IDEA after many years of being a fanboy is that I found these unexpected behaviors and bugs getting in the way of actual work. For example, you might reopen your project in the morning to find out that everything that worked perfectly in the evening is suddenly broken, and then you have to spend half the day reinstalling previous versions of plugins and cleaning caches. While editors might be a bit simpler, they're always works reliably.
>At work we are forced to use a specific IDE. It's a niche programming language not supported by any other software.
yes, sometimes is no any choose.
But in all seriousness a good IDE is much more than a text editor and buttons which run terminal commands. The main thing a good IDE has is a good debugger, which not only allows for stepping through code easily, but also shows the values of variables, memory, registers, in one easy to use interface.
If you don't use a debugger then either you're only building very simple programs, or you're stuck in some sort of special hell when it comes to debugging.
I never got in the habit of terminal debugging, but I'm sure some people prefer it over using a GUI. I'm that way for git: The command line interface is unintuitive, but I've gotten accustomed enough to it that it feels comfortable.
Another thing that always gets lost in these dev env debates is what language and use-case. I do mostly C++, and most of my time is spent going between 2 or so buffers. I'm not doing something that requires zipping across several unique files per minute. Even if I do need to change files, having a slower mechanism to get there causes me to think more carefully about what I actually need to do there. So the extra 5-10 seconds aren't fully lost.