warpdotdev / Warp

Warp is a modern, Rust-based terminal with AI built in so you and your team can build great software, faster.
https://warp.dev
Other
20.37k stars 337 forks source link

[Feature] Bypass/Disable Warp TAB-completion and use shell TAB-completion #1811

Open Soromeister opened 1 year ago

Soromeister commented 1 year ago

Discord username (optional)

Soromeister#1365

Describe the solution you'd like?

Problem:
When I press TAB I get Warp's dialog pop-up to scroll through the options

Need:
When I press TAB I want to get my shell to do the completion instead of Warp

Reason:
Warp's dialog for TAB completion is just one column and the height is small. 
I want the shell to handle my auto completion by default so when doing a TAB TAB I get the full stuff printed on my STDOUT and it's much more readable this way.

Suggestion:
Make the Warp's TAB completion work with a shortcut, like Option + TAB or ^ + TAB or something similar and under no circumstance pop-up automatically (only when summoned manually through the key sequence).

Is your feature request related to a problem? Please describe.

I'm frustrated that for mundane things, this Warp TAB completion pops up and won't let my shell complete my command. 
I'd honestly just stick to iTerm2 if it had only the "input as an editor" feature as this is really the only option that is truly valuable in real life. 
All of the other features of Warp just get in the way of doing things and don't make me more productive at all.
Thus, give us the option to completely disable any sort of completion by Warp and let the shell do its job.

Additional context

No response

How important is this feature to you?

