管道符(|)后插入隐藏字符,后跟一个空格

管道符(|)后插入隐藏字符,后跟一个空格

在我的 Mac 上,很多时候当我使用竖线 (|) 字符后跟空格字符时,中间会插入一个不可见的字符。

这在使用终端时尤其烦人,因为它会使命令无效。

如果我在 iterm2 中输入以下内容,我通常会得到以下内容:

ls | cat
zsh: command not found:  cat

如果我按向上箭头键来获取上一个命令,然后删除并重新插入|和之间的空格cat,则该命令将会起作用。

当我将有效命令和无效命令复制粘贴到文件中时,如下所示:

non-working: ls | cat
working: ls | cat

并打开它妖魔它显示以下内容:

non-working: ls | cat
working: ls | cat

我在 SublimeText2 中使用方括号 ( []) 后跟空格时也遇到了同样的问题。因此,我不认为这是 iTerm2 的问题。

答案1

发生的事情是,你继续按下空格键,这会插入一个不间断空格,在 HTML 中通过 参考了解。这种不间断空格在文本处理中很有用,因为您希望某些单词粘在一起,例如“OS X”中的“OS”和“X”。

显然,这是一个 unicode 字符 ( 00A0),因此大多数命令行实用程序都会失败,例如 bash 会发现_cat(_不间断空格在哪里),而 Hex Fiend 只是使用了错误的表示。另一方面,一些编辑器会默默地将其删除 (例如,此处的编辑器),而其他编辑器甚至会为其提供特殊表示 (例如,TextMate 显示一个点而不是空格)。

有两种解决方案:

相关内容