Comment by Meekro
1 day ago
I really want to like Zed because they've clearly put so much work into it, but so far I've been sticking with Sublime. I have several large PHP projects that were started in the 2010-2020 era, and Zed will highlight and complain about all sorts of minor things that were standard PHP fare at the time: functions without return types, for example. My code (which works fine) looks like an ocean of red when I view it with Zed, and turning all those warnings off is not trivial.
For each kind of warning, I wish there was a button that said "don't warn me again about issues like this one in this project." Then I could keep the interesting warnings (like undeclared variable) and ditch the ridiculous ones.
> My code (which works fine) looks like an ocean of red when I view it with Zed, and turning all those warnings off is not trivial.
Isn't it just the default configuration of whatever LSP zed defaults to for PHP?
So you should be able to either configure the LSP to avoid that or disable the LSP server entirely.
Coming from Sublime, I'd never even heard of a Language Server when I first tried Zed. As I recall, disabling particular kinds of warnings required copy-pasting some pretty exotic incantations into my project config. All of it was poorly documented, and it felt like I was doing something nobody expected me to do. Instead, I should have been able to mouse over a particular warning and say "don't warn me again about things like this", at which point Zed should edit the project config for me.
Well, PHPStorm (and the other JetBrains IDEs) does it this way. You can disable a certain "inspection" globally, per project, per file, per method or just for one occurence - the last three work by inserting annotations into the code. Then again, PHPStorm costs money (not just if you want AI assistance), and is based on (drum roll) Java technology (although JetBrains don't advertise this fact a lot nowadays).
that does sound like a pretty nice ui idea to add to code actions (command + .), it already lets you one-click add an ignore comment iirc so probably not too hard to wire a global per-project option
however, i think LSP or integrated linters/typecheckers have been standard fare in editors for a while now (zed does seem to have a lot more set up by default, but i like the sane defaults most of the time). The "correct" solution would be to configure whatever lsp zed is running for the project the way you want, and reap the benefits even outside of zed. for php the tools are listed here: https://zed.dev/docs/languages/php the main one seems to be Phpactor and you should be able to configure it globally or per project https://phpactor.readthedocs.io/en/master/usage/configuratio...
but i understand the frustration, sometimes i try to navigate an ancient python codebase and it really is a sea of red
Yeah, I really can't stand every vscode has done to the ecosystem for settings. JSON as a storage format for config is entirely fine, but it's a truly awful UX for changing things. But they're successful and it's easy to build, so everyone mindlessly copies them.
3 replies →
You should learn about LSPs
LSP is how all editors work today and its simplified everything so so much. you should figure them out
17 replies →
If you have never used an LSP and don’t need it, you can just turn the LSP off. I do it from the UI (thunderbolt icon on bottom bar I think) for some projects which don’t have LSP typing support. There should also be a setting to turn off permanently.
https://xkcd.com/1172/
you could just get your AI to configure it for you
[flagged]
IIRC, Zed uses PHPactor by default. It's a mess for Kirby projects as well.
Edit for clarity: I want to fully switch to Zed, I really like it and their vision for the editor. PHP issues are a hurdle, not a turnoff to me.
I love Sublime, but I don't want to pay to upgrade from 3 to whatever version it is now, Zed is everything I wanted Sublime to be. Honestly, I wanted VS Code but fully native, and I feel like that's what I'm getting from Zed.
I feel like some people will be put off by all the "AI" mentioned by Zed, but you're sleeping on a top tier editor where you can just ignore the AI stuff if you don't want it. It's very high quality, and probably the reason I wont be renewing next year for JetBrains, unless JetBrains does something impressive, I thought by now they'd have a more native feeling IDE that handles most / any language instead of so many separate ones.
VS Code has gotten so bloated over the years. The gold standard of ST has spoiled me with simpler editors. Zed is the first time I felt like someone finally built an editor that is modern and has a rich set of features.
> I love Sublime, but I don't want to pay to upgrade from 3 to whatever version it is now
I don't know what your financial situation is, but given that the upgrade is an $80 one off payment (a new license is $99), that it's a per-user license (not per-machine), and that there were 8 years between Sublime Text 3 (2013) and Sublime Text 4 (2021) (only major versions require a new license), I personally think it's very reasonably priced.
Agreed-- Sublime is asking $99 right now, which is quite reasonable for something that you're going to use for hours a day in your professional work. Somebody gave many years of their life to make that tool the best it could be, and as a well-paid professional, I feel it's more than fair. In other high-end professions (like the legal field), I've heard of law firms paying a lot more than $99 for certain software licenses.
That said, there are a lot of reasons why someone might be struggling with money. If I was the creator, I wouldn't object to someone using an unlicensed copy forever in that case.
It is "one time" in the sense that it will never stop working, unlike a subscription model.
You are however limited to 3 years of updates, so if you want to keep up to date, it is $80 for 3 years. Which if fine for me, it is the one piece of software I used the most except for the browser and OS, I even use it to make money, $80 / 3 years is not much.
It is also the kind of software I like to support. It is... respectful in that it isn't a resource hog, runs fast, launches fast, and it doesn't try to be anything but a text editor. No ads, no subscription, no cloud, no AI, no slop, no dark patterns, no enshittification. Just an executable that does what it say it will do, and does it well. I wish it was open source, but it works well enough out of the box to not need it.
3 replies →
I'm using the latest free/unregistered version (4200) and I haven't experienced any limitiation so far
3 replies →
I can't justify upgrading Sublime if I don't even find myself using ST3 I just don't see what 4 offers that would entice me, and compared to Zed, I get way more out of it.
I tried Zed last month but found that it uses high CPU usage even when idle (up to 50% of 1 core of my i7-7500U).
This is even higher CPU usage than my vscode causes.
Sublime does not do that; in fact it has 0% CPU usage when idle:
shows that Sublime issues no syscalls when idle, as it should be.
(Note, you need to either unfocus it so that the caret stops flashing, or switch from fading caret to fixed / non-fading caret, otherwise it necessarily has to do syscalls to draw itself.)
Zed spams syscalls even when its screen is entirely still:
In fact Zed makes 800 syscalls per second when completely idle and unfocused.
Syscall spamming is one of the main reasons why computers get slow when many apps are running.
Good software does not do that; when idle, it should only consume RAM, not CPU.
Aside: Browsers, and Electron, seem to always syscall-spam no matter what, which is probably a key reason why people feel that all Electron apps bog down their computers. When your computer gets faster, the software just does more syscall loops per second, for unchanged misery.
From what I recall they generally avoid caching anything and just try to repaint the whole UI really, really fast on every frame so I think that's the design.
It's like how a video game renders, which is their stated goal from the beginning.
I always thought their stated design goals were a bit... wonky.
2 replies →
I've always thought of it as lightweight, but checking it now, wow.
I've found that some of the language servers can really grind up a storm but Zed itself is usually pretty lightweight.
1 reply →
I finally moved off Sublime a few months ago because I wanted something open source and stumbled on KDE/kate. It's been a perfect substitute.
https://github.com/kde/kate
Actually, I do like Kate, but Zed seems to give me the best of everything I want. It's like they know exactly what I want out of an editor, they provide way more than I need, but that is okay too.
2 replies →
Kate is REALLY underrated. The UI is a bit meh, but it makes up for it in terms of features. It is actually a fantastic document editor. Don't really use it for coding.
I've tried a lot of editors, including Zed, and always come back to Sublime Text.
I use it every day. The #1 reason is because it never loses unsaved files (though I'm still working on breaking the habit of typing a few characters and pressing Ctrl-S). Column editing! Macros! Record/Playback! Configuration! Plugins! Responsiveness! Low resource utilization! Etc!
Why wouldn't I pay for it? I've bought all four versions. The author deserves to be paid.
I guess the question is: why don't you want to pay for it? Assuming here that you're a professional coder being paid a reasonable, US-equivalent salary. I understand not everyone fits that situation; plenty of us pirated software as starving college students / interns, folks in other countries don't get the same pay for the same work, etc.
We should all want to pay the authors of great software. We're on HN, which is a celebration of creating great code and awesome businesses.
"Pay him. Pay that man his money" - Teddy KGB
> never loses unsaved files
This is a big one indeed. I keep many unsaved tmp notes and pastes open all the time. Sublime Text also have it's super smooth pane and window management, so easy to select many tabs, drag and drop tabs to windows etc. Never mind what is unsaved and not. Everything always there on open anyway.
I think this is a highly requested feature in Zed as well, but not sure if they are actually working on this or not.
With Zed touting itself as an AI first editor, is it possible to completely disable all AI features so that you never have to look at the equivalent of a copilot icon ever again? I don't want to have to spend energy to actively ignore these things.
I only installed it today for the first time but yes it does have a very prominent button to completely disable all AI.
1 reply →
The AI stuff was a lot more prominent in an earlier version, but they tweaked it a bit. It's the same with Warp forcing a login at first.
Jetbrains is a heavyweight IDE, but I'm not sure if the weight is worth the features it offers anymore, at least for the things I work on.
VS Code is also an IDE, but it's a bit easier on resources depending on what plugins you use and what you allow them to do. I've had combinations of plugins that caused my whole system to freeze up with too much memory usage because it spawned several Node processes each taking up multiple GBs of memory :/.
Given the price and the fact it’s a WinRAR-style model, I really don’t mind ST being paid.
I also loved / want to love ST but it seems its ecosystem has collapsed, a lot of plugins haven't had an update in over 5 years.
Eventually Zed devs will need to get money that isn't coming out of VCs...
How much did you pay for doordash last month?
Oooh this is a thread about an IDE called Zed not a Typescript strict typing system called Zod
I was confused until here because I remember using Sublime until it went paid
Sublime Text has always been paid, it was never free.
I'm also sticking with Sublime for many years, and at this point it feels like it is some kind of old man stubbornness (like George R.R. Martin using WordStar 4.0 type thing). I don't know why its ergonomics for me have been just unbeatable. I gave others (VSCode and Zed) good weeks and months of configuring them to my liking and using them exlusively, and always returned to Sublime. All the AI stuff just runs on the side in the terminal (iTerm2 for me, but checking in on Ghostty sometimes too, waiting on them to figure out their minimal text brightness feature).
As you mentioned iTerm, you should also check out TextMate, the thing that Sublime Text was inspired by.
I used TextMate prior to Sublime, but then I became into vim mode, which TM never got I believe.
2 replies →
Interesting! I tried Zed too, and not knowing Sublime, I switched to it instead after a while…
I’m not sure why though. I do not have the issue you do, but Sublime feels better.
You should be able to just turn off the language server. Go to the lightning bolt icon in the bottom bar, "Stop all servers" or just the PHP one lighting up your source code.
[dead]
Had the same experience with a rails project, it injected an LSP+linter we don't use in our project and it has really annoying to figure out how to disable it in a settings. Having to debug an editor's settings JSON the first time you use it is not a good UX, it should be optional to enable it instead of assuming we want aggressive on-save linting/autoformatting (that the repo doesn't even have configuration files).
I love Zed, but I hear you. It's a very fast and capable editor with lots of IDE features, but it's lacking comfortable ways of tuning it for specific projects. (This is a problem with every general purpose, everything-to-everyone kind of IDE versus stack "native" IDEs that are geared toward the one true way of developing for particular target.) The configuration file structure is arcane, and it certainly not clear what the boundaries are between language feature configuration, LSPs, built-in and third-party code quality tools, etc.
I eat the cost of configuring it manually when I start up something new because it's just not that big of deal, even when you're like me, working across myriad languages and frameworks and organization with varying standards. It's not ideal, but it's not deal-breaker.
I do wish that there was a better way to definitively set it up a particular way and know that it is doing what you want it to do. I want something like presets/profiles. If I'm working with typescript, I want to be able to set it up to use a specific version of tsc, eslint, prettier; I also want to be able to create a different one with biome; I want it to work correctly whether I have my source in the project root or in a sub directory or in a monorepo tree.
Fairness to Zed: it is difficult to support all of these permutations, but I do think that they ought to be able to do something better to abstract these things and make the reusable.
The standard approach these days is to have all of those declared in a config file somewhere in your project. That way, other contributors (and the CI) can lint/format consistently.
Even if it's for solo projects, it's nice that you don't have to update them in lockstep. As in, you revisit an older repo, you don't get bombarded with squiggly lines from your latest user profile, instead you can upgrade it at your leisure.
True, and not disputing that. Two points:
1. I want to be able to readily duplicate that configuration for another similar project.
2. It's not always appropriate to co-locate those specific files within the project source itself, especially within a source repository. Notable cases are if we're working on different platforms with different binary paths, or if we're not standardized on a particular editor. I should be able to configure my editor without polluting the common source.
I've worked with mostly PHP from this era, or at least developers that are from this era. The code still runs fine, and not having things like return types don't make the code less able to run (just not as easy to catch bugs).
I haven't used Zed, but can you choose the PHP version, or point to a PHP executable for warnings/errors? I know in VS Code, you point to the PHP executable for the version you are using, to catch errors. I haven't created a new PHP project in quite some time, but I did work on many older PHP projects, and never had this issue with VS Code. I suspect even if you don't go about it this way, there has to be configuration to specify what is and isn't an error vs. warning.
Sidenote: Sublime remembers all tabs even those unsaved. (Software update deletes this memory.)
I use Sublime as a scratchpad and never save anything, so this is an important feature for me. It's worked flawlessly for years.
I've tried Zed several times like this and it continues to lose data.
> Software update deletes this memory.
While there was a bug where the session was lost when updating, this was fixed years ago.
Great, good to know. Thanks. I wasn’t brave enough to test, so I hope you are a human not a dog that tries to prank me :))
> Software update deletes this memory.
Are you sure? I believe Sublime preserves all your unsaved tabs even on update.
Last time I have updated (half a year ago) it deleted tabs. And since that time I haven’t been brave enough to update it again as I have too many tabs unsaved :)
i lost all the open tabs last time i upgraded sublime.
burned once, twice shy; i wouldnt update without spending an hour making up names for random junk files
2 replies →
This is just a language server problem. I'm sure you can configure whatever language server PHP is using to disable specific warnings, etc.
> I'm sure you can configure whatever language server PHP is using to disable specific warnings, etc
You may be able to do this by editing a language server-specific config file in whatever arcane syntax they decided to offer. But there isn't any editor support for configuring languages servers, so it's a bit of a lift for a newcomer who just wants to turn off some warnings
I think the application should own its dependencies and its default config. In this case, it felt to me like no one had really looked at them.
Editors should take full responsibility of the user experience. The user should not have to care about the existence of language servers.
We use intelphense with vscode and it's only mildly red (zf1 mutant project). It also understands stubs from phpstorm. Default lsp for Zed is phpactor and it was just an inferior experience compared to intelephense (free) in vs code last time I tried. Now there's even a guide for adding intelephense to zed, but I'm yet to try it out.
I was using JetBrains for more than a decade. Then I got into Python as well and so was juggling between WebStorm, PyCharm, CLion and Intellij Idea. Zed has replaced the first three completely. Put the appropriate config file in project root for whichever LSP/linter/tool is running, and most of these warnings disappear.
Writing C in Zed is a wonderful experience. The LSPs surface errors in an manner that is very easy to view and edit.
My main issues with Zed are:
- Word-wrap: I prefer on-demand, and I haven't been able to figure out which setting triggers that. Of if it is even possible.
- Support for Devanagari and other scripts: I use it as a markdown editor to proofread old texts and it is inadequate for that purpose. Kate/Featherpad offers a superior experience for this, including the ability to zoom to see those visually difficult to parse conjunct consonants.
Going forward there will be one version of Jetbrains IDE and clion, webstorm, etc will be all just plugins.
I anticipate that Zed's rate of improvement will be faster that Jetbrains', a small team of highly competent developers always moves faster than a big business. I've been maining PyCharm/IDEA for years, but Zed has gotten so good that I already see few real reasons to come back.
is this really the case ? I thought they had given up on fleet
A bit confused - Idea supports pythong and ts/js, why the need for three?
> pythong
Glad I'm not the only one that frequently makes this typo.
1 reply →
The UI is a bit different for each and I got used to the differences I guess. I have a lot of projects and I pick one IDE for each and then do not deviate from it.
[dead]
It just doesn’t play bice with PHP, I always wanted to uniform my stack before with vscode, now with zed. But PHPStorm always win.
It really there is no realy good ide or tools for php
Same, I really want to like Zed but LazyVim covers my every need
Zed felt it had the right to download, install, and run node.js without any permission just to run some LSP (which I don't even use). When I mentioned it here, the devs said that they felt that was fine because their priority was to make things seamless for users such that they don't have to install the LSP manually. Sublime Text, on the other hand, has never installed anything I haven't explicitly asked it to.
I'm sticking with Sublime Text, as its developers actually respect boundaries on my computer.
> Zed felt it had the right to download, install, and run node.js without any permission just to run some LSP (which I don't even use).
Yes. This is bad. Zed keeps installing and running all sorts of random background stuff. This should be an opt-in.
I still stick with Sublime because when I give them money they haven’t given me reason to believe they’re going to waste that money putting in AI slop features I don’t want.
If you're using zed, couldn't you use AI to fix something like that? Those copy and paste type changes over a code base is something AI assistants are really good at.
I could! I'd probably have to take it piece by piece, rather than telling an AI to edit hundreds of files in one epic session and hoping for the best. Even just reviewing a commit that large feels like it would be a bad use of time. Also, giving every variable a type (or using "mixed" everywhere), and giving every function a return type (more "mixed" or "void") would just make the code more verbose without any justification that I can see.
With Zed, I feel like I'm being dragged into a modern style guide that I never agreed to. It would be nicer if I could make it my own by turning off those parts that I disagree with and keeping the rest. I know this is technically possible, but they've certainly not made it easy.
Have you investigated if the lsp and linter is configurable
2 replies →