任务:默认情况下,在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),那就是我正在寻找的东西。希望有所帮助,并感谢大家花时间来研究这个问题。
答案 0 :(得分:57)
如果有帮助,您可以在双引号字符串中嵌入制表符:
PS> "`t hello"
答案 1 :(得分:10)
使用[char] 9进行测试,例如:
$Tab = [char]9
Write-Output "$Tab hello"
输出:
hello
答案 2 :(得分:4)
在Windows命令提示符下,您可以通过启动它来禁用选项卡完成:
cmd.exe /f:off
然后标签字符将回显到屏幕并按预期工作。或者,您可以通过修改注册表来禁用选项卡完成字符,或修改用于选项卡完成的字符。
cmd.exe
帮助页面解释了它:
您可以为特定项启用或禁用文件名完成 使用/ F:ON或/ F:OFF开关调用CMD.EXE。你可以启用 或禁用计算机上所有CMD.EXE调用的完成 和/或用户登录会话通过设置以下任一或两个 使用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),因为它不是 一个有效的控制角色。
答案 3 :(得分:1)
TAB在PowerShell中具有特定含义。这是命令完成。因此,如果输入“getch”然后键入TAB。它会将您输入的内容更改为“GetChildItem”(它会更正案例,即使这是不必要的)。
从您的问题来看,看起来TAB完成和命令完成会使TAB键超载。我很确定PowerShell设计师不希望这样。