作为开发者,我们的大部分时间都是在 OSX 和 Linux 上编写代码,我们很好奇现代命令行设置在 Windows 上会是什么样子。
Stack Overflow 的一项开发者调查提醒我们,使用 Windows 的开发者数量比其他任何操作系统都多,因此我们很想知道,其中的工具是否与我们在 *nix 大陆上使用的不相上下。
在评估了 Windows CLI 工具的现状后,我们确定了一套工具,我们认为这套工具可以帮助我们实现 95% 的目标。
归根结底,我们发现了以下问题:
- PowerShell
- ConEmu
- PSReadLine
- PSGet
- 巧克力味
- Babun(可选)
请参阅下文,了解这些不同机械装置的更多注意事项。
PowerShell (shell)
- 与 cmd.exe 相比,更接近真正的“shell”,为我们提供强大的脚本环境来实现任务自动化。不妨将其与 Bash 或 zsh 进行比较。
- 自动补全目录和文件名
- 自动补全应用名称
- 具有集成的别名和命令(称为 cmdlet,例如
Select-String
类似于grep
,Invoke-Elevated
类似于sudo
,Sort-Object
类似于sort
,Get-Process
列出了所有活跃进程)。如果从其他 shell 移至 PS,则Set-Alias
可让您将熟悉的别名映射到 Windows 等效项。例如:在使用server
别名时,Set-Alias server python -m http.server 8000
会启动 Python 服务器。 - 别名可保存在 PowerShell 配置文件中
- 支持管道,例如 Unix。与 Unix 不同的是,它传送的是对象,而非文本流。这需要熟悉,但又可以避免在想要出手房源时进行重修。
- 支持模块。PSGet 是 PowerShell 的软件包管理器,可让您轻松对其进行扩展。
- (可选)考虑使用 Posh-Git,这是一个适用于 Git 的 PowerShell 脚本,可补全上下文。
如果您对知识问答感兴趣,可以参考下方的答案,了解 MS 为何从首席架构师创建 PowerShell。
PSReadLine(控制台修改帮助程序)
- 显著提升控制台修改体验
- 在您开始输入命令时突出显示语法。使用红色“>”字符清楚地表示语法错误。
- 高度可定制的按键组合
- Bash 样式的自动补全
- Bash/zsh 交互式历史记录搜索 (Ctrl + R)。此外,还具有强大的命令历史记录遍历功能。使用箭头键可轻松查看之前的多行命令,而不只是命令的最后一行。
- 适当支持复制/粘贴/剪切(Ctrl+C/X/V 应该可以正常完成)
- 很好地支持撤消/重做
- 自动保存历史记录
或者,您也可以使用 Clink,它具有一组类似功能,但并未完全针对 PowerShell 编写。
ConEmu(控制台主机)
- 一种高级控制台模拟器,您可以在其中运行所选的 shell。
- 支持在不同标签页中打开多个终端。让以不同用户身份启动终端变得轻而易举。
- 自定义程度极高 - 从快捷方式到文本选择和状态栏颜色的所有操作都可以更改。
- 支持分屏视图
- 简单的 GUI 应用可以在标签页中运行
- 支持 Windows 7+ 跳转列表
- 支持平滑的窗口大小调整
- Windows 字体抗锯齿
- 起始标签页可完全自定义,以在特定目录中启动
- 智能复制/粘贴
有些人仍然喜欢使用 Console2,Scott Hanselman 写过一篇博文。
Cmder
值得一提的是,Cmder 是融合了 ConEmu、Clink 和 msysgit 的控制台模拟软件包,可为您提供 Git 帮助程序。Cmder 基本上是通过 Monokai 配色方案默认为您提供更美观的 ConEmu 体验。
Cmder 还包含一些其他的小优势,例如与 GUI 应用(例如 Sublime Text)集成。
Chocolatey(软件包管理器)
- 基本上是适用于 Windows 的 HomeBr,让您能够轻松安装自己喜爱的 Windows 应用。目前,您可以直接使用 Chocolatey 更新大约 3,000 个套餐。
- 与 Nuget 的不同之处。NuGet 用于开发库。Chocolatey 是一个二进制机器软件包管理器,基于 NuGet 基础架构构建。
- 提供有效的静默 build
您可能还想了解 Microsoft 的软件包管理器 OneGet,它可以在 Windows 10 系统下与 Chocolatey 配合使用。
Babun(Cygwin 已预配置)
- Cygwin(适用于 Windows 的类似 Linux 的环境)排除了一些历史上已知的怪异行为。使用 Babun 安装程序进行的整体设置要简单得多。如果您在 Unix 方面尤为有经验,并且希望避免学习 PowerShell,那么 cygwin/Babun 非常值得考虑。
- 包含一个名为
pact
的软件包管理器(有点类似于brew
),类似于apt-get
。这很重要,因为您目前在添加软件包时必须重新运行 Cygwin 安装程序,而不是仅使用 pact。 - 预安装和预配置的 Vim
- 集成了对 oh-my-zsh 的支持
- 自动更新