如何实现两线提示?

时间:2016-05-21 20:04:07

标签: powershell prompt

在Microsoft的CMD.EXE控制台窗口的批处理语言中,在长时间显示目录路径后,我从不喜欢让我的命令从最右边开始。所以在我的控制面板→系统→高级系统设置→环境变量中,我保存了以下作业,其中$_就像一个软回车:

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

显示的提示是两行,如下所示:

[C:\Temp\]
>

$+跟踪pushdpopd,比chdir命令更加漂亮。$S是空格。顺便说一句,{{1} }批处理中的换行符/续行字符,就像PowerShell中的反引号^一样。)

现在我想在PowerShell中使用相同的两行提示符。有好消息和坏消息。

好消息是我可以通过在`提示符下键入我的打开的PowerShell窗口来实现这一点:

>

(通过SHIFTENTER我的意思是按 Shift + 输入,我认为这可能被称为"软回复"?)

.......坏消息,问题......

我想将上述 function prompt {'[' + $(get-location) + '\] SHIFTENTER > ' 行放入我的个人资料PowerShell脚本,即function prompt ...(在路径Microsoft.PowerShell_profile.ps1)。但是如何?

Notepad.exe不支持 Shift + Enter

MS Word理解 Shift + 输入,但是当我保存为.txt,然后用Notepad ++检查时,我看到一个普通的CR-LF(意思是\ r \ nn ,0x0d 0x0a)。

Notepad ++菜单编辑→字符面板使我能够在我的.txt / .ps1文件中插入特殊的ASCII字符,例如0x0b,称为VT(对于"垂直制表符")。但是,尽管在网站上有一些声明,当我在我的$Profile个人资料.ps1文件中使用它时,VT的行为并不像Soft Return(我还运行配置文件.ps1脚本来重新测试)。

我想要的提示是否可以通过配置文件.ps1脚本建立?

1 个答案:

答案 0 :(得分: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 \用户名\文件\ WindowsPowerShell \ profile.ps1

     

<强> CurrentUserPowerShell:

     

C:\ Users \用户名\文件\ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1

     

<强> CurrentUserISE:

     

C:\ Users \用户名\文件\ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1