Windows Shell

Windows Shell

需要使用 Chocolatey 安装相关软件包,如不了解可以查阅 /2019/10/03/choco/ 文章。

样例演示

初始界面

高亮目录

版本控制

快速搜索

基本组件

PowerShell

微软开发的任务自动化和配置管理框架,由 .NET Framework 和 .NET Core 构建的命令行界面,跨平台并已经开源。

PSFzf

Fzf 是非常强大的模糊搜索工具,几乎可以用来快速搜索查找任何列表内容,如:命令行历史记录,Git 分支,Git Commit,进程等等。其他任何可以生成列表输出的命令行工具都可以通过管道到 Fzf 上进行快速模糊搜索查找。

PSFzf 是针对 Fzf 的简单包装,以便在 PowerShell 中使用。

安装 Fzf

choco install fzf

安装 PSFzf

Install-Module -Name PSFzf

Get-ChildItemColor

提供 Get-ChildItem CmdletGet-ChildItem | Format-Wide (相当于 ls)的彩色输出。

安装 Get-ChildItemColor

Install-Module -Name Get-ChildItemColor

PSReadLine

替代了 PowerShell 3 及更高版本的的命令行编辑体验。

包括:

  • 语法高亮
  • 简单语法错误提示
  • 良好的多行体验(包括编辑和历史记录)
  • 可自定义的键绑定
  • Cmd 和 Emacs 模式(尚未完全实现)
  • 许多配置选项
  • Bash 样式完成(在 Cmd 模式下为可选,在 Emacs 模式下为默认)
  • Bash / Zsh 样式交互式历史记录搜索(CTRL-R)
  • Emacs yank/kill ring
  • 撤销重做
  • 自动保存历史记录,包括在实时会话中共享历史记录
  • 通过 Ctrl + Space 进行补全(类似于 Intellisense)

开箱即用的体验,无需学习任何新的键位。

安装 PSReadLine

Install-Module PSReadLine

PoshGit

通过在 PowerShell 提示符中显示 Git 的状态信息来集成 Git 与 PowerShell。PoshGit 还为常用 Git 命令,分支名称,路径等提供补全支持。例如使用 PoshGit 时可以使用 git ch 来自动补全 git checkout 命令。

安装 PoshGit

PowerShellGet\Install-Module posh-git -Scope CurrentUser -AllowPrerelease -Force

或者:

choco install poshgit

其他工具

Z.lua

可以通过学习你的使用习惯来帮助你更快速的在目录间导航。

基于使用频率来跟踪你最常用的目录,在短暂学习之后,将可以自动匹配你最常用的目录。例如最常使用 ~/GitHub~/Develop/Gosicks 目录,则之后只需要 z githubz gosicks 即可。

Z.lua 同样支持 Fzf,可以使用 Fzf 来快速过滤 Z.lua 结果。例如 z -I Gosicks 则会在 Fzf 中列出最常用的匹配 Gosicks 的文件夹路径。

安装 Z.lua

使用 Git 克隆 Z.lua 到 GitHub 目录。

cd ~/GitHub/
git clone https://github.com/skywind3000/z.lua.git

使用 Chocolatey 安装 Lua 解释器。

choco install lua

在 PowerShell 配置 $PROFILE 末尾添加:

iex ($(lua ~/GitHub/z.lua/z.lua --init powershell) -join "`n")

Windows Terminal

Build 2019 登场的 Windows Terminal 是一个面向命令行用户的全新,现代,功能丰富,高效的终端应用程序。 它包括Windows命令行社区最常请求的许多功能,包括对选项卡,富文本,全球化,可配置性,主题和样式等的支持。终端还需要满足我们的目标和措施,以确保它保持快速,高效,并且不会消耗大量的内存或电量。

Sudo

类似于 Linux 上的 Sudo,可以在不切换当前用户状态下使用 Admin 权限执行命令。例如在用户权限的 PowerShell 中使用 sudo choco install chrome 而不必另外重新开启一个 Admin 权限的 PowerShell。

安装 Sudo

choco install sudo

Sarasa Term SC

一种基于Iosevka和Source Han Sans的中文和日语编程字体,一种字体包括中英日,字体清晰漂亮。

配置设置

PowerShell

推荐安装使用最新版本 PowerShell

打开 PowerShell 配置:

