在带有psreadline -EditMode VI的Powershell中,如何确保光标在浏览历史记录时从行尾开始



我正在通过以下方式使用powershell VI模式

Set-PSReadlineOption -EditMode vi

能够使用VI命令编辑行真是太糟糕了,但是有一件事很烦人。使用向上和向下箭头导航历史记录时,光标始终从行的开头而不是末尾开始。即:如果我的历史记录中有以下命令

svn help x-shelve --list

那么我希望光标(由管道 | 表示(

svn help x-shelve --list|

而不是

|svn help x-shelve --list

有没有办法设置这个?

使用用于进入VI模式的相同Set-PSReadLineOptioncmdlet:

Set-PSReadLineOption -HistorySearchCursorMovesToEnd:$true

您可以看到可以使用Get-PSReadLineOption设置哪些选项:

Get-PSReadLineOption

在线文档包括一些有用的示例

可以使用Set-PSReadLineKeyHandlercmdlet:

Set-PSReadLineKeyHandler -Key UpArrow `
-ScriptBlock {
param($key, $arg)
$line=$null
$cursor=$null
[Microsoft.PowerShell.PSConsoleReadLine]::HistorySearchBackward()
[Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)
[Microsoft.PowerShell.PSConsoleReadLine]::SetCursorPosition($line.Length)
}

Set-PSReadLineKeyHandler -Key DownArrow `
-ScriptBlock {
param($key, $arg)
$line=$null
$cursor=$null
[Microsoft.PowerShell.PSConsoleReadLine]::HistorySearchForward()
[Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)
[Microsoft.PowerShell.PSConsoleReadLine]::SetCursorPosition($line.Length)
}

最新更新