我正在通过以下方式使用powershell VI模式
Set-PSReadlineOption -EditMode vi
能够使用VI命令编辑行真是太糟糕了,但是有一件事很烦人。使用向上和向下箭头导航历史记录时,光标始终从行的开头而不是末尾开始。即:如果我的历史记录中有以下命令
svn help x-shelve --list
那么我希望光标(由管道 | 表示(像
svn help x-shelve --list|
而不是
|svn help x-shelve --list
有没有办法设置这个?
使用用于进入VI模式的相同Set-PSReadLineOption
cmdlet:
Set-PSReadLineOption -HistorySearchCursorMovesToEnd:$true
您可以看到可以使用Get-PSReadLineOption
设置哪些选项:
Get-PSReadLineOption
在线文档包括一些有用的示例
可以使用Set-PSReadLineKeyHandler
cmdlet:
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)
}