I'm one of the developers at Sublime HQ. We're all very excited about this release. If you have any questions you'd like to ask I'll do my best to answer them.
I know that LSP plugin exists, but, anecdotally, folks are having trouble with it. Which i think is understandable https://lsp.sublimetext.io/features/ says Show Code Actions: UNBOUND, and this is the second most useful thing in LSP (the first is extend selection), it’s not that the plugin is wrong: it’s just that you can do only so much if the editor lacks first class UI/UX concepts for features, required to expose LSP to the user.
Just wanted to share my thoughts on why LSP as an open source plugin has more benefits than getting first class support from ST devs.
Cons of getting first class support from ST:
- ST is closed source. That would mean that the LSP source code would be closed source too and that would not allow other people to contribute to it.
- Implementing the LSP client in c++ won't make the user experience faster.
The speed mostly depends on the speed a language server returns a response to the LSP client.
- ST devs would shift focus on implementing the LSP spec which is mainly driven by Microsoft and the spec is somewhat driven by VS Code functionality. So ST would chase after offering the same functionality as VS Code, but then always be a step back.
Having LSP as a plugin allows the best for both ST users and ST devs.
It allows ST users to contribute to the LSP plugin, while ST devs can focus on making ST more awesome on their own way and adding new API-s.
All I can say is that LSP already has first class support, because the ST devs have specifically expanded the API to allow LSP to implement certain features. :)
I figured I'd wait until the non beta release, and try again.
The sort of minimal deal breaker level of support for me is being able to jump to definition. The symbols, if I understand correctly, are based on the syntax configuration, and for the common Elixir one, it includes the type definition line, each function head, and the callsites of the function, which makes it nearly useless for symbol navigation.
I figured LSP would help in this regard, but I couldn't make it work. The docs were vague, and I think I had to put some JSON configuration structure in some file, but nothing I tried I guess was the right file or right structure.
Still, I love everything else about Sublime and am excited now for multi-tab-select, so I'll probably give it one more try. Hopefully LSP is better integrated or documented by now.
Or are the majority of the user-facing improvements to the LSP plugin still to come, based on the foundational work that just rolled out?
Each person has different criteria of what is important,
Some people like code actions, some think it is the goto definition command, but almost all keybinding in LSP are UNBOUND. The main reason is to not cause conflicts with default keybindings.
Here is an example for code actions. Most editors use `ctrl+.` to trigger code actions,
but `ctrl+.` is a default ST keybinding used to go to the next modification in the code.
A lot of people consider it bad if a plugin overrides default keybindings,
so LSP lets the user decide what keybinding to assign to LSP commands.
Hope the explanation helps.
New installs get ST3 installed by default, even if I don't have a plan to use it on that machine, I treat it as if it was a Notepad on windows back in the day.
Wonderful piece of software.
1. Select something at one line
2. Select other occurances of this something using CTRL + d
3. Move the cursors with the arrow keys, by using ALT + Arrow to jump to word boundaries HOME to jump to the beginning of the line for Ll lines that had a cursor on them, END to jump to the end, draw selections by holding SHIFT while doing any of that.
The thing is, when you got this it can be much faster than crafting up a regex in Search/Replace even if you are good with regexes.
For find and replace, I have to leave the editor and go to a different tool window. Also, my regex skills are sometimes lacking when I want to find something on a deadline. I only use find and replace when I have to do the same refactor across files.
Absolutely top tier lightweight code editor for special tasks.
worth a look if you do this a lot.
UltraEdit is very sluggish - to the moment it's not usable to work with.
I did a very subjective comparison between few editors in terms of speed in working with such file (flow is: open, find, manually edit, save).
And in my eyes here is the result:
1. Cuda Text
2. Sublime 4
3. VS Code
Please note: I only tested the workflow that I work on daily basis. I can see that UltraEdit can do much more that Cuda Text, and in different test cases probably it will be a much better choice. But not for me.
Is this a common operation for a text editor?
It's at least something I'd expect a premium text editor to handle without issues.
or give UltraEdit a try. it opens huge files with ease.
Can you pretty please fix the issue where files deleted/renamed outside sublime are shown as unsaved? It often ends up with a lot of wasted debugging time until I realise I'm working on the wrong file
Please show "filename (deleted)" on the title, instead of "filename •". Thanks!
* Open file1.txt in sublime. This shows up as "file1.txt" in Sublime.
* In the terminal: mv file1.txt file1a.txt
* Back in Sublime it will show "file1.txt •" as if it's modified and unsaved. Saving that file will now recreate that file, and you'll end up duplicating the file and editing the wrong file.
Instead, what should happen is when you delete/rename file1.txt it should show "file1.txt (deleted)"
Try the same thing in any other editor (e.g. VSCode), and it handles it correctly.
1) If the file was renamed and its contents changed - what should the editor do? Load the changes underneath the user? If yes: user #1 mad because now the only copy of file contents was wiped in OS, and now by the editor in what was originally a mistake. If no: user #2 mad because updating file outside of editor didn't update it within editor as they'd hoped.
2) If the file was only renamed - but renamed by mistake - to something generic or wrong: user #3 mad because original filename (which may also have been a location) is now lost.
In all cases, the optimum solution is to clearly indicate to the user that the file name or contents have changed, preserve both the contents and the filename/location, and give the user the option as to how to deal with this given their particular situation.
This should be a separate indication than that what seems to be currently offered which is to conflate user initiated changes, and OS initiated changes as the same thing. If this is the case, they are not the same thing, and this should be clearly reflected in the UI so that the user is alerted and can decide what to do.
The problem is that you can’t distinguish between a file that exists (where saving would overwrite the file) and a file that doesn’t exist (where saving would create the file).
Thanks a lot for creating this piece of software art. I’m a user since the v1 and no matter what the editor du jour is, I always fallback to ST and Vim.
Each one that I publish is a Responsibility. Like a parent that has children, the package is no longer “completely mine.” All changes and fixes are made, keeping in mind that someone may be dependent upon my work.
I’ve been writing SDKs -literally- my entire career (I can link to my very first engineering project, in 1987, where I designed a hardware system, and a companion SDK).
A perfectly legitimate reason for keeping code private, is that I am not willing to support it for any use, other than my own personal use.
Even for code I didn't publish (like corporate SDK internals), I have been contacted (which took some work, because my employer did not like customers interacting with Engineering), and told (not "asked" -told) to make changes to our corporate, closed-source SDK to suit some rando's tinkering around (also, for extra credit, said rando hadn't even purchased one of our cameras).
Even open-sourcing has its caveats.
Anyone that has spent any time at all, on most tech forums, have seen the "Open Source Holy Wars" being fought.
I tend to use the MIT license. I won't go into the reasons why. I write OSS, and I support it. I choose to do so under MIT.
In the past, I have been contacted (I make it easy to get in touch with me), and told that I was a "corporate shill" for not using GPL.
That's always a great way to start the day.
Also, our corporation had to fend off a few legal threats, because some of our software looked vaguely like some GPL stuff (I guarantee it wasn't -they were anal about the GPL), so zealots would sometimes throw sueballs (or vague threats, thereof) at us.
At least the patent trolls would do a little bit of homework before attacking us. These folks wouldn't even bother wondering if they might be mistaken before unleashing the hounds.
However, what about just releasing a zip file with the sources and linking it on your downloads page?
Code should be easy to read/download on https://sourceavailable.com/username/repo
This almost never happen, even when the interest is very high...
I love open source and free software, but we should face that this point is more a fantasy than a real thing.
But the ones that have at least rudimentary documenation, something a new maintainer has something to work with - those are the few ones, that might be picked up by some community. Rare, yes - because there is not much fun in writing documentation on your personal pet project in your free time. But it might be still worth it.
The current Rsubl implementation kinda works. But is a bit hacky for reliable everyday work.
Once again, love sublime, just a suggestion :)
I don't use VS Code. How do you do it there that is so much better?
If you decide to add it, please make it flexible enough to configure all options OpenSSH provides.
However, since we started using Yarn workspaces (for JS), I've needed to switch to VSCode because its auto-import is just so much better, and it's one of those things that's hard to go back from, once you're used to it. Sublime text already indexes my code for search, which can probably be used for path suggestions / automatic imports without affecting performance too much maybe? I dunno.
I wouldn't mind it being a plugin either (before Yarn workspaces, I'd use FuzzyFilePath plugin which worked pretty well). But native support would mean the performance would be on par with what I've come to expect from Sublime Text :)
Thank you so much!
However, opening big files doesn't work too well, it seems the program wants to load the whole file in memory. Any change on that front?
I've been using Sublime for years now and yet I barely use most of its "well known features" and I feel ashamed of myself.
I know there are tutorials out there, but I am a chronic procrastinator and I just can't bring myself to watch them while at home.
So, it sounds like you could add more awesome things to do to the top of your list, until your procrastination becomes things like..watching Sublime tutorials. He explains his method in detail on this page:
I love this editor, but this detail annoys me:
Folding code with curly braces doesn't "eat" the brace. It's indent-based, not syntax based. There is a 2 or 3 years old issue on their github, and they don't plan to fix. A little annoying for a paying editor.
Here is the github issue: https://github.com/sublimehq/sublime_text/issues/101
Maybe they fixed it and I did not look up new settings?
For me it's the best second editor, i always have it open when i do an operation. I have different main tool / editor open but always sublime text as a second tool.
Thanks for keeping a 32 bit version also.
Thanks for this release! I use ST every day and I love it: the speed, the efficiency, everything.
The one thing I miss, though, is manipulating files from the left panel (moving files especially). I know there is a plug-in doing that (Side Bar) but it lacks drag-and-drop support.
Any plan to have it natively in the future?
Edit: just read the patch notes, the ans is yes. Awesome!
My only complain with Sublime is that if I have 100s of unnamed tabs opened, it gets very difficult to find a particular tab.
I wish there was somewhat better tab organisation possible. Maybe there are some plug-ins, I did check last time when I was frustrated with it.
Does anyone else face this issue or have I been using it wrong?
You have ctrl tab and alt-# but once tab names are no longer visible/readable I don't see the reason to keep so many open. I think the filetree view is exactly how 100s of files should be organized for finding a file you can't remember the name of or ctrl-p for quickly opening a file you do
I make extensive use of layouts with several panes, bookmarks and, for longer files, opening multiple views into the same file and code folding. I find these tools particularly helpful when editing or reviewing sets of related files. This happens a lot for me: application code and its tests, front-end and back-end code either side of an API, code defining types/constants/interfaces and code using them, or sometimes larger numbers of related files when these kinds of pairings multiply. As long as everything stays open, ST preserves all of that display context independently for each file/view. Closing and reopening would lose that context every time.
Basically the exact opposite of my browser habits, where I easily have 100 tabs open at any time, lol.
BTW: Thanks for a great Editor.
Hopefully soon these will get added to the official ports repo and you can find them there:
That would make my little embedded dev station just perfect! Would migrate it all to that new Pi 400.
My workflow involves keeping 9 sublime projects open most of the time (damn microservices), and restarting sublime after an update makes my computer very slow (not unusable, not noticeably laggy) for 5-10mins each time.
Relatedly, sublime has an excellent changelog window, but it only shows up after you've already updated! It would be really nice if I could see the changelog before I decide whether to update or not...
When will ST4 show up on Homebrew?
Thanks for taking the time to answer questions
I hope one day you will release your UI toolkit. Since it's crossplateform, fast, and plug into Python, it could be a wonderful alternative to PyQT, wxWidget and the like, and we really need something in the Python world.
Good luck to ST4.
> I hope one day you will release your UI toolkit. Since it's crossplateform, fast, and plug into Python, it could be a wonderful alternative to PyQT, wxWidget and the like, and we really need something in the Python world.
Note our UI toolkit is really adjacent to python - there's no integration there at all. See here for my answer in relation to releasing/open sourcing our UI toolkit: https://news.ycombinator.com/item?id=27230608.
> Note you can upgrade to the bundle from either a Sublime Text or Sublime Merge license.
Right now I have a ST3 license and would like to upgrade it to both ST4 and Sublime Merge.
If one upgrades to a bundle now, will it be possible in the future to upgrade the bundle license to a single product one? Or is the only option to buy a new single product license instead?
(I’m ok with it either way, I just want to find out so I can plan better.)
For example, if I am using Julia/R I want side panel that shows all my current variables in memory. Is Sublime plugin system capable of adding UI components such as variable/plot viewer and add custom interactions to those UI panels(i.e. zoom/rotation for plots)?
Mind sharing how you do this in R? Thanks!
my day job has a fixed list of binaries that are permitted to run (by digest)... 2 is on the list, and 4 isn't
(quite happily using 4 now at home!)
That would explain the visual corruption issues I sometimes have with Merge but not ST3. In Merge some actions, sometimes (mostly in the settings) corrupt the application window (sometimes also after minimizing and sleep) on my MacBook. To me it looked like a rendering/GPU issue. It looks like blocks of pixels having different colors, lines shifted, etc.
Edit: ctrl+tab saves, but mouse clicking a tab loses
How can I open find results in a split view?
How can I open definitions and references in split views without using the mouse to hover and click?
Edit: F12 and shift+F12.
I personally wouldn't ever use a embedded terminal, as their user interaction inherently conflicts with the rest of the application. ctrl+w for instance needs to both close files/tabs as well as delete a word in the terminal.
I was an avid user (and paying customer!) of ST1 and ST2. Somewhere along the way I switched to VS Code. Why should I use ST4 over VS Code today?
Are you talking about cold boot or huge log files?
The only place for me code breaks down is with long jsons/js files that haven't beet prettified and are a long long string.
I noticed that you can only see the type of a type
Are there any plans for some kind of combo deal now that Sublime Text and Sublime Merge licenses are aligned?
It looks great.
Here's a reference to the discussion on the 'dark theme':
I've always been a big fan of using snippets and auto-completing based on open buffers in a project instead of using LSPs.
I haven't used ST in a while but decided to install ST4 to try it out.
I opened a Flask application that uses SQLAlchemy. I opened a Python file and typed User. and then it showed me a list of fields and methods on my User model without having the User model open in a buffer.
I did the same thing in an Elixir project and after installing the Elixir package it worked for project specific "things" in my app. Like after typing UserView. it showed me only functions available in that view. Likewise it did the same thing with context modules, it picked up all functions inside of a specific module.
In both cases as I started typing "User" it showed me options to pick from. In both cases it also listed out the number of definitions for a specific "thing" and lets you quickly jump to a specific one. If you mouse over a function it brings up the list to pick a definition / reference. There's also key binds to bring up a CTRL+p'ish feeling menu to see and preview the file where something is being used.
It's not as good as a LSP but it's definitely a few notches above what I've seen in other editors and the best part about it is not needing to configure multiple LSPs and it's lightning fast.
I haven't gone crazy testing ST4 btw, I played with it for like 20 minutes. It felt like it was maybe 65% between ST3's auto-complete and what you'd get with a LSP back-end using VSCode. Meaning it's closer to VSCode than it is than ST3, but not as good as a LSP, but there's also no effort to get it set up so it's a reasonable trade off if you're someone like me who just wants pretty good auto complete without configuring a million tools to run in the background.
It is coming with LSP support so that will work as well.
How does it compare to YouCompleteMe or TabNine?
YCM feels more like a LSP client than buffer / project level auto-complete. AFAIK it requires you to have a language's runtime specifically installed which is a deal breaker for me. Most of my apps run in Docker and I don't have local copies of any runtimes installed.
ST4 works wonderfully in this case because it parses everything out based on syntax highlighting rules.
I'd say it occupies a middle point between full IDE and text editor.
If I want the best IDE, its something from JetBrains. It's definitely the slowest to open up, about 9 seconds on my machine, and I wouldn't think of opening a multi GB json file in it, but past that initial open its just as fast as sublime (again on my machine).
If I want the fastest text wrangler or dealing with a massive file, its Sublime. Having used all 3, VSCode just leaves me wishing I opened one of the others.
The best thing about VScode is that it is a really good (just not the best) IDE that is also free
I've tried VSCode a few times through the years, but it always seemed like I needed at least a dozen plugins to get all the features I have out-of-the-box with PhpStorm. I guess it's a philosophical difference between modular components and a big ol' monolith (though, beneath the hood, IntelliJ IS modular... most of their software is just a branded collection of plugins, though all the major ones are first-party instead of community-driven like in VSCode).
A nice feature is you can disable/enable plugins per workspace so you can only load your Java plugins for your java projects, etc.
At the end of the day, I don't care what a program is classified as, only if it can do what I need it to do. Like many here, I've used Sublime for its speed on simple edits and other editors/IDEs for more complex dev work. That's fine. But VSCode occupies that in-between space, offering a mix of performance and features.
The holy grail for me would be something like PHPStorm but with better performance. I wonder if Java has something to do with it, vs it being built as a native OS app? I don't remember Visual Studio (the full IDE, not VSCode) being this slow, ever, even on old Windows 95 machines. And even back then it was pretty feature-complete too, especially compared to VSCode if not IntelliJ.
I guess my underlying question is whether it's really impossible for an IDE to be both fast and featureful.
edit: My only gripe with VSCode currently is that it seems too eager to correct my typing.
Actually uses a real backend neovim instance. Can’t get better vim support than that! I find it a god-send when working in VSCode as the Vim key map alternative was slow, buggy, didn’t have full support.
Now I don’t have to compromise.
*files of sizes I work work. I don't care about gigabyte-sized files; if I do, vim or my existing ST3 license are good enough.
I often just open it to jot something down, and before I know it I have 15-20 notes on separate pages, I'll consolidate and save them to a file somewhere or delete them if necessary.
It's just a super reliable scratchpad and a versatile modern textfile editor.
Alas, now I'm used to it, and I can't go back because of the same integrations that made me switch in the first place, and new ones I've found since. All the crispness and snappiness is gone in favor of deep features. I accidentally became an IDE-guy.
I tolerate it, but I hate it every day. So much bloat, so many useless notifications and fragmented interface.
I get what you’re saying though. Many folks might only have budgets in the range of $500-800. With any luck, other manufacturers get their shit together.
Sublime Text costs $100.
So not sure why you're feeling sympathy when you will have exactly the same performance issues only without the power and efficiency of the M1 SOC.
These are professional tools, you're going to need to invest into hardware to get a good experience - if you value your time at all you'll be spending a good ammount of money on a laptop, high quality chair, good desk, monitor and peripheral.
If you're an amateur or a student then you can afford to wait.
It's like me complaining that my amateur drill overheats on hard surfaces and I can't drill through stuff realiably without cracks - if I need to do a few holes here and there the cheap stuff will do, if I do this for a living I'm expected to have gear that will save me time and improve my results.
Performance is a feature, and it doesn't rank very high past some critical threshold (which is why people switched to VSCode - other features matter more)
On my, 2015 Macbook pro (16 GB RAM)
and my 2012 Macbook pro (2 GB RAM).
Nothing else on my 2012 Mac opens that fast. Not MacVim. Not emacs. Not TextEdit. Not even the terminal.
Sublime Text basically does what you describe above on ANY hardware.
I have one Electon app that I wrote myself and it's pretty fast as well even though it deals with a boatload of things, and I didn't really put any special effort in to achieve that.
Both on my current laptop (which is admittedly a 10th gen i7) and my older one (8th gen i5).
Not to say that Sublime doesn't load faster. I'd almost be surprised if it doesn't. But the whole "Electron apps are slow" trope really needs to go.
Same with Spacemacs. because of the way processes are more expensive on Windows, Emacs/Spacemacs is many order of magnitude slower than it is on *nix (the other places I use it). I tolerate it as I can't live without magit and Org and other staples.
I find the crappy Slack app (another Electron app) is also slow to open, load and update. So much so, I prefer to use their web client in a browser.
Anecdotal, also, but that's two Electron apps which are sluggish on fairly recent (3 years) hardware.
Look into emacsclient.
It sorta is in just the text editing realm similar to vim and emacs. Sure it can do more but I feel like it's not fair to compare it. That said sublime text is probably the only text editor I ever used that comes even close to competing with vim and emacs for text editing.
Do you actually ever need to open a new editor? Why not just start whatever editor you want when you boot up, and then open files in it?
You probably don't shut down and start up your web browser every time you want to open a new site, so why would you do the analogue with your text editor?
Speaking only for myself and not the GP: due to a lifelong habit of putting things away when I'm finished with them, I always close windows and quit applications when I'm done using them for my current task.
> You probably don't shut down and start up your web browser every time you want to open a new site
Not literally every time I visit a new site, but yes, I quit my browser every time I'm finished with my current browsing session, even if I might end up launching it again in 10 minutes for a different reason.
...but that's not a need - that's a preference, a habit, with no root in any utility or tradeoff.
> but yes, I quit my browser every time I'm finished with my current browsing session
That puts you in the minority of tech users, at least, if not computer users in general.
Is that an anecdote or is that assertion derived from some study?
I, too, close all windows/processes when I'm through with use. The overwhelming majority of people I've worked with have all done the same; of course that is anecdotal.
I solved this need long ago with BBEdit (hi Rich!): I leave it running all the time. It is the only application that starts with my user login, and it is always available.
I tested "Visual Studio". It takes ~10-12 seconds. For some reason VSC code fits within my threshold of "fast enough I don't feel like I had to wait at all" where as visual studio feels like I'm waiting. I guess your threshold is lower than mine though.