How do I type a TAB character in PowerShell?

后端 未结 4 1357
迷失自我
迷失自我 2021-02-04 22:53

Task: By default, pressing the TAB key while in Windows Command Prompt will output file names, while it does nothing in PowerShell. I want to be able to type th

相关标签:
4条回答
  • 2021-02-04 23:34

    If it helps you can embed a tab character in a double quoted string:

    PS> "`t hello"
    
    0 讨论(0)
  • 2021-02-04 23:37

    TAB has a specific meaning in PowerShell. It's for command completion. So if you enter "getch" and then type a TAB. It changes what you typed into "GetChildItem" (it corrects the case, even though that's unnecessary).

    From your question, it looks like TAB completion and command completion would overload the TAB key. I'm pretty sure the PowerShell designers didn't want that.

    0 讨论(0)
  • 2021-02-04 23:39

    In the Windows command prompt you can disable tab completion, by launching it thusly:

    cmd.exe /f:off
    

    Then the tab character will be echoed to the screen and work as you expect. Or you can disable the tab completion character, or modify what character is used for tab completion by modifying the registry.

    The cmd.exe help page explains it:

    You can enable or disable file name completion for a particular invocation of CMD.EXE with the /F:ON or /F:OFF switch. You can enable or disable completion for all invocations of CMD.EXE on a machine and/or user logon session by setting either or both of the following REG_DWORD values in the registry using REGEDIT.EXE:

    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
    

    with the hex value of a control character to use for a particular function (e.g. 0x4 is Ctrl-D and 0x6 is Ctrl-F). The user specific settings take precedence over the machine settings. The command line switches take precedence over the registry settings.

    If completion is enabled with the /F:ON switch, the two control characters used are Ctrl-D for directory name completion and Ctrl-F for file name completion. To disable a particular completion character in the registry, use the value for space (0x20) as it is not a valid control character.

    0 讨论(0)
  • 2021-02-04 23:57

    Test with [char]9, such as:

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

    Output:

         hello
    
    0 讨论(0)
提交回复
热议问题