В PowerShell с psreadline -EditMode VI, как обеспечить, чтобы курсор начинался в конце строки при прохождении истории - PullRequest
0 голосов
/ 23 октября 2018

Я использую режим PowerShell VI через

Set-PSReadlineOption -EditMode vi

Потрясающе иметь возможность редактировать строку с помощью команд VI, однако есть одна вещь, которая раздражает.При использовании стрелок вверх и вниз для навигации по истории курсор всегда начинается в начале строки, а не в конце.то есть: если бы в моей истории была следующая команда

svn help x-shelve --list

, то я бы хотел, чтобы курсор (представленный трубкой |) был бы похож на

svn help x-shelve --list|

вместо

|svn help x-shelve --list

есть ли способ установить это?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Используйте тот же командлет Set-PSReadLineOption, который вы использовали для перехода в режим VI:

Set-PSReadLineOption -HistorySearchCursorMovesToEnd:$true

Вы можете увидеть, какие параметры можно установить с помощью Get-PSReadLineOption:

Get-PSReadLineOption

и электронная документация включает несколько полезных примеров

0 голосов
/ 23 октября 2018

Вы можете использовать командлет Set-PSReadLineKeyHandler:

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)
}
...