고쳐 쓰다

고쳐 쓰다

기본적으로 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+BackSpace에서 backward-delete-word멈춰야 합니다 '.

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

$ echo 'asdf'
$ echo '

$ echo '=asdf'
$ echo '=
$

두 번째 예에서는 echo '=명령줄을 벗어났습니다. 두 번째 버튼 을 누르면 Alt+BackSpace모든 것이 완료되었습니다 echo. =멈출 예정이었기 때문에 먹힐 거라고 예상했다 '.

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

답변1

실제로 이것은 zsh 바인딩에 나열되어 있지 않지만 bindkey표시된다면, 정의한 함수에 바인딩하여 구성할 수 있습니다.

내 답변을 바탕으로 작업

    나는 목록에 있는 누군가(Oliver Kidder)가 제공한 것을 사용하고 있습니다.
    자세한 내용은 10월 8일 월요일 아카이브를 참조하세요.

    tcsh-삭제 역방향 단어() {
      로컬 WORDCHARS="${WORDCHARS:s#/#}"
      zle은 단어를 거꾸로 삭제합니다.
    }

    나는 그것을 control-W에 묶었습니다.
    바인딩 키 '^W' tcsh-delete back-word

    하지만 분명히 당신은 그것을 바꿀 수 있습니다.

    내 생각에는 그게 당신이 찾고 있는 것 같아요, 그렇죠?

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

따라서 $WORDCHARS이를 자신의 함수에서 로컬 변수로 사용하고, 필요에 따라 단어를 정의하고, 키에 바인딩할 수 있습니다.

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

zle -N tcsh-backward-delete-word

관련 정보