PowerShell / Win32-OpenSSH

Win32 port of OpenSSH
7.33k stars 754 forks source link

sftp tab completion #1986

Open aiguy110 opened 2 years ago

aiguy110 commented 2 years ago

Can we re-open this feature request from the old Win32-OpenSSH repo? It looks like it was closed back in 2017 with the answer "auto complete functionality is provided by the terminals and not by the sftp"... but I can't bring myself to believe this answer.

First, this functionality does work on Linux (confirmed using WLS Ubuntu 20.04 sftp client). Let's assume from a moment the person who closed this meant "shell" instead of "terminal", since claiming the terminal should handle this is even more absurd. This still doesn't seem like something the shell program, bash in the working case, could possibly be handling, since it presumably doesn't know about things like the current remote directory, that are part of either the sftp client or server's internal state. (Sorry I don't know enough to know which.)

Instead of asking PowerShell to somehow handle this (as the old issue-closer seems to suggest), it seems perfectly reasonable to me to expect the sftp client to intercept tab characters, and instead of echoing them to stdout, do the equivalent of an ls, and either fill in the rest of the characters required to get to the one possible result (if there is only on possible result), or, if there are many, fill in as many characters as all possible results have in common. This is the functionality you get with the Linux client and it would be SUPER convenient if the Windows client had it too.

gang929 commented 1 year ago

About sftp tab completion is invaild, It's maybe that the USE_LIBEDIT is not config in win32 build.

haoenz commented 1 year ago

After seeing the reply to that issue (e.g. "auto complete functionality is provided by the terminals and not by the sftp"), I've tried the following combinations (wt means Windows Terminal and moba means MobaXterm) :

Shell and Terminal (if not default) SFTP tab completion
pwsh No
cmd No
git bash No
pwsh in wt No
cmd in wt No
WSL in wt Yes
moba local No
pwsh in moba No
cmd in moba No
WSL in moba No

So…I don't think it depends on terminal…