Investigación realizada:

Investigación realizada:

En PowerShell 6.0.1, el comportamiento predeterminado es que cuando presiono Deletemientras mi cursor no está al final de la línea, se elimina el carácter encima del cursor, como se esperaba. Sin embargo, una vez que elimino el último carácter de la línea, el cursor retrocede una posición. Esto me parece muy molesto porque ya no puedo mantener presionado Deletepara borrar hasta el final de la línea. ¿Hay alguna manera de cambiarlo para que se comporte igual que cuando presiono EndDelete, es decir, que no haga nada?

eliminar clave

Investigación realizada:

Yo viDeshabilitar el pitido de PowerShell al retroceder, y pensé que tal vez también haya una configuración para lo que quiero, pero después de leerlos documentos en el cmdlet PSReadLine, vi que no lo hay.

Luego miré las combinaciones de teclas y corrí Get-PSReadLineKeyHandlerpara verificar a qué Deleteestaba asignado actualmente, y luegobuscado DeleteCharen el PSReadLinecódigo base, para ver la definición de esa función y buscar algo similar. encontréEliminar CharOrSalir, y ejecuté, Set-PSReadLineKeyHandler -Key Delete -Function DeleteCharOrExitlo que no sale del proceso de "eliminación", como supuse por el comentario poco claro del documento, sale del proceso de la consola PowerShell...

También encontréhttps://github.com/lzybkr/PSReadLine/issues/486, lo que sugiere que se ha solucionado, pero claramente no...

Tal vez necesito inyectar algún código de combinación de teclas personalizado comohttps://github.com/lzybkr/PSReadLine/blob/46d232c22ac3f24a95e32d773c594ad306dfc327/PSReadLine/SamplePSReadLineProfile.ps1#L257-L291?

Respuesta1

Resulta que PowerShell Core 6.0.1 viene con la versión 1.2 del módulo PSReadLine, como lo vio Get-Module PSReadLine, pero la solución estaba enhttps://github.com/lzybkr/PSReadLine/releases/tag/v2.0.0-beta1. Dado que ese comunicado dice:

Esta es la primera versión del repositorio que admite PowerShell Core (todas las plataformas) y Windows PowerShell.

Supuse que tenía esa versión y no la verifiqué originalmente.

Para que funcione con esa versión, se puede usar:

Set-PSReadLineKeyHandler -Key Delete `
                             -BriefDescription Delete `
                             -LongDescription "Delete character over the caret" `
                             -ScriptBlock {
        param($key, $arg)

        $line = $null
        $cursor = $null
        [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)

        if ($cursor -lt $line.Length)
        {
            [Microsoft.PowerShell.PSConsoleReadLine]::Delete($cursor, 1)
        }
    }

(Lo ideal es colocarlo en el archivo de perfil apropiado para que se ejecute automáticamente cuando se inicie PowerShell).

Esto también se puede solucionar actualizando el módulo PSReadLine, siguiendo las instrucciones enhttps://github.com/lzybkr/PSReadLine/issues/612, que son:

Install-Module PSReadLine -RequiredVersion 2.0.0-beta1 -AllowPrerelease -Scope CurrentUser -SkipPublisherCheck

Es de suponer que una versión futura de PowerShell Core incluirá una versión fija del módulo PSReadLine.

información relacionada