如何在 PowerShell 中键入 TAB 字符?

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

研究 : 我在这个网站和通过谷歌搜索找到了类似的问题。找到的解决方案是寻址 巴斯(Mac)或 项目(Linux) ,或者建议更改为另一个程序,如 崔崔。我的问题是针对 Windows PowerShell 或命令提示符的。

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

158248 次浏览

TAB键在 PowerShell 中具有特定的含义。这是为了完成指令。因此,如果您输入“ getch”,然后键入一个 TAB,它会将您键入的内容更改为“ GetChildItem”(它会更正大小写,即使这是不必要的)。

从您的问题来看,似乎 TAB 完成和命令完成将使 TAB 键超载。我很确定 PowerShell 的设计师们不希望这样。

如果有帮助,您可以将制表符嵌入到 双引号字符串:

"`t hello"

使用[ char ]9进行测试,例如:

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

产出:

     hello

在命令提示符中,你可以通过这样启动来禁用 tab 补全:

cmd.exe /f:off

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

cmd.exe帮助页面对此进行了解释:

可以启用或禁用特定文件的文件名完成 使用/F: ON 或/F: OFF 开关调用 CMDEXE 或禁用机器上所有 CMDEXE 调用的完成 和/或用户登录会话,方法是设置以下任一项或两项 使用 REGEDIT.EXE 的注册表中的 REG _ DWORD 值:

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)的值,因为它不是 有效的控制字符。