如何在PowerShell中键入TAB字符



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

研究:我在这个网站和谷歌搜索中发现了类似的问题。找到的解决方案是寻址Bash(Mac)或iterm(Linux),或者建议更改为另一个程序,如TweakUI。我的问题特定于Windows PowerShell或命令提示符。

澄清:一个简单的测试你的答案是否适用于我的问题,就是在PS/CP中键入echo "1 TAB-method 2",其中TAB方法是你关于如何插入TAB字符的建议。如果回波给出1 2(即,1后面跟着TAB空格,后面跟着2)。这就是我要找的。

如果有帮助,可以在双引号字符串:

"`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。您可以启用或禁用计算机上所有CMD.EXE调用的完成和/或用户登录会话,方法是设置以下任一项或两项使用REGEDIT.EXE的注册表中的REG_DWORD值:

HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorCompletionChar
HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorPathCompletionChar
and/or
HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorCompletionChar
HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorPathCompletionChar

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

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

TAB键在PowerShell中具有特定含义。这是为了完成命令。所以如果你输入";getch";然后键入TAB,它会将您键入的内容更改为";GetChildItem";(它纠正了这种情况,尽管这是不必要的)。

从您的问题来看,TAB完成和命令完成似乎会重载TAB键。我敢肯定PowerShell设计者不希望这样。

最新更新