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

Set-PSReadlineOption -EditMode vi

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

svn help x-shelve --list

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

svn help x-shelve --list|

Скорее, чем

|svn help x-shelve --list

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

2
bradgonesurfing 23 Окт 2018 в 08:36

2 ответа

Лучший ответ

Вы можете использовать командлет 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)
}
1
bradgonesurfing 23 Окт 2018 в 09:26

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

Set-PSReadLineOption -HistorySearchCursorMovesToEnd:$true

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

Get-PSReadLineOption

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

1
Darren G 20 Дек 2018 в 05:11
52941796