업데이트

업데이트

zsh기본적으로 + CTRLw+ ALTBackspace정확히 동일한 효과를 갖는 것 같습니다.

CTRL+를 w그대로 유지하고 영숫자가 아닌 문자에서 멈추도록 ALT+를 변경하려면 어떻게 해야 합니까 ?Backspace

즉, 커서가 다음 명령 끝에 있을 때 +를 echo /aaa/bbb/ccc누르면 나가고 , +를 누르면 나가야 합니다 .CTRLwechoALTBackspaceecho /aaa/bbb/

업데이트

의 답변을 바탕으로 @Thomas Dickey내 에 다음을 추가했습니다 .zshrc.

 my-backward-delete-word () {
    local WORDCHARS='~!#$%^&*(){}[]<>?+;'
    zle backward-delete-word
 }
 zle -N my-backward-delete-word

 bindkey    '\e^?' my-backward-delete-word

이제 명령줄 편집기가 예상한 것과 다르게 작동합니다.

예를 들어, 작은따옴표 문자 '는 my 에 열거되지 않으므로 를 WORDCHARS누르면 Alt+BackSpacebackward-delete-word에서 중지되어야 합니다 '.

이는 첫 번째 예에서는 작동하지만 두 번째 예에서는 작동하지 않습니다.

$ echo 'asdf'
$ echo '

$ echo '=asdf'
$ echo '=
$

두 번째 예에서는 echo '=명령줄을 그대로 사용했습니다. 두 번째를 누른 후 Alt+BackSpace를 포함한 모든 것이 먹었습니다 echo. =에 멈췄어야 했기 때문에 먹을 만 했을 거라고 예상했을 것이다 '.

예상대로 작동하지 않는 이유는 무엇입니까?

답변1

실제로 나는 이것이 zsh 바인딩에 나열되어 있는 것을 볼 수 없지만, 만약 bindkey그것을 보여주면, 정의한 함수에 바인딩하여 구성할 수 있습니다.

내 답변에서 작업

    나는 목록에 있는 누군가(Oliver Kiddle)가 제공한 이 비트를 사용합니다. 확인하다
    이에 대한 자세한 내용은 10월 8일 월요일의 기록 보관소를 참조하세요.

    tcsh-backward-delete-word () {
      로컬 WORDCHARS="${WORDCHARS:s#/#}"
      zle 뒤로 삭제 단어
    }

    다음을 사용하여 control-W에 바인딩했습니다.
    바인드키 '^W' tcsh-backward-delete-word

    하지만 분명히 바꿀 수 있습니다.

    내 생각엔 그게 네가 찾고 있는 것 같아, 그렇지?

    '$WORDCHARS' 변수는 zsh가 단어 경계를 결정하는 방법입니다.
    전역적으로 '/'를 추가할 수 있지만 이는 다른 사항에 영향을 미칠 수 있습니다.
    그냥 두고 싶기 때문에 저는 이 기능을 더 선호합니다.

$WORDCHARS따라서 원하는 대로 단어를 정의하고 이를 임의의 키에 바인딩하여 자신의 함수에서 지역 변수로 사용할 수 있습니다 .

함수를 정의할 때 함수를 추가하는 것을 잊지 마세요.키맵:

zle -N tcsh-backward-delete-word

관련 정보