我是一名在 Linux 和 BSD 系统上“出生和长大”的开发人员,我已经习惯了使用高级控制台工具(例如,像 bash 这样的 posix shell)。我的职业生涯发生了变化,这意味着我大部分时间都在 Windows 环境中工作,相比之下,控制台功能真的很差。传统的 Windows 控制台环境完全是个笑话,甚至大多数第三方改进尝试也没有好多少。PowerShell 是朝着正确方向迈出的一大步,但控制台应用程序本身仍然远远落后于 Unix 20 年的发展水平。
是否有人知道支持像 posix shell 一样的高级命令行编辑的 PowerShell 控制台应用程序? 我对 emacs 模式编辑特别感兴趣,并且我还希望能够将我的窗口大小调整为任意大小,这与 Windows 自带的本机控制台应用程序不同。
答案1
这不是你想要的,但你有没有考虑过赛格威? 您会感到宾至如归。
答案2
它不是 emacs,但是 vim 有一个控制台版本。
我还没有在 Windows 上使用过它,所以无法评论它的可用性。
除此之外,这些使得 cmd 变得更加有趣。
答案3
经过这么长时间,我终于找到了我喜欢的解决方案:ConEmu + Clink。不仅仅是 ConEmu,还有Ethan Brown 的 ConEmu 配置:
可以通过 Chocolatey 安装。我强烈推荐这种配置;ConEmu 很棒,但将其配置成看起来不错的东西却很麻烦。以下是安装方法
PS> choco install EthanBrown.ConEmuConfig
另外,请注意,我正在使用碰杯也提供了类似 GNU readline 的行编辑功能,我非常喜欢。Clink 的可用方式如下:
PS> choco install Clink
Clink 安装程序将编辑您的,$profile
以便您将其注入到正在运行的主机进程中。
答案4
您可以通过操作 $host.ui.rawui.WindowSize 属性来动态调整窗口大小。
在您的个人资料中使用类似这样的功能
Function Set-WindowSize {
Param([int]$x=$host.ui.rawui.windowsize.width, [int]$y=$host.ui.rawui.windowsize.heigth)
$size=New-Object System.Management.Automation.Host.Size($x,$y)
$host.ui.rawui.WindowSize=$size
}
然后调用该函数:
Set-WindowSize 100 50
您可以直接在控制台上执行许多操作,例如动态创建函数:
PS C:\> Function Try-Me {
>> write-host "Hello $env:username"
>> get-date
>> }
>>
PS C:\> try-me
Hello Jeff
Monday, November 09, 2009 1:08:13 PM
PowerShell 的 cmdlet 还可以做更多的事情。过去需要 20 行脚本才能完成的事情现在只需一行 PowerShell 表达式即可完成。最后,由于 PowerShell 是一个基于对象的 shell,因此您可以从 PrimalScript 等脚本 IDE 中获得更多功能,而不仅仅是在控制台中编辑文本。