Ответ 1
Если это поможет вам вставить символ табуляции в строку с двойными кавычками:
PS> "`t hello"
Задача. По умолчанию нажатие клавиши TAB во время командной строки Windows выдаст имена файлов, а в PowerShell ничего не делает. Я хочу иметь возможность вводить символ TAB в интерактивном режиме, а не через скрипты.
Исследование. Я нашел похожие вопросы на этом сайте и через поиск Google. Найденные решения касались bash (Mac) или iterm (Linux), или предложили перейти на другая программа, такая как TweakUI. Мой вопрос специфичен для Windows PowerShell или командной строки.
Уточнение. Простой тест на то, отвечает ли ваш ответ на мой вопрос, введите echo "1 TAB-method 2"
в PS/CP, где TAB-метод - это ваше предложение о том, как вставить символ TAB. Если эхо дает 1 2
(т.е. 1, за которым следует пробел TAB, а затем 2), это то, что я ищу. Надеюсь, что это поможет, и благодарит всех за то, что нашли время, чтобы посмотреть на вопрос.
Если это поможет вам вставить символ табуляции в строку с двойными кавычками:
PS> "`t hello"
Тест с [ char] 9, например:
$Tab = [char]9
Write-Output "$Tab hello"
Вывод:
hello
В командной строке Windows вы можете отключить выполнение вкладки, запустив ее таким образом:
cmd.exe /f:off
Затем символ табуляции будет отображаться на экране и работать так, как вы ожидаете. Или вы можете отключить символ завершения табуляции или изменить, какой символ используется для завершения табуляции, изменив реестр.
Страница справки cmd.exe
объясняет это:
Вы можете включить или отключить завершение имени файла для определенного вызов CMD.EXE с помощью переключателя /F: ON или /F: OFF. Вы можете включить или отключить завершение для всех вызовов CMD.EXE на машине и/или сеанс входа в систему пользователя, установив один или оба из следующих REG_DWORD в реестре с помощью 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
с шестнадцатеричным значением управляющего символа для использования для конкретного (например, 0x4 - Ctrl-D, а 0x6 - Ctrl-F). Пользовательский настройки имеют приоритет над настройками машины. Командная строка переключатели имеют приоритет над настройками реестра.
Если завершение включено с помощью переключателя /F: ON, два элемента управления используются символы Ctrl-D для завершения имени каталога и Ctrl-F для завершения имени файла. Чтобы отключить конкретное завершение символ в реестре, используйте значение для пробела (0x20), поскольку оно не допустимый управляющий символ.
TAB имеет особое значение в PowerShell. Это для завершения команды. Поэтому, если вы введете "getch", а затем введите TAB. Он изменяет то, что вы набрали в "GetChildItem" (он исправляет случай, хотя это и не нужно).
Из вашего вопроса, похоже, что завершение TAB и завершение команды перегружают ключ TAB. Я уверен, что дизайнеры PowerShell этого не хотели.