powershell自定义快捷键

前情提要:powershell命令行的默认快捷键巨难用。
好在powershell提供了可以自定义快捷键的方式。
核心在于PSReadLine这个模块,如果你是powershell7.1版本的话,这个模块是自带的。如果低于7.1版本,可以运行这条命令安装Install-Module -Name PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck,(本人没有试验,不负责哈哈)

目录

大众需求

我想一般的Linux用户应该时熟悉了bash的快捷键(其实bash的快捷键和emcas是一样的),所以想要在powershell获得同样的体验。其实powershell早就为我们想到了。

# 在powershell中执行此命令
Set-PSReadLineOption -EditMode Emacs

但是以上命令在powershell退出后就失效了,所以我们需要把它写在powershell的启动文件中,操作如下的:

# 打开powershell的启动文件
notepad $PROFILE
# 将下面的命令复制到文件中,保存文件
Set-PSReadLineOption -EditMode Emacs

重新打开powershell,你会发现一切都以改变
更多PSReadLineOption信息,请点击此处

极客需求

核心在于这条命令Set-PSReadLineKeyHandler

  1. 查看当前系统所有已经绑定的键(Key)和功能(Function)

    # 查看当前系统所有已经绑定的键
    Get-PSReadLineKeyHandler -Bound
    # 或者使用以下快捷键
    Ctrl + Alt + ?
    
  2. 查看当前系统所有未绑定的Function

    # 查看当前系统所有未绑定的Function
    Get-PSReadLineKeyHandler -Unbound
    
  3. 自定义你想绑定的键和功能

    # -Chord:你想要绑定的键(按键区分大小写)
    # -Function:你想要绑定的功能
    # 该命令还支持将键和脚本绑定,选项是:-ScriptBlock
    # 下面这条命令表示将删除命令行绑定到快捷键Ctrl + u
    Set-PSReadLineKeyHandler -Chord Ctrl+u -Function DeleteLine
    

    更多Set-PSReadLineKeyHandler信息,请点击这里

  4. 以上的设定的键绑定仅能维持在powershell会话运行期间,如果powershell退出,将会失效。为了永久保存,我们需要将该命令写入到powershell的启动文件中

    # 打开powershell的启动文件
    notepad $PROFILE
    # 将下面的命令复制到文件中,保存文件
    Set-PSReadLineKeyHandler -Chord Ctrl+u -Function DeleteLine
    

参考文献

about_PSReadLine
PSReadLineOption
Set-PSReadLineKeyHandler

上一篇:PowerShell笔记 - 6.条件表达式


下一篇:PowerShell笔记 - 14.xml基本操作