PowerShell 与 Windows Terminal 增强配置 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raawaa
V2EX    PowerShell

PowerShell 与 Windows Terminal 增强配置

  •  
  •   raawaa 2020 年 3 月 1 日 10763 次点击
    这是一个创建于 2150 天前的主题,其中的信息可能已经有所发展或是发生改变。

    双系统切换来切换去还是挺麻烦的。加上 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 年 3 月 1 日

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

    Gruvbox Dark

    20200301034039647_8006.png

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

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

    模块化什么的 bash 也可以做到 不熟悉罢了 基本上我看过很多人写的都奇差无比
    james122333
        17
    james122333  
       2020 年 3 月 1 日
    基本上只是一堆人不会用罢了 (滑稽) 模块化什么的小需求的东西
    james122333
        18
    james122333  
       2020 年 3 月 1 日
    虽然如此我还是不会公开的
    DelayNoMay
        19
    DelayNoMay  
       2020 年 3 月 1 日
    还是喜欢用虚拟机,迁移方便
    jin7
        20
    jin7  
       2020 年 3 月 2 日
    天生就会用 bash? 还不是要先学几个命令. powershell 也一样.
    勿喷 讨厌 powershell 讨厌微软 和我没关系
    james122333
        21
    james122333  
       2020 年 3 月 2 日
    @jin7
    不会有人天生就会
    但是 bash 被低估已经反映出来了
    ps1aniuge
        22
    ps1aniuge  
       2020 年 3 月 3 日
    @nightwitch 命令长,按 tab 啊,
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5020 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 04:00 PVG 12:00 LAX 20:00 JFK 23:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86