The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何在 PowerShell 中加入鍵盤快速鍵並模擬 Linux shell 下的操作體驗

我在 Windows 命令提示字元有安裝 Clink 工具,可以提供你在命令提示字元 (CMD) 環境下也可以擁有跟 Bash 一樣的操作體驗。但在 Windows PowerShell 底下,就一直沒有類似的工具可以用,但是從 PowerShell 5.1 與 PowerShell Core 6 開始,就可以原生支援擴充 PowerShell 模式下的快速鍵,快來看看怎樣設定吧!

設定自訂的常用鍵盤快速鍵

  1. 首先,開啟 Windows PowerShell 之後,可以先開啟 $PROFILE 檔案

    notepad $PROFILE
    

    請注意:這裡的 $PROFILE 其實是一個變數,儲存的是指向 PowerShell profile 的檔案路徑,用來定義預設的環境變數、客製化執行環境、匯入其他模組、...等等。不同的 PowerShell 執行環境,就可能會指向到不同的 $PROFILE 檔案!

  2. 再者,加入必要的 Set-PSReadlineKeyHandler 命令,設定鍵盤快速建與內建函式的組合

    我目前設定的鍵盤快速鍵並不多,只有以下 4 個,也是我最常用的 4 個:

    # 設定按下 Ctrl+d 可以退出 PowerShell 執行環境
    Set-PSReadlineKeyHandler -Chord ctrl+d -Function ViExit
    
    # 設定按下 Ctrl+w 可以刪除一個單字
    Set-PSReadlineKeyHandler -Chord ctrl+w -Function BackwardDeleteWord
    
    # 設定按下 Ctrl+e 可以移動游標到最後面(End)
    Set-PSReadlineKeyHandler -Chord ctrl+e -Function EndOfLine
    
    # 設定按下 Ctrl+a 可以移動游標到最前面(Begin)
    Set-PSReadlineKeyHandler -Chord ctrl+a -Function BeginningOfLine
    

    設定完成!就是這麼簡單!

深入 Set-PSReadLineKeyHandler 命令 (Cmdlet)

  1. 說明文件

    你可以透過以下命令,開啟 Set-PSReadLineKeyHandler 說明文件:

    Get-Help Set-PSReadLineKeyHandler -Online
    
  2. 設定鍵盤快速鍵

    一個最簡單的鍵盤快速鍵,就是加上一個 -Chord 參數,外加一個 -Function 參數。

    這裡比較需要特別說明的,就是 -Function 參數只能設定內建的 PSReadLine 函式,這些函式你可以透過執行 Get-PSReadLineKeyHandler 命令,列出目前所有系統設定好的快速鍵清單,他會自動幫你分門別類,並且提供一個相當完整的對應表與中文說明,而且你會發現許多意外的、實用的內建快速鍵!

    image

    基本上所有 PSReadline 大致區分以下分類:

    • 基本編輯功能
    • 資料指標移動函式
    • 歷程記錄函式
    • 完成函式
    • 其他函式
    • 選取函式
    • 搜尋函式
  3. 自訂複雜的組合命令

    假設你想在 PowerShell 視窗中按下 Ctrl+Shift+B 組合鍵,就自動輸出 dotnet build -c Release 命令,那麼你可以試試以下設定:

    Set-PSReadLineKeyHandler -Chord Ctrl+Shift+B -ScriptBlock {
        [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
        [Microsoft.PowerShell.PSConsoleReadLine]::Insert('dotnet build -c Release')
        [Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine()
    }
    

    設定完成後,直接可以按下 Ctrl+Shift+B 自動輸出建置命令並執行,真是太帥啦!

    這個 Ctrl+Shift+B 組合鍵同時也是 Visual Studio Code / Visual Studio 常用的建置命令!

相關連結