如何在 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 程序? [关闭]

如何收听在 Java 中按下/键入的 TAB 键?

在 Powershell 中建立参数后使用 Tab Complete

Linux常用快捷键

注册表怎么禁用powershell