Zed, Vim, And The Problem Of Editors
HTML-код
- Опубликовано: 7 июл 2024
- Recorded live on twitch, GET IN
Guest
Thorsten Ball
x.com/thorstenball?ref_src=tw...
My Stream
/ theprimeagen
Best Way To Support Me
Become a backend engineer. Its my favorite site
boot.dev/?promo=PRIMEYT
This is also the best way to support me is to support yourself becoming a better backend engineer.
MY MAIN YT CHANNEL: Has well edited engineering videos
/ theprimeagen
Discord
/ discord
Have something for me to read or react to?: / theprimeagenreact
Kinesis Advantage 360: bit.ly/Prime-Kinesis
Get production ready SQLite with Turso: turso.tech/deeznuts Наука
Prime: "You're just not good enough at Vim."
Thorsten: "Here are two things you didn't know about Vim."
Prime: 🤯
Prime got owned there lol
What an amazing moment!
timestamp?
@@frndstp 32:15
When someone shows you useless tricks
I is pretty useful if you want to make comment banners
Ex. 80i#Esc
I really appreciate that Prime can actually listen and gives the guest room to elaborate his thoughts.
I also appreciate a German SWE getting praise by Prime (I'm German myself).
Have you seen when he "tried to learn next.js"? He ended up talking about vim and rust after every 5 minutes.
A tip for people struggling with the delete/yank/paste thing: register 0 always has the last thing you yanked. Bind a shortcut to "0p (include the double-quote) to paste from there (I use p but you could overwrite the default p behavior if you want).
That's really helpful! Thanks man!
Isn't this the default for p? When I yank a line, I can paste it with p.
@@marloelefant7500 If you yank a line with y, delete a different line with d, then paste with p, what gets pasted is what you deleted--not what you yanked.
31:54 if the diff is not in red and green I cannot parse it. LMFAOOOOOOOO
I died, was about to comment something similar omg.
You joke around at the end about knowing the stock Vim/Vi config and saving lives.
But it isn't always an exaggeration.
In hospitals many critical systems are certified medical devices, meaning that most configurations cannot legally be changed.
You're working with stock, and every second counts.
Makes me think of POSIX vs. GNU. Bash and gawk are great but you should be able to survive without all their extensions.
Any software that doesn't offer reasonably satisfiable defaults really shouldn't be given anyone's time of day.
I can’t get over that one chatter asking if Zed is the HAWK TUA girl of editors
LOL
"Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter."
Atom was complete garbage.... im not having high hopes lol
@@Microphunktv-jb3kjAtom was great lol why'd you not like it?
@@Microphunktv-jb3kj just try it.. It's a really great editor
Even on tech RUclips I can't escape the HAWK TUAH!
that colemak joke was so funny at the end
Had me rolling
I died on 10gs
I don’t know if I feel seen or called out. Having started on vi (before vim existed) and frequently logging into servers that I don’t have the Fs to give to sync a vimconfig over to, I mostly use default stock vim. Oh, but I use Dvorak because I learned that before all of these other colemak/workman/etc. variants existed.
Damn, I’m old…
The little part of my brain that says I should bring my own keyboard everywhere just got louder... on the other hand my keyboard is like 2kg so it's still balancing out for now.
@@ivanheffner2587 I finally decided to look into Colemak after this video but now you made me aware of Workman, damn it... I'm scared of going too deep into the rabbit hole. The thing is I frequently type in two different languages so it might make less sense for me to switch from QWERTY (ISO), compared to someone who only types in English, as these layouts seem to be optimized for English.
'10gs' just blew my mind.
i need that command in real life lol
That "defusing a bomb with stock vim on a stock linux install" moment was pure genius (around 38:00)
XD i was that guy for years... and then neovim 0.5 came...
@@vaisakhkm783 hahahah that happens.
@@vaisakhkm783 yeah using neovim is like cheating in the analogy lol
neovim >> vim (especially lua. Best decision ever!)
37:14 pure gold
See also: XKCD 1168
Thorsten really seems like a super cool guy, and I've been really enjoying how he's been documenting stuff at Zed in videos. That's really awesome that they talk about what they are building and their process, that's not very common but I think that's super interesting to hear!
The zed editor might be nice but all of the collaborative features don't work if you don't have a team that all works on Mac. For a long time I have always worked in environments where both Windows and Linux are used depending on the requirements and preferences of the dev. Also Linux but that plays a smaller role where I work. Therefore for me a tool which is not cross platform does not exist.
They’re working on cross platform and you can currently build from source for Win and Linux
@@aquilafasciata5781 pre-compiled packages are also available at least on Arch.
@@aquilafasciata5781 There's also an install script at zedDOTdev/installDOTsh
@@aquilafasciata5781 that's very good news :) Was aware of Linux, obviously, because of the video. But I have some hardcore Windows users in the team which are sometimes difficult to convince.
@@aquilafasciata5781Zed is in nixpkgs as `zed-editor` and it seems to be mostly functional
Never do math on camera...
I've run usability tests on CLI tools and it is mind blowing. tested docs and also actually using the tool. also usability tested library implementations down to function names for packages that are going to be used by other people. amazing experience.
18:50 In my opinion, using tabs in code editors is really inefficient, I'm surprised they've integrated tabs that deep into Zed's architecture. Recency sorted buffer list is better, file tree structure is also useful sometimes, but tabs are just too inconvenient to use: they take a lot of screen space, introduce mouse into the workflow and lack search and information density.
I hate tabs. I have a current directory buffer and a recently opened buffer, in insert mode to immediately start typing the name of the buffer in interested in.
Got to agree. I'm perpelxed why modern linux guis seem to all require tab-supporting capable terminals and text editors but understand its to appeal to users used to tabbed browsing. In the case of xterms, I install the invaluable package 'screen' as soon as I get linux installed so I can muliplex any of my terminals immediately. For a variety of benefits. Command lines that hang the terminal in the foreground are easily dealt with. (Ctrl-Z and bg work in this case but can trigger some complex tasks into thinking they're hung, assume they ran into errors, plus the issue of using a terminal while some background process that you thought would behave suddenly blurts out some random messages on stdout while you're trying to carefully put together a delicate command line. Screen lets you just open a new vt in a split second with three keypresses and keep working. I can detach my full sessions any time and reattach them through any tty, be it a gui in x, a text terminal, or an ssh or telnet session remotely, and I never fully use more than maybe six even when I've got a few relegated to monitoring tasks and a sudo bash terminal or two (not recommended to leave open like that, for security concerns) while tabbed tools with unlimited tabs encourage overloading yourself and leaving a headache to manage later if you have to pause your work or save your session. The idea of multiple interfaces grouped together is the powerful part of what tabs are. They don't need to stick out and be "tabs" and lose yet another precious few pixels to menubar bloat that requires you to manage yet another auto-hide setting if its even an option, or just permament work in a stunted space. Nobody should have to leave a list of current live sessions up to remind you there are multiple interfaces available when you're the one setting them up and coordinating them specifically for your current use, and if you've got a keyboard in front of you, navigating using it should be the most efficient choice. Tabbed terminals (and editors) copy multiplexers like screen but they also lock you in to their interface. Screen lists your current "screens" when ask to see them, by briefly listing them at the bottom of the screen, out of the way and secondary to your actual work at hand. That's how "tabs" should work imho. The tabs being the primary focus of what "tabs" are, is like calling gui windows "Titled rectangles" and missing the point that the window title is just there to organize the rectangles, not to take over as the primary detail to the point that you think of X, Windows, or MacOS as Titled Shape interface.
I even prefer the layered windowing of old Turbo C and Turbo Pascal editors that used text mode box-character-drawn windowing, fully allowed you to swap between open source code editing, output windows, watch and debug, help files and code references, and tile, maximize, hide, or close those windows with keyboard commands if you don't want to reach for your mouse for some more precise layout control. The window list was always accessible off a menu if you needed to see what's currently open. I admit though, that I did switch from 80x25 to 80x50 text modes when coding because losing a few lines off the screen for the text "gui" was a little much.
Easier on the eyes?
@@adriansrfr what tabs have to do with eyes?
The real way to visualize diffs is with the drake meme.
Had always been using just the "drop down" view in fugitive but that dv view is what I was looking for befor getting used to it hell yeah, thanks prime
I loved this interview but I didn't walk away with a reason to switch from Vim to Zed. I spent a minute looking at Zed and still I don't get it
Can you guys hear the crickets in the video? Around 8~11 minutes or maybe my marvelous EarPods have malfunctioning 😅
About the number and i. Sometimes I had a very big integer in the clipboard, pasting and pressing I in the wrong order was a 15 seconds of pain
The problem with n?vim support is that every setup is different. The only way to port my nvim workflow to Zed is to support nvim's Lua API and plugin ecosystem, which is not feasible.
EDIT: kinda mentioned at 28:20
just deal with it: only vim and neovim 100% support all vim motions.
Already things like macros, jumps and stuff like that is not supported in many editors. Which is why i now hate vim integration in editors. I am used to do tons of stuff that most vim integrations do not allow
Bruce Willis told me Zed's dead
zed might be good but I don't know how to configure key binding to navigate splits
Obsession with editors is just a way to procrastinate about doing the actual work of programming.
Sure obsession about anything is bad. A bit of play and fun is okay IMO.
Unless you work at zed!
if it has first-class support for vim motions and all the mainstream LSPs i'm moving over
It does! Come over!
@@thorstenball5773 how many LSPs though?
I see that the Vim mode for Zed is more of a Vim Motions "reimplementation" rather than Vim Emulation like we find in something like Visual Studio (not code) where it literally parses a .vimrc and even some plugins (I once got coc.nvim and NerdTree to work on it, albeit VERY glitchy 😂).
I believe a "reimplementation" is totally fine and I think if they can get it to how the Kate text editor has their VI mode and indicate on their page what does NOT work. I think they can have a pretty viable Vim-mode!
Awesome stuff 🙏🏽. Zed is becoming more and more intriguing by the day.
tbf, the vscode extension is basically hacked into vscode.
Zed implementation makes more sense, as they are trying to integrate vim motions, not just smack them in and call it a day
Also how do plugins run in vscode neovim extension? neovim has a flag to disable plugins, i thought they would use it. Otherwise i can see problems like double completions (one from vscode and one from neovim) lol
I was coc.nvim uptil now, lspzero with mason is like mindblowing!! After an hour it was easy with lua for me. I had my own looong vim script.
I'm not downloading zed after reading issue 12589, "Zed downloads NodeJS binary and npm packages from Internet without user’s consent"
Don’t know the details here, but isn’t that normal for software with dependencies?
@@jdsmedley only if you expect software written in Javascript
@@jdsmedleyAbsolutely not lol
@@jdsmedley don't tell people saying no to this what their favorite multiplayer games and its anti-cheats do on their PCs.
Somewhat normal for easier LSP management. Setting them up manually kinda sucks
I regularly do something like `println!("");`, put the cursor on the `"` and then do `50a*` and I have a nice line of 50 *s that I can easily find in the logs when they're spammy and I need to focus on a specific section I'm working on.
Colemak MENTIONED. LET'S GOOO
5 days late and totally came down below the line for this comment.
🤜🤛 lol @@OnStageLighting
Tmux+vim integrated pane navigation, and vim slime make it almost impossible for me to switch to anything else
Been using this editor for two months now, it works great! Not perfect, but much better than expected for its age. I quite like it’s vim mode better than vscode, and it generally feels faster.
I thought the foundations would be built to make the editor a superset of Vim and Emacs. I thought that would be the easier way, because it would make other plugins easier too. Someone could make a helix plugin one day.
Great interview, thanks for this one
I really want to like zed and I will be able to completely switch if they can get auto close and rename tags to work. Its suuuch a basic thing that absolutely wrecked me when I tried ~working~ with zed.
I also really don't like the AI integration, they are trying to shove down my throat.
Selling to developers is a terrible business.
why?
How do you make business without selling something?
@@FeLiNe418 Well uhm, proprietary compilers died out for a reason
@@random_bit take a look at kotlin. The compiler is free, but all the toolings are provided by jetbrains and they are all paid if you want to be productive.
@@FeLiNe418 Precisely
All of my X11 interactions have been pretty sweet. Much better than MacOS/Windows. Has some really nifty CLI tools for debugging.
Might be a nightmare in rust though, I’ve never had to make GUIs from scratch at a low level
2:32 "but.. um" ☝🤓
ed is the only official *nix text editor.
Ah-ha! I have used a Vim command the primeagen hasn't - I've used 5i and similar before ;)
Interesting... I also made an IDE. (but it was more of a do it for the experience kind of thing).
The thwarted Vi prepper actually used Colemak DH and didn't have their USB stick, so everyone died.
@25:32
maybe I have a special case but it wasn't good at all for me.
it seemed to use 100% cpu (1 core). so it was moving at around 1 frame a second.
I think it was cpu rendering somehow for me. and I'm quite sure this has to do with nvidia drivers.
I can't wait to see when it's going to be available on Linux, and not only on MacOS, without having to build the source every time there's a new update available.
Yeah, like who the fuck uses mac os
@@mattymattffs people with way too much money on their hands.
Just compile it yourself
@@mattymattffs People who have to get shit done
" I have been trained not to " ahaha
As an X11 window manager author I feel the pain XD
looks cool and all that but i won't go back to an editor that requires a GUI OS. if i can't ssh to a server and edit in the terminal the editor doesn't work for me.
I'd love to try out Zed especially since it looks to have native and out-of-the-box VIM support. But it's only for Mac and while their GitHub tracked issue says Windows support is on the way, their official roadmap doesn't list "Windows support" as an item. So my excitement is rather tame now :/
now i should use Zed editor,on Zorin GNU/LINUX wich used ZFS file system for programming Zig
Also use zsh as your shell
vi prepper here.... back when you had to manage systems manually and you managed heterogenous environments (netbsd/freebsd/rhel/etc) you would run into issues if you got too clever, was just easier to know the lowest common denominator and suffer.
Nice Linux support, will definitely give Zed a try.
The "problem" with editors is that they're an implementor's dream, but an architect's not gonna want to do their boxes and arrows in the vi/vim or emacs family. Draw IO is the sort of thing that allows those boxes and arrows to be stored as XML and parsed with other tools that make code the implementor can run with to make their final code possible.
Paul Tarvydas would be such an amazing guest to interview for his perspective on this kind of problem.
If you think you cannot create architecture diagrams in Emacs you must have never seriously tried it.
XML mentioned! brazil!!!
Draw io is the GOAT!
How much is Lucid paying gyou
@@vikingthedude not enough to think xml is good, but if they want to send me money i'll gladly relearn html5 again for the 100th time
but brazil is paying me
vi prepper 😂 that hit home
Dart and Flutter.
I tried using Zed but like all editors except for VSCode and Rider (possibly also VS but I'm not going to be going there again) there is no support at all for modern dotnet, eg. Blazor and I suppose razor pages in general are just not supported. Only VSCode has a plugin that is able to add support. No idea why but something something Roslyn or what do I know. Just sucks that I am forced to use a specific product because no editors support razor files in 2024.
1000gs for everyone who forgets to lock their screen in the office
Emacs for LIFE!!!
In general, every editor has been trailing emacs for decades. They all want to be emacs without telling people they want to be emacs.
When you can run an OS in your editor, what else do you really need?
no substitute for Emacs, editor from the 70s
i will always use magit tho
@@zZGzHD magit and org mode are amazingly good
When the hell we getting zed for windows?
"I much into using tools/framework from the people that I've talked with"
We need ThePrimeTime podcast
PSA: Zed seems to be libre software now, and compiles for GNU/Linux. _Now_ I'm interested.
so is this a new Rust/Zig rivalry but this time Neovim/Zed??
I think rust/zig is closer to nvim/emacs or zed/vscode. Zed and Neovim are both great but they aren’t direct competitors. One is a great gui and can run a terminal, but people who prefer to have the editor in the terminal will probably still prefer Neovim.
5i is good, what if you want to add 5 spaces
I saw this one live. What a great interview, this man(other than Prime) is a sweetheart, a genius, a gentleman, a monk.
When you build a solution for a problem that nobody has...
This comment is a joke right
@@user-gf7ss5je9hI think it’s a joke or the individual is just clueless
1 thing i don't understand about Zed is it's claimming to be a vscode killer, yet not supported on Windows where there is a huge chunk of vscode users there.
I downloaded zed on a Mac hyperv and it didn't work
i know in 2024 ppl dont really care about rotoscoping and greenscreen skills but Flip really upped the quality lately. These vids are so fresh and crisp I can taste the details!
I bet even Prime licks his monitor.
Like, doesn't everyone lick each one of Primes videos?
I need to give Zed another try
What's the difference between S and cc
The colemak jab hurt, I was enjoying the video and just got smacked out of nowhere haha
10gs most important command in my opinion
i need a 36.000gs command in real life lol
I could see someone finding a use for it in a macro.
Plug-in dev Is there a scripting language, what language do you use and is there an api.
He DID NOT sell zed to me.... :(
38:18 still, you have to admit there's a non-zero chance of stock vi skillz actually saving lives
I am just going to point out. Hoddie down looks mighty fine
How does Zed compare with Helix? I like Helix better than NeoVim. Still haven't left VSCode yet, but I might one day.
i love Zed
it works great on my old and slow laptop with Linux
omg thanx for q: i had no idea what a was typing
Won't zed work inside a text terminal?!?
inb4 `M-x zed--global-mode` becomes a thing.
I recently switched to nvim but I use vscode to see git diff 😅. I used nvim kickstart repo. Can someone teach me gitsigns commands or whatever that is to do those magic he's showing there...
hahahahaha, finally found the command that sends me to that ugly panel, q: I'd bind that to "FOUND!"!
I'm seeing a bit of ... not hate in the comments but let's call is skepticism. Skepticism is the better default, but I think we need to hand it to the guys at Zed - they've made something pretty special. Before I was flicking between Neovim, Jet Brains IDEs and VSCode. I'm really enjoying Zed as my daily driver. Great work everyone involved
only thing that’s stopping me from trying it as a daily driver is the support for other LSPs than the ones they hardcoded in, as soon as that’s there I’m definitely going to try it
happy that you found something you like. might give Zed a shot myself when it matures a bit
@@LosFarmosCTL That's true. I haven't had to use any other than the already supported LSPs. I can see that being a turn off
@@CodemanBen yup I 100% need the swift LSP, I have no issues with running tests from the terminal instead of an integrated test menu but without LSP no way, stuck on vscode for now
My issue is that many of the features I rely on the most (abbreviations, proper snippets (not the lsp-only crap they've implemented recently), and (marker based) folding) are not a thing in zed.
38:20 never have I been called out as blatantly as I was with that colemak comment. Literally crying n' shaking rn
This is the reason why I wrote own editor.
For Mac Only! Why?
jq's command line interface is fine I guess, but I really am not that crazy about the language itself. been wanting to try jsonata or something instead
Please react on “7 years of software engineering advice in 18 minutes” by BGO on yt.
Really looking forward to not needing msys to install Zed on Windows
zed is still missing some features I use every day:
- api to cycle through buffers (want to bind H to switch to previous buffer, L to switch to next buffer);
- api to close all buffers;
- diff tool, so it is easy to see and compare changes;
- debug tool;
cycling through buffers: `pane::ActivatePrevItem` and `pane::ActivateNextItem`. Default bindings are `cmd-{` and `cmd-}` on macOS. We have `:quitall` to close all buffers. So you can do `:qa` (or create a binding)
@@thorstenball5773thank you, thorsten!
Zed? You mean lapce side-baby?
I wonder why no one talks about Lapce. I'm not saying Lapce is good, but I think it deserves some support.
Wow, never heard of it. It looks like zed, but more complete(?). Will try it out, thank you for mentioning!
get a spellchecker on there. long overdue.
I tried Zed today on linux. I think it will be better than vs code one day, but it is still slower than my beloved neovim.
I loved this discussion. I'm developing an OS for creators (which includes devs, btw). It includes an editor/IDE... *fully customizable.* _(i.e. any language can be used to modify it, even languages you create)_ All of these features are so easy to add and manage by anyone. I'll hit you up when we're in beta, Prime
I get that js devs aren’t switching to Zed yet. But as a Rust dev I’ve been using it since the closed beta and I’m never going back. VSC is slow as hell.
It's sometimes frustrating that the lack of standards on Linux is a bless and a curse, it's super cool to use whatever you think it's better and be opinionated, but it's super cumbersome for developers to implement, it holds a lot of things back unfortunately.
then there cases like gnome, where there are tons of important standard which are not implemented because devs personally do not need them
Zed got vacancy for rust developer, maybe Primeage......
People are changing and using shit editors because cannot learn emacs
I miss him (too?), and you should be able to finish that joke without any repercussion whatsoever.
Ok but vi
Vi is bad. If you add a letter, it gets good enough, if you add two letters, it becomes the best editor ever
Vi over zed easily @@no_name4796
@@no_name4796 idk man neovim has too much bloat and the community is all script kiddies
@@no_name4796Based
@@no_name4796navi, the best editor ever?
Hey we're talking about me :)