5 (Can't work without it!)

Warp Internal (ignore) - linear-label:770f6576-d6c0-4e4f-a259-fc64b5156087

No response

warpdotdev-devx commented 1 year ago

We leverage Fig's specs (we generate the Rust equivalent), and published recent update with 400+ completion specs improvements.

Our completion experience, however, still has lots of room for improvement so thanks for this request. Please +1 this request as it helps us gauge interest.

__ Danny Neira (he/him/his) Support Engineer www.warp.dev

ozsay commented 1 year ago

@warpdotdev-dx is it (/will it be) possible to add custom specs to Warp?

MartinKanters commented 1 year ago

I would love to see a feature like this as well. I think the built-in autocompletion feature is nice, but I don't think it feasible for you to strive for supporting all widely used tools. Next to that a lot of tools people are using might be custom. It would be nice to configure to use either the Warp TAB completion or the shell autocompletion. Even nicer would be to have them both in some way like the author suggested. Keep up the good work!

elviskahoro commented 1 year ago

The discussion for this is here @MartinKanters @ozsay https://github.com/warpdotdev/Warp/discussions/434

elviskahoro commented 1 year ago

https://github.com/warpdotdev/Warp/discussions/434

jonatan-ivanov commented 1 year ago

and published recent update with 400+ completion specs improvements.

I don't think the quality of completion support of warp has any relevance here really. I think this is rather about letting the users choose; it does not matter if warp's completion support is good or bad.

dongho-jung commented 1 year ago

there are a lot of CLI tools and their completions I don't think there could be omniscient tool that covers all these CLI tools' feature and follows all their updates

dermicus-miclip commented 1 year ago

Why not provide a fallback when no warp/fig completion can be found? I really like the experience so far, but I need AWS CLI daily and this is kind of a buzz kill that I cannot disable it. :(

mkubasz commented 1 year ago

@elviskahoro From my perspective, this feature is very crucial. All devops commands currently are very hard to work with them.

elviskahoro commented 1 year ago

@mkubasz i think the goal is to make progress on this next quarter. Aloke will probably be spearheading the development of this.

mkubasz commented 1 year ago

@elviskahoro Amazing. Sounds great. I really like Warp which is the best term emulator for me!

jpbochi commented 1 year ago

Glad to hear there's a plan to do this. I used Warp for a while and really liked it, but felt forced to switch to something else exclusively because of this feature.

elviskahoro commented 1 year ago

To be clear: there isn't a commitment to supporting shell based completions. The EXPLORATIONS as to what we will try to do in order to improve this experience will start probably next quarter--and Aloke will probably take the lead for this.

elviskahoro commented 1 year ago

Also the discussion for this is being held here primarily: https://github.com/warpdotdev/Warp/discussions/652

nathanblair commented 1 year ago

I really like Warp and have recommended it but I have to caveat every recommendation with this pain point exists and it doesn't seem like Warp is going in a direction that could make it suitable for my peers in the DevOps space. Between the multitude of benign and popular DevOps tools, to writing our own self-service ones with completions we maintain for fish, zsh, and pwsh, there's no way any clients I work with could adopt Warp and be as productive as they would be in a terminal emulator that doesn't hijack shell autocompletions.

alanhe421 commented 1 year ago

I'm curious, how do tools like Warp and Fig manage to hijack shell autocompletions?

ephracis commented 1 year ago

Just to add my two cents here. I have been holding out with Warp for over a year but I finally gave up and went back to iTerm solely due to this missing feature.

Though I miss Warp, completions are such as big part of my day-to-day workflow that I simply cannot be without it.

Please prioritise this. :)

jurgob commented 12 months ago

This is the main reason holding me from start to use warp as my main terminal :(

P4R commented 10 months ago

To be clear: there isn't a commitment to supporting shell based completions. The EXPLORATIONS as to what we will try to do in order to improve this experience will start probably next quarter--and Aloke will probably take the lead for this.

@elviskahoro Any news about this?

warpdotdev-devx[bot] commented 10 months ago

Hey Folks,

There are currently no intentions to support shell completions due to the way Warp has a wrapper around the shell (this wrapper enables the IDE-like text editing experience, among other key features). That being said there is an active effort to improve completions in Warp in general which may include an API for custom completions support. We'll post any updates on these threads.

https://github.com/warpdotdev/Warp/discussions/434 https://github.com/warpdotdev/Warp/discussions/652

tmchow commented 9 months ago

Tab behavior continues to plague me. So much so this is the reason I went back to iTerm2 despite me loving so much of what warp has to offer.

Given how much ongoing feedback there is on this from the community I am frankly surprised there isn't more progress on this quickly to make this better. Something isn't working.

jonatan-ivanov commented 9 months ago

That being said there is an active effort to improve completions in Warp in general which may include an API for custom completions support.

I've already mentioned this above but I don't think the quality of completion support of Warp has any relevance here really. I think this is rather about letting the users choose; it does not matter if warp's completion support is good or bad.

I think "no it is not possible" or "no we don't want to because X (e.g.: we are planning to commercialize this in the future)" are fair answers but it seems users are leaving because of the lack of this.

jtokoph commented 9 months ago

So it seems like the issue here is that Warp takes over all input and doesn't send the input to the underlying shell until you press return. Because of this, there is no way to pass through the tab key to the shell, because the shell wouldn't even know about what was typed at the prompt already.

I feel like the bare minimum would be to allow users to update a blocklist of commands in the Warp config that disable the input hijacking and return to direct shell input mode. The lack of this has caused me to give up on warp.

synic commented 7 months ago

I think it should just be possible to disable warp tab completion and let the shell do it. I like all the other features, like output bookmarking, copying, AI, but I do not like the completion at all, and it's something that I use often enough that it makes using warp impossible.

Typing cd ~/Proj and pressing tab should NEVER suggest anything that doesn't start with proj, but the very first suggestion is Pictures. In fact, Projects is the third option, behind two that don't even match anything other than the P. This is not acceptable imho. In the regular shell I can just type cd ~/Proj, hit tab, and it's done. It matched the only available option and didn't make me jump through hoops.

baroldgene commented 6 months ago

This is quickly becoming a missing feature that is pushing me to abandon Warp. I really love what has been done but the tab completion is sub-par compared to system tab completion in 2 regards:

I think the idea that the shell doesn't know what the user has input is a valid one, but one that can be worked around. I would think you could query this from the shell pretty easily. Or create a fake shell, input the command, and see what it would return for tab completion.

jpeyret commented 4 months ago

My $.02, as a recent starter with Warp, user of iTerm2 and, mostly, kitty...

The warp autocomplete feature isn't for me, as is.

Bottom line is that some of this needs local, user and session-specific, shell-level smarts, not trawling through a database of say kubernetes commands to facilitate gnarly kubernetes work. Not even my own past sessions, at least not my case, due to my use of throw away bash functions.

What would work is having a configurable shortcut for shell completion and another for warp completion. Say tab goes to warp and shift tab would go to zsh/bash. Or vice-versa.

So, while I see the benefit in warp, I'm still spending more time on kitty, when warp features get in the way and cannot be turned off.

thedodd commented 3 months ago

When using tools where tab completion will trigger a query to some backing stateful system, such as kubectl get pod <tab>, where it will submit a query and present the list of possible pods, or other shell completions with similar functionality — if warp blocks this functionality, then warp is a hard step backwards in capabilities as a product. Not because warp doesn't have value, but simply because it is blocking industry standard functionality.

There is still room to innovate, just allow for the standard capabilities of shell completions to be accessed.

kensteele commented 3 months ago

[!NOTE]

I'll preface this by saying I absolutely love what the Warp team has built and the innovative take on reimagining the terminal.

However, aside from open sourcing the client, this has been by far the PRIMARY issue preventing me from using Warp as my default terminal. As I'm seeing in a lot of these issues and enhancement requests, a great deal of your users are pleading for standard bash/zsh tab completion due to decades of ingrained muscle memory. The experience is so jarring that it significantly impacts the speed of command-line navigation which so many of us are accustomed to.

I strongly believe that there is a silent majority of would-be users (that would likely quickly become paying customers) that simply abandon Warp the moment they attempt to cd into a nested path using tab-completion and are presented with the tiny dialog window. I'd venture to guess that there's likely a second phase of attrition for those that take the time to see if they can disable the feature by toggling Tab key behavior -> Accept autosuggestion in hopes that it will function like a standard bash/zsh autocomplete.

[!IMPORTANT]

These users will never see the other benefits Warp has to offer because you've already lost them.

I don't suspect this issue is getting the attention it deserves; it would be very interesting to take a look at the telemetry data and see if you can identify the last feature that was invoked by a new user before abandoning it. If it's tab-completion or adjusting the Tab key behavior, it would be prudent to bump the priority on this or open source enough of the client such that the community can fix it for you.

The top-level README of this repo states:

but we are confident that even today the experience is meaningfully better than in other terminals.

This is a bold statement, and I want it to be true.

[!TIP] While taking a deeper look at Warp's plans to open source the client in #400, I came across waveterm which is open source and does tab-completion in the way many are requesting right out of the box.

That said, I'll be happy to revisit Warp once issue #1811 is resolved.

jpeyret commented 3 months ago

You know, a similar consideration can also be found in modern code editors. I make extensive use of VS Code snippets and I also have CoPilot enabled. The editor fudges - it is still somewhat kludgy as I write this - a way to let me choose which one to pick. VS Code doesn't say: "Oh, you use CoPilot? Well, no more snippets for you".