-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add vim/neovim style tabs #2295
Comments
I should mention, I would be happy to contribute this feature if I can get some direction to get started. |
I haven't found myself missing tabs as I've been using Helix. Since the buffer management (especially the picker) is so good I don't find cases where I would use it. I wonder what in your workflow makes tabs so necessary? |
Tabs are useful when you want to glance at other files without changing your current layout of open splits. Atleast that's the primary use I have for them. |
In Neovim we can have different working directory per tab which is excellent to working with different directory at the same time. |
I think tabs would be bloat and should be the job of the terminal. In Kitty you can control them programmatically, for example, if the project has a git repo then Lazygit is opened in the next tab:
|
@the-mikedavis, that's a fair point. I can see myself adopting a different workflow given that it's a different editor. However, I do think that there's good reasons to have tabs and some people just prefer having that workflow available. @David-Else I disagree on tabs being a bloat. First thing is that tabs are a relatively simple concept: a container of views (splits). Tabs simply allow you to have many instead of just one. In Vim/Neovim, tabs add negligible visual clutter. Additionally, most editors and IDEs have a concept of tabs. I prefer the vim-style tabs (splits within tabs) over say the vscode-style tabs (tabs within splits), and I would imagine that if Helix were to adopt tabs, it would align with the vim way. |
Tabs are indeed one of the main features I'm currently missing from Helix. I wouldn't consider in-built tabs bloat. But I would go so far as to say that not having built-in tabs is pretty inefficient and cumbersome (if one wants to use this feature). My usecase of tabs is that I usually work on multiple "scopes" in the same codebase at the same time. This allows me to quickly do changes on one end, switch to the usages, adjust them accordingly, check if everything works and repeat the whole process for the next change. It's true that this can be achieved via multiple instances, but this has a few disadvantages:
I would also be interested in checking out how to built this feature, even though I would definitely need some introduction to the codebase! Edit: |
Isn't this supposed to be fixed with "bufferline"? |
Bufferline is a distinct feature from tabs. Bufferline is more like https://github.com/akinsho/bufferline.nvim while tabs are a built-in Vim feature ( |
I generally don't prefer tabs for my workflow. Even in vscode i disable the tabs and use the recently opened buffers. I use Screen.Recording.2022-10-10.at.9.13.56.PM.movJust my 2 cents though. |
Similar workflow for hx, using Screen.Recording.2022-10-10.at.9.22.02.PM.mov |
@pyrossh Some of us tend to touch 8+ different files in parallel. Especially when doing refactorings or adjustments to large existing code bases. Se we just need a quick way of navigating 8+ buffers.
My workflow would be like this:
We know about buffer search, there's no need to post videos showing how they work in different editors. It doesn't change the fact, that a simple It's just another workflow that's more intuitive for some people! No need to discourage building this functionality if you don't like ;) Just don't use it, just like you don't use it in other projects. |
@Nukesor has already done a great job explaining why folks want this ("scopes" of work is a great way to think about it). I'll add two things that I didn't see mentioned above:
|
Has anyone worked on this feature yet? This was important enough to me that I finally took the time to hack together a PoC in an evening and I may start using my fork just because of that but I don't want to duplicate any existing efforts. EDIT: The aforementioned PoC in action https://asciinema.org/a/hcgiXAJlDep8bity7iXSxU3sR |
@nrabulinski What an awesome prototype! I'd love to have that in helix. I'm tempted to use your fork. Have you considered opening a draft PR for feedback? |
Maybe "view"? |
@z0al can you expand on that? I think of these as "tabs", and they feel similar to what I'd call "tabs" in most other apps. Based on the conversation here, many others think of them as "tabs" as well. When I wanted to look up this feature, I searched for "helix tabs". I wouldn't have thought to search for "helix window groups" or "helix layouts". |
@rcorre nevermind, I did a bit more research and I think you're right. I guess I'm just a confused neovim/helix newbie :). If I take Wezterm as an example, tabs can contain vertical or horizontal "panes" (windows/splits in vim) and each pane holds a shell session. I could have another "tab" with a different layout. In that sense, the term tab in vim/helix would make sense. |
Here is another simple way to conceptualize this feature: "Vim tabs" are basically Multiple Desktops. They solve the same problem. With Multiple desktops, you can organize several logically distinct tasks across desktops. Same thing with "Vim tabs" (as was explained above). The term "Vim tabs" is terrible, and I've only ever seen it cause confusion. |
I prefer the vscode-style tabs because it always shows the names of buffers you opened. In vim-style tabs, when you switched to another tab, the information of buffers you opened on the previous tab is hidden. Even when I was using vim, I used https://github.com/zefei/vim-wintabs to achieve that |
Hello, All examples in thread are very precise why it's such a good option. My favourite is comparison with desktop workplaces. I constantly have 2-3 workplaces on my MacOS and I organize stuff on them. And it would be so good to have such an option in Helix as well. |
+1. vim tabs are a serious quality of life improvement I miss in helix. Is there anything that can be done to further improve this implementation?
|
Right. I don't mean to sound entitled, but the lack of this feature is a complete showstopper for me, and I imagine many others. Which is a shame, because I see a lot to love in the rest of the editor. |
There is an opened PR: #7109 However, it seems that the team is waiting on some core rewrites that the PR touches, so it seems reasonable to wait until then. Also, it isn't yet clear if this is a feature worth including in Helix in the first place. Please, let's respect the authors' decision on this and let's hope they revisit this at later time. |
Describe your feature request
I would like to have something similar to
:tabe
on vim / neovim as it happens to be an important part of my workflow.The text was updated successfully, but these errors were encountered: