在我的 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 显示一个点而不是空格)。
有两种解决方案:
按下空格键时,请特别注意松开⌥键。顺便说一句:我也经常遇到这种情况。
彻底禁用该组合:如何禁用不间断空格的 Option-Space 组合键?