这似乎是一个常见问题:您将一个简单的命令从某处粘贴到终端中,但 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,而且无论如何这样做都不是一个好主意。