V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raawaa
V2EX  ›  PowerShell

PowerShell 与 Windows Terminal 增强配置

  •  
  •   raawaa · 2020-03-01 03:50:56 +08:00 · 9866 次点击
    这是一个创建于 1738 天前的主题,其中的信息可能已经有所发展或是发生改变。

    双系统切换来切换去还是挺麻烦的。加上 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"
    }
    

    最终效果

    第 1 条附言  ·  2020-03-01 12:43:53 +08:00

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

    Gruvbox Dark

    20200301034039647_8006.png

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

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

    模块化什么的 bash 也可以做到 不熟悉罢了 基本上我看过很多人写的都奇差无比
    james122333
        17
    james122333  
       2020-03-01 15:11:33 +08:00
    基本上只是一堆人不会用罢了 (滑稽) 模块化什么的小需求的东西
    james122333
        18
    james122333  
       2020-03-01 15:12:11 +08:00
    虽然如此我还是不会公开的
    DelayNoMay
        19
    DelayNoMay  
       2020-03-01 15:40:22 +08:00
    还是喜欢用虚拟机,迁移方便
    jin7
        20
    jin7  
       2020-03-02 00:04:12 +08:00
    天生就会用 bash? 还不是要先学几个命令. powershell 也一样.
    勿喷 讨厌 powershell 讨厌微软 和我没关系
    james122333
        21
    james122333  
       2020-03-02 21:15:53 +08:00
    @jin7
    不会有人天生就会
    但是 bash 被低估已经反映出来了
    ps1aniuge
        22
    ps1aniuge  
       2020-03-03 14:34:23 +08:00
    @nightwitch 命令长,按 tab 啊,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1577 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:00 · PVG 01:00 · LAX 09:00 · JFK 12:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.