任务:默认情况下,在 Windows 命令提示符中按 TAB 键将输出文件名,而在 PowerShell 中则不执行任何操作。我希望能够在交互模式下键入 TAB 字符,而不是通过脚本。
研究:我在这个网站上和通过 Google 搜索发现了类似的问题。找到的解决方案是解决 Bash (Mac) 或 iterm (Linux),或建议更改为其他程序,例如 TweakUI。我的问题特定于 Windows PowerShell 或命令提示符。
澄清:对您的答案是否适用于我的问题的简单测试是在 PS/CP 中输入 echo "1 TAB-method 2"
,其中 TAB-method 是您对如何插入 TAB 字符的建议。如果回显给出 1 2
(即,1 后跟 TAB 空格,后跟 2)。这就是我要找的。
如果有帮助,您可以在双引号字符串中嵌入制表符:
"`t hello"
用 [char]9 进行测试,例如:
$Tab = [char]9
Write-Output "$Tab hello"
输出:
hello
在 Windows 命令提示符下,您可以通过启动它来禁用选项卡完成:
cmd.exe /f:off
然后制表符将回显到屏幕上并按预期工作。或者你可以禁用tab补全字符,或者通过修改注册表来修改tab补全使用什么字符。
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 和/或 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 设计者不希望这样。
不定期副业成功案例分享