如何在 PowerShell 中键入 TAB 字符?
Posted
技术标签:
【中文标题】如何在 PowerShell 中键入 TAB 字符?【英文标题】:How do I type a TAB character in PowerShell? 【发布时间】:2014-01-08 13:47:35 【问题描述】:任务:默认情况下,在 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)。这就是我要找的。p>
【问题讨论】:
目前还不清楚当你按下 Tab 时你想要发生什么以及在什么上下文中发生。如果您只想按照 cmd 完成文件名,它应该已经这样做了。 感谢您的澄清,我想在按 TAB 时将 TAB 字符插入命令提示符屏幕。例如,假设我正在运行一个名为 file.exe 的程序,它需要一个输入,例如file.exe 字符串。当我调用程序时,我希望将 instring 作为 TAB。那个插图有帮助吗? 【参考方案1】:如果有帮助,您可以在 双引号字符串:
"`t hello"
【讨论】:
太棒了,这适用于 PS!现在,如果我们也能找到命令提示符的解决方案... 注意:`t 在字面上被视为单引号内的两个字符。以防万一您想知道:单引号表示文字。【参考方案2】:用[char]9测试,如:
$Tab = [char]9
Write-Output "$Tab hello"
输出:
hello
【讨论】:
超级 - 更喜欢这种方法【参考方案3】:在 Windows 命令提示符下,您可以通过启动它来禁用选项卡完成:
cmd.exe /f:off
然后制表符将回显到屏幕上并按预期工作。或者可以禁用tab补全字符,或者通过修改注册表来修改tab补全使用什么字符。
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) 的值,因为它不是 一个有效的控制字符。
【讨论】:
感谢您的回答,无需更改注册表即可。我能够使用 /f:off 参数和禁用的文件名完成启动。【参考方案4】:TAB 键在 PowerShell 中具有特定含义。它用于命令完成。因此,如果您输入“getch”,然后输入 TAB,它会更改您在“GetChildItem”中输入的内容(它会更正大小写,即使这是不必要的)。
从您的问题来看,TAB 完成和命令完成似乎会使 TAB 键过载。我很确定 PowerShell 设计者不希望这样。
【讨论】:
没错,我敢肯定设计师需要分离是有原因的。但是,我需要在 PS 中键入 TAB 字符,并且正如其他链接所建议的那样,bash 和 iterm 确实具有允许将 TAB 作为字符插入的模式。我希望PS中也有类似的方式,比如CTRL + V + TAB? PSReadline (github.com/lzybkr/PSReadline) 现在有点支持这一点 - 您将使用 Ctrl+I 等效于 Tab 但插入该选项卡而不是完成。在某些时候,我会修复它以使其表现得像 tab,但我也会像 bash 一样添加 Ctrl+Q 支持,所以你可以键入 Ctrl+Q,Tab 来插入一个 tab。以上是关于如何在 PowerShell 中键入 TAB 字符?的主要内容,如果未能解决你的问题,请参考以下文章
Qt Quick Controls 2 TextArea`tabChangesFocus`,如何使用Tab键更改焦点,而不是键入Tab字符
如何在 Windows PowerShell 中保存键入的 python 程序? [关闭]