Caracteres ocultos inseridos após o pipe (|) seguido por um espaço [duplicado]

12

Muitas vezes, no meu Mac, quando eu uso o caractere pipe (|) seguido por um caractere de espaço, um caractere invisível será inserido entre eles.

Isso é especialmente irritante ao usar o terminal, pois torna os comandos inválidos.

Se eu digitar o seguinte em iterm2, geralmente recebo o seguinte:

ls | cat
zsh: command not found:  cat

Se eu pressionar a tecla de seta para cima para obter meu comando anterior e, em seguida, remover e reinserir o espaço entre | e cat , o comando funcionará.

Quando copio, cole os comandos que funcionam e não funcionam em um arquivo, como este:

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

e abri-lo em Hex Fiend mostra o seguinte:

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

Eu também experimentei o mesmo tipo de problema no SublimeText2 usando os colchetes ( [ ] ) seguidos por um espaço. Então eu não acredito que seja um problema com o iTerm2.

    
por nifty 24.04.2012 / 09:49

1 resposta

14

O que acontece é que você continua pressionando com a barra de espaço, que insere um não- quebrando espaço , conhecido em HTML através da referência   . Este espaço não quebra é útil no processamento de textos, onde você quer que certas palavras se encaixem, como o "OS" e o "X" no "OS X".

Obviamente, esse é um caractere unicode ( 00A0 ) e, portanto, a maioria dos utilitários de linha de comando falhará, como bash ver _cat (onde _ é o espaço sem quebra) e Hex Fiend apenas usando uma representação ruim para isso. Alguns editores, por outro lado, irão silenciosamente retirá-lo (por exemplo, este editor aqui), enquanto outros ainda têm uma representação especial para ele (por exemplo, TextMate mostrando um ponto em vez do espaço em branco).

Existem duas soluções:

  • Preste mais atenção para liberar a tecla ao pressionar a barra de espaço. By the way: Acontece comigo o tempo todo também.

  • Desative a combinação completamente: Como desabilitar a combinação de teclas Option-Space para espaços não separáveis?

por 24.04.2012 / 10:00