raawaa

PowerShell 与 Windows Terminal 增强配置

  •  
  •   raawaa · Mar 1, 2020 · 11087 views
    This topic created in 2267 days ago, the information mentioned may be changed or developed.

    双系统切换来切换去还是挺麻烦的。加上 Windows Terminal + PowerShell 的体验越来越好于是去年年底把 Arch Linux 彻底卸掉了。本身不是专业的,在终端里最多就是批处理一下文件,PowerShell 开箱即用虽然挺糟糕,但是调教一下还是够用了。

    PSReadLine

    PSReadLine 是 PowerShell 的官方模块,为 PowerShell 提供了缺失的交互特性。例如像 zsh/fish 那样的交互式的补全、语法高亮、emacs 按键模式等等。有了 PSReadLIne 之后的 PowerShell 才终于像点样了。

    安装(详见官方项目 README):

    Install-Module PSReadLine
    

    安装之后,PSReadLine 的一些特性并不会自动启用,可以在 PowerShell 的 profile 配置文件里自己按需配置。但是自己从头搞毕竟很烦,直接白嫖官方提供的配置样例就可以,已经非常好用了。

    posh-git 与 oh-my-posh

    posh-git 可以为 PowerShell 提供 git 命令补全。oh-my-posh 可以美化 prompt,提供各种主题。直接把两个一起安上:

    Install-Module posh-git -Scope CurrentUser
    Install-Module oh-my-posh -Scope CurrentUser
    

    在 profile 配置文件中启用模块并选择 prompt 样式主题:

    Import-Module posh-git
    Import-Module oh-my-posh
    Set-Theme Powerlevel10k-Lean
    

    Windows Terminal 美化

    主要是配置字体和配色方案。配色方案可以在 iTerm2-Color-Schemes 这个项目中挑选。个人比较喜欢 Gruvbox Dark 配色。

    Gruvbox Dark 配色预览

    在 Windows Terminal 配置文件中加入 Gruvbox Dark 配色方案。

    "schemes": [
        {
            "name": "Gruvbox Dark",
            "black": "#1e1e1e",
            "red": "#be0f17",
            "green": "#868715",
            "yellow": "#cc881a",
            "blue": "#377375",
            "purple": "#a04b73",
            "cyan": "#578e57",
            "white": "#978771",
            "brightBlack": "#7f7061",
            "brightRed": "#f73028",
            "brightGreen": "#aab01e",
            "brightYellow": "#f7b125",
            "brightBlue": "#719586",
            "brightPurple": "#c77089",
            "brightCyan": "#7db669",
            "brightWhite": "#e6d4a3",
            "background": "#1e1e1e",
            "foreground": "#e6d4a3"
       }
    ]
    

    在 PowerShell 的 profile 部分选择 Gruvbox Dark 作为配色方案。同时做一些其他调整(因为 Windows Terminal 支持字体 ligature,所以选择了 Fira Code 字体):

    {
        // Make changes here to the powershell.exe profile
        "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
        "name": "Windows PowerShell",
        "commandline": "powershell.exe",
        "hidden": false,
        "fontFace": "Fira Code",  
        "fontSize": 11,
        "colorScheme": "Gruvbox Dark",
        "cursorShape": "vintage"
    }
    

    最终效果

    Supplement 1  ·  Mar 1, 2020

    文章里的图片好像挂了。补充两张预览图。

    Gruvbox Dark

    20200301034039647_8006.png

    22 replies    2020-03-03 14:34:23 +08:00
    wzxlovesy
        1
    wzxlovesy  
       Mar 1, 2020 via Android
    图好像挂了?
    leido
        2
    leido  
       Mar 1, 2020 via Android
    感谢楼主分享,我是 win10 用 wsl 配合 ubuntu,安装了 oh my zsh,基本满足需求
    nightwitch
        3
    nightwitch  
       Mar 1, 2020
    不加 alias 的 powershell 命令又臭又长,不翻 msdn 根本记不住
    Chingim
        4
    Chingim  
       Mar 1, 2020 via Android
    用 powershell 的都是大佬,只会 bash
    laincat
        5
    laincat  
       Mar 1, 2020
    没看到有图啊?
    fengyj
        6
    fengyj  
       Mar 1, 2020 via Android
    @nightwitch #3
    不会啊,命令基本是 动词-名词 形式,记住动词和名词的前几个字母,tab 键就 OK 啊
    TangMonk
        7
    TangMonk  
       Mar 1, 2020
    @huiyifyj #6 还是不太习惯 powershell,bash 好用点。尽量用 wsl
    zchlwj
        8
    zchlwj  
       Mar 1, 2020
    @leido 这样是两台机器,环境什么的要配置两次,还是很麻烦
    lovedebug
        9
    lovedebug  
       Mar 1, 2020
    折腾过,现在耐心等 wsl2 然后 bash 搞起来
    Tumblr
        10
    Tumblr  
       Mar 1, 2020
    没 PSReadLine 我都不会用了 😂
    目前 PowerShell 的模块越来越多了,包括正在 alpha 阶段的 Secrets Management,包括第三方的 ImportExcel 以及各行业相关的( vmware、mssql、mysql、oracle 等等),确实在非常快速地成长。
    leido
        11
    leido  
       Mar 1, 2020
    @zchlwj wsl 是 Windows Subsystem for Linux,Linux 终端就像普通 windows 应用一样用
    zchlwj
        12
    zchlwj  
       Mar 1, 2020
    @leido  我在ide里面将默认终端改成过wsl,要配置两份环境变量,还是挺麻烦的
    Varobjs
        13
    Varobjs  
       Mar 1, 2020
    IDE 自带 terminal 够我用了
    visitantzj
        14
    visitantzj  
       Mar 1, 2020
    @nightwitch powershell 的"动词-对象"/alias 的命令名称设计我觉得简直天才,只要掌握几个基本的词后根本不用记命令

    linux terminal 一段时间不用还得 help/man 一下,powershell 是随手就可以捡起来用
    fengyj
        15
    fengyj  
       Mar 1, 2020
    @visitantzj #14
    确实,这样更接近自然语言。而且 bash 脚本麻烦的一点就是一个脚本一个文件,PowerShell 倒是可以多个文件运行一个脚本(再加上模块化的支持,就显得更容易处理复杂的脚本任务)。
    james122333
        16
    james122333  
       Mar 1, 2020
    @huiyifyj

    模块化什么的 bash 也可以做到 不熟悉罢了 基本上我看过很多人写的都奇差无比
    james122333
        17
    james122333  
       Mar 1, 2020
    基本上只是一堆人不会用罢了 (滑稽) 模块化什么的小需求的东西
    james122333
        18
    james122333  
       Mar 1, 2020
    虽然如此我还是不会公开的
    DelayNoMay
        19
    DelayNoMay  
       Mar 1, 2020
    还是喜欢用虚拟机,迁移方便
    jin7
        20
    jin7  
       Mar 2, 2020
    天生就会用 bash? 还不是要先学几个命令. powershell 也一样.
    勿喷 讨厌 powershell 讨厌微软 和我没关系
    james122333
        21
    james122333  
       Mar 2, 2020
    @jin7
    不会有人天生就会
    但是 bash 被低估已经反映出来了
    ps1aniuge
        22
    ps1aniuge  
       Mar 3, 2020
    @nightwitch 命令长,按 tab 啊,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1461 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 17:00 · PVG 01:00 · LAX 10:00 · JFK 13:00
    ♥ Do have faith in what you're doing.