在竖线 (|) 后跟一个空格后插入的隐藏字符

nif*_*fty 14 keyboard keyboard-shortcuts special-characters macos

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

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

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

ls | cat
zsh: command not found:  cat
Run Code Online (Sandbox Code Playgroud)

如果我打的向上箭头键,让我以前的命令,然后取出并重新插入之间的空间|cat,该命令将正常工作。

当我将工作和非工作命令复制粘贴到文件中时,如下所示:

non-working: ls | cat
working: ls | cat
Run Code Online (Sandbox Code Playgroud)

并在Hex Fiend 中打开它显示以下内容:

non-working: ls | cat
working: ls | cat
Run Code Online (Sandbox Code Playgroud)

我也在 SublimeText2 中使用方括号 ( []) 后跟一个空格遇到了同样的问题。所以我不相信它是 iTerm2 的问题。

slh*_*hck 15

发生的情况是您一直按?空格键,这会插入一个不间断的空格,在 HTML 中通过 参考已知。这个不间断的空格在文本处理中很有用,你希望某些单词粘在一起,比如“OS X”中的“OS”和“X”。

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

有两种解决方案:


归档时间:

查看次数:

4426 次

最近记录:

8 年,10 月 前