在竖线(|)之后插入隐藏字符,后跟一个空格[重复]


13

通常,在Mac上,当我使用竖线(|)字符后跟一个空格字符时,将在它们之间插入一个不可见的字符。

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

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

ls | cat
zsh: command not found:  cat

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

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

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

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

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

我在SublimeText2中也遇到过类似的问题,使用方括号([])后跟一个空格。因此,我不认为iTerm2有任何问题。


1
与此相关的是,是否有一种方法可以让终端显示不可见的字符,类似于文本编辑器如何将它们显示为灰色的项目符号?
jelovirt

Answers:


14

发生的情况是,您一直按住空格键,该空格键会插入一个不间断的空格,该空格在HTML中通过 引用而为人所知。这个不间断的空格在您希望某些单词粘在一起的文本处理中很有用,例如“ OS X”中的“ OS”和“ X”。

显然,这是一个unicode字符(00A0),因此大多数命令行实用程序将失败,例如bash seeing _cat_不间断空格),而Hex Fiend只是使用了错误的表示形式。另一方面,某些编辑器只会将其静默删除(例如,此处的该编辑器),而其他编辑器甚至具有特殊的表示形式(例如,TextMate显示一个点而不是空白)。

有两种解决方案:


这确实确实是问题所在。简直不敢相信我之前没有听说过。我猜想一个解决方案是将与修饰符组合的空间重新映射为规则的空格字符。
漂亮的2012年

是否可以使终端将nbsp显示为反向字符或某种形式,以便您在键入错误时立即看到它?

@forthrin好问题。除了弄乱您的语言环境设置(导致无法正确显示非ASCII字符)之外,我不知道有任何其他方法可以做到这一点。
slhck
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.