如何在PowerShell中键入TAB字符?

任务 :默认情况下,在Windows命令提示符下按TAB键将输出文件名,而在PowerShell中则不会执行任何操作。 我希望能够以交互模式键入TAB字符,而不是通过脚本。

研究 :我在这个网站上find类似的问题,并通过谷歌search。 find的解决scheme是针对bash (Mac)或iterm (Linux),或build议更改为另一个程序,如TweakUI 。 我的问题是特定于Windows PowerShell或命令提示符。

澄清 :一个简单的testing,你的答案是否适合我的问题是在PS / CP中inputecho "1 TAB-method 2" ,其中TAB方法是你如何插入TAB字符的build议。 如果回声给出1 2 (即1后面跟着TAB空格2),那就是我正在寻找的东西。 希望有所帮助,并感谢大家花时间看问题。

如果有帮助,可以在双引号字符串中嵌入制表符:

 PS> "`t hello" 

用[char] 9测试,如:

 $Tab = [char]9 Write-Output "$Tab hello" 

输出:

  hello 

在Windows命令提示符下,您可以通过启动它来禁用选项卡完成:

 cmd.exe /f:off 

然后,制表符将被回显到屏幕上,并按预期工作。 或者,您可以禁用制表符完成字符,或通过修改注册表来修改用于制表符完成的字符。

cmd.exe帮助页面解释它:

您可以使用/ F:ON或/ F:OFF开关启用或禁用特定的CMD.EXE调用的文件名完成。 您可以通过在注册表中使用REGEDIT.EXE设置以下任何一个或两个REG_DWORD值来启用或禁用在机器和/或用户登录会话上的所有CMD.EXE调用的完成:

 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar and/or HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar 

与控制字符的十六进制值用于特定功能(例如,0x4是Ctrl-D,0x6是Ctrl-F)。 用户特定的设置优先于机器设置。 命令行开关优先于注册表设置。

如果使用/ F:ON开关启用了完成,则使用的两个控制字符是Ctrl-D用于目录名称完成,Ctrl-F用于文件名称完成。 要在注册表中禁用特定的完成字符,请使用空格(0x20)的值,因为它不是有效的控制字符。

TAB在PowerShell中有特定的含义。 这是命令完成。 所以如果你输入“getch”,然后输入一个TAB。 它改变你输入“GetChildItem”(它纠正的情况下,即使这是不必要的)。

从你的问题看来,TAB完成和命令完成将会使TAB键超载。 我很确定PowerShell设计者不需要这个。