パイプ(|)の後にスペースが続く非表示の文字[重複]


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

回答:


14

何が起こるかは、スペースバーを押し続けることです。スペースバーは、参照を通じてHTMLで知られている非改行スペースを挿入します 。この非改行スペースは、「OS X」の「OS」や「X」のように、特定の単語を結び付けるテキスト処理で役立ちます。

明らかに、これはユニコード文字(00A0)であるため、bash seeing _cat_改行しないスペースはどこにありますか)やHex Fiendはそれに対して悪い表現を使用しているなど、ほとんどのコマンドラインユーティリティは失敗します。一方、一部のエディターは静かにそれを削除します(たとえば、このエディター)、他のエディターも特別な表現を持っています(たとえば、空白ではなくドットを表示するTextMate)。

2つの解決策があります。


これは確かに問題のようです。私がこれを捕まえたことが信じられない。解決策は、修飾子と組み合わせたスペースを通常のスペース文字に再マップすることだと思います。
気の利い

ターミナルにnbspを逆の文字または何らかの種類として表示させることは可能ですか?
4

@forthrin良い質問です。ASCII以外の文字が正しく表示されないようにロケール設定をいじる以外、それを行う方法はわかりません。
slhck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.