쉘이 NBSP를 공백 문자로 처리하도록 할 수 있습니까?

쉘이 NBSP를 공백 문자로 처리하도록 할 수 있습니까?

이것은 일반적인 문제인 것 같습니다. 간단한 명령을 어딘가에서 터미널에 붙여넣었지만 쉘이 이를 이해하지 못합니다.

$ echo test
$ zsh: command not found: echo test

그 이유는 단어 사이에 있기 때문이다.NBSP공간보다는 NBSP를 공백 문자로 처리하도록 쉘에 지시할 수 있습니까?

답변1

터미널이 대괄호 붙여넣기를 지원한다고 가정하면 zsh 붙여넣기 위젯을 재정의하여 잘림 방지 공백을 바꿀 수 있습니다. 예를 들어:

    bracketed-paste-subst() {                  
        local content
        zle .bracketed-paste -N content
        YANK_START=CURSOR 
        LBUFFER+="${content//$'\u00a0'/ }" 
        YANK_END=CURSOR 
        zle -f yank 2> /dev/null
    }
    zle -N bracketed-paste-subst
    bindkey "^[[200~" bracketed-paste-subst

이론적으로는 변수에 줄바꿈 없는 공백을 추가하여 IFS단어 구분 기호로 처리할 수 있지만 이것이 비ASCII에서도 작동할지 확신할 수 없으며 어쨌든 그렇게 하는 것은 좋은 생각이 아닙니다.

관련 정보