code $PROFILE
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
function Test-Administrator {
    $user = [Security.Principal.WindowsIdentity]::GetCurrent();
    (New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

function prompt {
    $origLastExitCode = $LastExitCode
    Write-VcsStatus

    if (Test-Administrator) {  # if elevated
        Write-Host "(Elevated) " -NoNewline -ForegroundColor DarkGray
    }

    Write-Host "# " -NoNewline -ForegroundColor Black
    #Write-Host "$env:USERNAME" -NoNewline -ForegroundColor Blue
    Write-Host "キノ" -NoNewline -ForegroundColor Blue
    Write-Host "@" -NoNewline -ForegroundColor Black
    #Write-Host "$env:COMPUTERNAME" -NoNewline -ForegroundColor Yellow
    Write-Host "加藤" -NoNewline -ForegroundColor Yellow
    Write-Host " 恵" -NoNewline -ForegroundColor Red
    Write-Host " : " -NoNewline -ForegroundColor DarkGray

    $curPath = $ExecutionContext.SessionState.Path.CurrentLocation.Path
    if ($curPath.ToLower().StartsWith($Home.ToLower()))
    {
        $curPath = "~" + $curPath.SubString($Home.Length)
    }

    Write-Host $curPath -NoNewline -ForegroundColor DarkYellow
    Write-Host " : " -NoNewline -ForegroundColor DarkGray
    Write-Host (Get-Date -Format G) -NoNewline -ForegroundColor Cyan
    $LastExitCode = $origLastExitCode
    "`n$(' >' * ($nestedPromptLevel + 1)) "
}

Import-Module posh-git

$GitPromptSettings.BeforeStatus = ' [ git:'
$GitPromptSettings.AfterStatus = " ] `n > "

Import-Module Get-ChildItemColor

Set-Alias l Get-ChildItemColor -option AllScope
Set-Alias ls Get-ChildItemColorFormatWide -option AllScope

Import-Module PSReadLine

Set-PSReadlineOption -EditMode Emacs
Set-PSReadLineOption -HistoryNoDuplicates
Set-PSReadLineOption -HistorySearchCursorMovesToEnd
Set-PSReadLineOption -HistorySaveStyle SaveIncrementally
Set-PSReadLineOption -MaximumHistoryCount 4000
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward

Set-PSReadlineKeyHandler -Chord 'Shift+Tab' -Function Complete
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete

Remove-PSReadlineKeyHandler 'Ctrl+t','Ctrl+r'
Import-Module PSFzf -ArgumentList 'Ctrl+t','Ctrl+r'

function Switch-User
{
    param($Process="pwsh.exe")
    $cred = Get-Credential
    Start-Process $Process -Credential $cred  -LoadUserProfile
}

Windows Terminal

可以从 Microsoft AppStore 安装

{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "globals" :
    {
        "alwaysShowTabs" : true,
        "defaultProfile" : "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
        "initialCols" : 120,
        "initialRows" : 30,
        "keybindings" :
        [
            {
                "command" : "closeTab",
                "keys" :
                [
                    "ctrl+w"
                ]
            },
            {
                "command" : "newTab",
                "keys" :
                [
                    "ctrl+t"
                ]
            },
            {
                "command" : "newTabProfile0",
                "keys" :
                [
                    "ctrl+shift+1"
                ]
            },
            {
                "command" : "newTabProfile1",
                "keys" :
                [
                    "ctrl+shift+2"
                ]
            },
            {
                "command" : "newTabProfile2",
                "keys" :
                [
                    "ctrl+shift+3"
                ]
            },
            {
                "command" : "newTabProfile3",
                "keys" :
                [
                    "ctrl+shift+4"
                ]
            },
            {
                "command" : "newTabProfile4",
                "keys" :
                [
                    "ctrl+shift+5"
                ]
            },
            {
                "command" : "newTabProfile5",
                "keys" :
                [
                    "ctrl+shift+6"
                ]
            },
            {
                "command" : "newTabProfile6",
                "keys" :
                [
                    "ctrl+shift+7"
                ]
            },
            {
                "command" : "newTabProfile7",
                "keys" :
                [
                    "ctrl+shift+8"
                ]
            },
            {
                "command" : "newTabProfile8",
                "keys" :
                [
                    "ctrl+shift+9"
                ]
            },
            {
                "command" : "nextTab",
                "keys" :
                [
                    "ctrl+tab"
                ]
            },
            {
                "command" : "openSettings",
                "keys" :
                [
                    "ctrl+,"
                ]
            },
            {
                "command" : "prevTab",
                "keys" :
                [
                    "ctrl+shift+tab"
                ]
            },
            {
                "command" : "scrollDown",
                "keys" :
                [
                    "ctrl+shift+down"
                ]
            },
            {
                "command" : "scrollDownPage",
                "keys" :
                [
                    "ctrl+shift+pgdn"
                ]
            },
            {
                "command" : "scrollUp",
                "keys" :
                [
                    "ctrl+shift+up"
                ]
            },
            {
                "command" : "scrollUpPage",
                "keys" :
                [
                    "ctrl+shift+pgup"
                ]
            },
            {
                "command" : "switchToTab0",
                "keys" :
                [
                    "alt+1"
                ]
            },
            {
                "command" : "switchToTab1",
                "keys" :
                [
                    "alt+2"
                ]
            },
            {
                "command" : "switchToTab2",
                "keys" :
                [
                    "alt+3"
                ]
            },
            {
                "command" : "switchToTab3",
                "keys" :
                [
                    "alt+4"
                ]
            },
            {
                "command" : "switchToTab4",
                "keys" :
                [
                    "alt+5"
                ]
            },
            {
                "command" : "switchToTab5",
                "keys" :
                [
                    "alt+6"
                ]
            },
            {
                "command" : "switchToTab6",
                "keys" :
                [
                    "alt+7"
                ]
            },
            {
                "command" : "switchToTab7",
                "keys" :
                [
                    "alt+8"
                ]
            },
            {
                "command" : "switchToTab8",
                "keys" :
                [
                    "alt+9"
                ]
            }
        ],
        "requestedTheme" : "system",
        "showTabsInTitlebar" : true,
        "showTerminalTitleInTitlebar" : true,
        "wordDelimiters" : " ./\\()\"'-:,.;<>[email protected]#$%^&*|+=[]{}~?\u2502"
    },
    "profiles" :
    [
        {
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "ayu_light",
            "commandline" : "cmd.exe",
            "cursorColor" : "#3B78FF",
            "cursorShape" : "bar",
            "fontFace" : "Sarasa Term SC",
            "fontSize" : 13,
            "guid" : "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png",
            "name" : "Command",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : false
        },
        {
            "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
            "hidden": false,
            "name": "PowerShell Core",
            "source": "Windows.Terminal.PowershellCore",
            "acrylicOpacity" : 0.75,
            "backgroundImage" : "C:\\路径\\windows_terminal_01.png",
            "backgroundImageAlignment" : "bottomRight",
            "backgroundImageOpacity" : 0.5,
            "backgroundImageStretchMode" : "none",
            "closeOnExit" : true,
            "colorScheme" : "ayu_light",
            "cursorColor" : "#6E7782",
            "cursorShape" : "bar",
            "fontFace" : "Sarasa Term SC",
            "fontSize" : 13,
            "historySize" : 9001,
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "tabTitle" : "\u52a0\u85e4 \u6075 Shell",
            "useAcrylic" : false
        }
    ],
    "schemes" :
    [
        {
            "background" : "#FAFAFA",
            "black" : "#000000",
            "blue" : "#41A6D9",
            "brightBlack" : "#323232",
            "brightBlue" : "#73D8FF",
            "brightCyan" : "#7FF1CB",
            "brightGreen" : "#B8E532",
            "brightPurple" : "#FFA3AA",
            "brightRed" : "#FF6565",
            "brightWhite" : "#bdbbbb",
            "brightYellow" : "#FFC94A",
            "cyan" : "#4DBF99",
            "foreground" : "#5C6773",
            "green" : "#86B300",
            "name" : "ayu_light",
            "purple" : "#F07178",
            "red" : "#FF3333",
            "white" : "#FFFFFF",
            "yellow" : "#F29718"
        }
    ]
}

其他附带

windows_terminal_01.png


文章作者: REPL\ acgio
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 REPL\ acgio !
 上一篇
使用 Hexo 在 GitHub Pages 上免费搭建 Blog 使用 Hexo 在 GitHub Pages 上免费搭建 Blog
Hexo https://hexo.io Hexo 是什么?Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 环境依赖安装 Hexo 相当
2019-10-05
下一篇 
软件包管理工具 Chocolatey 软件包管理工具 Chocolatey
ThePackage Manager for Windows 简介Chocolatey 是一款 Windows 操作系统上的自动化软件包管理工具,功能类似 macOS 上的 Homebrew 或 Debian / Ubuntu 上的
2019-10-03
  目录