我可以让 shell 将 NBSP 视为空白字符吗?

我可以让 shell 将 NBSP 视为空白字符吗?

这似乎是一个常见问题:您将一个简单的命令从某处粘贴到终端中,但 shell 无法理解它:

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

原因是因为单词之间用NBSP而不是空间。能否指示 shell 将 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,而且无论如何这样做都不是一个好主意。

相关内容