수행된 연구:

수행된 연구:

PowerShell 6.0.1에서 기본 동작은 Delete캐럿이 줄 끝에 있지 않을 때 키를 누르면 예상대로 캐럿 위의 문자가 삭제된다는 것입니다. 그러나 줄의 마지막 문자를 삭제하면 캐럿이 한 위치 뒤로 이동합니다. 더 이상 Delete줄이 끝날 때까지 삭제할 수 없기 때문에 이것이 매우 짜증나는 일이라고 생각합니다 . 내가 누를 때와 동일하게 작동하도록 변경하는 방법이 있습니까? EndDelete즉, 아무것도 하지 않습니까?

키 삭제

수행된 연구:

나는 보았다백스페이스에서 PowerShell 경고음 비활성화, 아마도 내가 원하는 설정도 있을 거라고 생각했지만, 읽은 후에는PSReadLine cmdlet에 대한 문서, 없는 것을 보았습니다.

그런 다음 키 바인딩을 살펴보고 현재 할당된 Get-PSReadLineKeyHandler내용을 확인하기 위해 실행한 다음Delete코드베이스 DeleteChar에서 검색됨 PSReadLine, 해당 함수에 대한 정의를 확인하고 유사한 항목을 찾아볼 수 있습니다. 나는 찾았다삭제문자또는종료, "삭제" 프로세스를 종료하지 않고 실행되었습니다 Set-PSReadLineKeyHandler -Key Delete -Function DeleteCharOrExit. 불분명한 문서 주석에서 가정했듯이 PowerShell 콘솔 프로세스가 종료됩니다.

나도 찾았어https://github.com/lzybkr/PSReadLine/issues/486, 이는 수정되었음을 의미하지만 분명히 그렇지는 않습니다 ...

어쩌면 다음과 같은 사용자 정의 키 바인딩 코드를 삽입해야 할 수도 있습니다.https://github.com/lzybkr/PSReadLine/blob/46d232c22ac3f24a95e32d773c594ad306dfc327/PSReadLine/SamplePSReadLineProfile.ps1#L257-L291?

답변1

에서 볼 수 있듯이 PowerShell Core 6.0.1은 PSReadLine 모듈 버전 1.2와 함께 제공되지만 Get-Module PSReadLine수정 사항은https://github.com/lzybkr/PSReadLine/releases/tag/v2.0.0-beta1. 해당 릴리스에서 다음과 같이 말합니다.

이는 PowerShell Core(모든 플랫폼)와 Windows PowerShell을 모두 지원하는 리포지토리의 첫 번째 릴리스입니다.

나는 그 버전이 있다고 가정하고 원래 확인하지 않았습니다.

해당 버전에서 작동하게 하려면 다음을 사용할 수 있습니다.

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

(이상적으로는 PowerShell이 ​​시작될 때 자동 실행되도록 적절한 프로필 파일에 배치하는 것이 좋습니다.)

이 문제는 다음 지침을 사용하여 PSReadLine 모듈을 업그레이드하여 해결할 수도 있습니다.https://github.com/lzybkr/PSReadLine/issues/612, 이는 다음과 같습니다.

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

아마도 향후 PowerShell Core 릴리스에는 PSReadLine 모듈의 고정 버전이 포함될 것입니다.

관련 정보