2016-05-21 7 views
-2

На пакетном языке консольного окна Microsoft CMD.EXE мне никогда не нравилось, когда моя команда запускается в крайнем правом углу, после длинного отображения пути к каталогу. Так что в моих Панель управления → системные настройки → Advanced System → Переменные среды я сэкономил следующее задание, где $_ походит на Soft Return:Как добиться двухстрочного запроса?

PROMPT=[$P\]$_$+$G$S 

Отображаемое приглашение было две линии, как это:

[C:\Temp\] 
>

(The $+ дорожка pushd и popd, как любитель, чем chdir команды. $S пространство. к слову, ^ символ a line wrap/продолжение символ в пакетном режиме, так же, как обратный результат ` находится в PowerShell.)

Теперь я хочу, чтобы в PowerShell выводилось одно и то же двухстрочное приглашение. Есть хорошие новости и плохие новости.

Хорошей новостью является то, что я могу добиться того, что в моем открытом окне PowerShell, введя в > строке:

function prompt {'[' + $(get-location) + '\] SHIFTENTER > ' 

(По SHIFTENTER я имею в виду нажать клавишу Shift + Введите, что я думаю, что может быть называется «мягкое возвращение»?)

....... дурных вестей, проблема ......

Я хочу поставить выше function prompt ... л ine в мой профиль PowerShell, а именно Microsoft.PowerShell_profile.ps1 (по пути $Profile). Но как?

Notepad.exe не имеет поддержки сдвига + Enter.

MS Word понимает Сдвиг + Enter, но когда я SAVEAS .txt, а затем изучить с Notepad ++, я вижу простой CR-LF (значение \ г \ п, 0x0d 0x0a).

Notepad ++ меню → Edit Character Panel позволяет мне вставлять специальные символы ASCII в мой файл .txt/.ps1, например 0x0B под названием VT (для "вертикальной вкладки"). Но, несмотря на некоторые претензии на веб-сайтах, VT не ведет себя как Soft Return, когда я использую его в файле .ps1 профиля function prompt ... (я также запускаю скрипт .ps1 профиля для повторного тестирования).

Может ли запрос быть создан по профилю .ps1 script?

+0

Итак, как точно это не работает, когда ваш профиль имеет простой CR-LF? – PetSerAl

+0

@PetSerAl. В моем тестировании простая строка новой строки от нажатия Enter не переводит в новую строку в приглашении. Вместо этого теперь я вижу, что [System.Environment] :: NewLine, добавленная в значение строки приглашения, решает всю проблему. Благодарю. – MightyPen

+1

Если вы нашли решение самостоятельно, разместите его как свой собственный ответ. Не редактируйте решение в свой вопрос. –

ответ

0

PowerShell эквивалент вашей пакетной строки является:

function prompt { "[$(Get-Location)\]`r`n$("+"*(Get-Location -Stack).Count)>" } 

#`r`n is just a shorter way of writing [System.Environment]::NewLine 

Добавьте его в профиль, чтобы костюмы ваши потребности:

AllUsersAllHosts:

C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ profile.ps1

AllUsersPowerShell:

C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Microsoft.PowerShell_profile.ps1

AllUsersISE:

C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Microsoft.PowerShellISE_profile.ps1

CurrentUserAllHosts:

C: \ Users \ имя пользователя \ Docum Энты \ WindowsPowerShell \ profile.ps1

CurrentUserPowerShell:

C: \ Users \ имя пользователя \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1

CurrentUserISE:

C: \ Пользователи \ имя_пользователя \ документы \ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1