zed-industries / zed

Code at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
https://zed.dev
Other
46.87k stars 2.68k forks source link

Support an equivalent Terminal-Based Interface (TUI) #7493

Open berkeleynerd opened 7 months ago

berkeleynerd commented 7 months ago

Check for existing issues

Describe the feature

Feature Request: Terminal-Based Interface

Summary

I propose the addition of a terminal-based interface enabling users to launch and use the editor directly from the terminal. This feature would allow for seamless integration into a terminal-centric workflow, providing the convenience of a GUI editor and TUI editor for those preferring mixed-mode workflows.

Motivation

Many developers prefer using terminal-based tools due to their speed, low resource usage, and flexibility. Adding a terminal-based interface would cater to this audience, broadening the editor's appeal and usability. It would also enhance the tool's versatility, making it a more powerful option for remote development scenarios, where GUI access might be limited or non-existent.

Desired Features

Potential Challenges

Conclusion

By offering a terminal-based interface, Zed could significantly enhance its utility and appeal to a broader range of developers. This feature would not only align with the preferences of terminal-savvy users but also reinforce Zed's position as a versatile and adaptable development tool.

I look forward to hearing your thoughts on this proposal and am happy to contribute to discussions or preliminary testing phases. Thank you for considering this feature request!

If applicable, add mockups / screenshots to help present your vision of the feature

No response

CommanderStorm commented 5 months ago

I am a bit sceptical on this proposals utility given the insane cost (as I see it this would basically need a new editor, or am I off-base?).

Many developers prefer using terminal-based tools

So basically, you want something like neovim/emacs/..., correct? What would be the difference to the existing tooling?

thiagomajesk commented 4 months ago

I want to echo this comment over here... I love the idea of a "headless mode" where you can simply attach a GUI or TUI. It seems to me that this is one of the biggest selling points of [N]Vim up to this day as you can run it everywhere (locally on a server).

CommanderStorm commented 4 months ago

@thiagomajesk I think you are referring to https://github.com/zed-industries/zed/issues/5347 since you mentioned being able to attach => develop remotely.

thiagomajesk commented 4 months ago

Hi @CommanderStorm! The comment I linked is from that issue... I think that if we are talking about supporting different types of UIs, the first step would be implementing a headless mode as the comment suggests. This could potentially make Zed as ubiquitous as Vim since it's not tied to a specific GUI.

arunoruto commented 1 month ago

So basically, you want something like neovim/emacs/..., correct? What would be the difference to the existing tooling?

A year ago, I started using NixOS with all of its features and decided to give neovim a try. I went from a Lua config to using nixvim for my configurations.I am not sure why, but the performance was kinda sluggish, and configuring neovim LSP, lining, and so on is bothersome... Then I came upon helix: while not having a plugin system like (neo)vim, it was blazingly fast (rust did its thing I guess?) and LSPs were first class citizens! It was so easy to configure languages through its config; it was a dream! The only downside to helix, is the different keybinding mentality. While I do like the concept of highlighting something and then applying an action (you can see what will be changed), it always takes a few more keystrokes to execute.

So why the long story now: zed could be a middle ground between neovim and helix. It could provide navigation like nano for new users and use the vim keybindings for more experienced ones. It has a plugin system, which could be configured through a config file instead of using the UI (I think the nix folks will find a way here!). I kind of look at zed like I am looking at wayland; it is new and does things in a modern way; it is not bound by choices made decades ago compared to xorg (vscode, (neo)vim, emacs, ...).

Having zed in a terminal would also enable remote development on servers directly instead of launching a headless instance and keeping a connection alive like that. Lunching a TUI zed in tmux/zellij would keep the program running and we can pick up the work where we left, even working from a different machine (but on the same server).