中かっこを開く前に、誤ってノーブレークスペースを作成し続けるにはどうすればよいですか?


20

これは奇妙な質問であり、これを投稿するのに適切なフォーラムではないかもしれないことを認識しています。しかし、これは数年前から問題となっています。

時々、月に一度、私がプログラムするとき、中括弧を開く前に、通常のスペースの代わりにノーブレークスペースを導入するとしましょう。

これは私が書いているときに言ってみましょう () {

これは神秘的な糸くずのバグにつながります。適用されないCSS句。私が覚えているまで、これがそれかもしれません。

私の知る限り、これはvimでのみ発生しますが、それは私のメインエディタであるため、他のソフトウェアでは発生しなかった可能性があります。しかし、私の同僚と私の同じキーボードレイアウトを使用していても、私の最後の仕事の同僚は誰もその問題を抱えていませんでした。ただし、vimを定期的に使用するのは私だけです。だから、ここに投稿することにしました。

これは、少なくともubuntu 14.04、16.04、およびmac os xで起こりました。

:set list それを明らかにしません。

私はフレンチカナディアンキーボードレイアウトを使用しています。つまり、ブレース文字はalt + `

私はこれが問題を引き起こすことに非常にうんざりしている、それは私がそれを忘れ続けるのに十分な頻度ではありません。

これがなぜ発生し続けるのか私にわからない場合は、その文字を何らかの明白な方法で強調する何らかの構成が適切な答えであり、この問題を本当に助けます。


Michaelが提案するようにキーバインドを変更できます:superuser.com/a/142573
user12125

このようなクラップが、ようやくレイアウトをスウェーデン語からアメリカ語に永久に切り替えた理由です。たぶん、面白いå、ä、öの文字を入力するよりも、英語+ C + Perl + Bash + Vimを入力するのに時間がかかります。作成キーを使用して簡単に作成できます。
パイプ

回答:


24

他の人はすでに回避策を提供していますが、それが起こる理由については、誤ってAlt+を押しているに違いありませんSpace

私は自分で105キーのフィンランド語キーボードレイアウトでXubuntuを使用しているので、入力{することはAltGr+ を押すことを意味します7。(bashコマンドラインで)xfce4-terminalで簡単なテストを行ったところ、AltGr+ を押すとSpace実際にノーブレークスペース(U + 00A0)が生成されます。

何が起こっているのかはAlt、中括弧の入力を見越してキーを押していることと、実際にはスペースバーを押す前に発生することがあります。そして、通常の空間と同じように見えるので、何かが不思議に壊れる前にそれが起こったことに気付かないので、あなたはそれが起こっていることに気づきにくくなり、その習慣を学ぶことも難しくなります。


明日は仕事でこれを試すつもりです。私はいつも中括弧の前にスペースを置きます、それは時々シフトキーに指を入れすぎるのが理にかなっています!
サルマナティー

2
@Sarumanatee:Linuxでは、nbsp文字を完全に無効にできます。おそらく、Ubuntuのキーボードマネージャーにはオプションがあります。そうでない場合は、チューンキーボードは(それが1行を削除する問題だ、私のシステムでは、キーマップは次のようになり、自分自身をマッピングすることができ/usr/share/X11/xkb/symbols/usコールfinetuning後)setxkbmap usかどちらがお好みの言語
unperson325680

@progoはい。私は現在macosを使用しています。キーボードの一番左下はデフォルトでは「fn」であるため、カラビナを使用してキーボードレイアウトを微調整します。あなたは私にそこにチェックインするよう促しました。そして、すべての改行しないスペースを通常のスペースに変更するオプションがあります
-Sarumanatee

そして、このオプションは@Ilmari Karonenの提案を確認します。そのカラビナーオプションはnbspを作成するコマンドを表示するからです:option + space、option + shift + space。結局のところ、最終的にはまったくvim関連ではありませんでした!
サルマナティー

Ilmari Karonenは正しいので、これは説明についてではなく、私の回避策を説明するためのものです。非改行スペースをエラー強調表示グループにリンクする構文一致を追加したため、通常のスペースとは明らかに異なります。ソフトハイフンと非改行ハイフンについても同じことが言えます(コードではなくテキストでこれらのすべてを意図的に使用することがあるため、2つの異なるハイライトグループにリンクされます)。
bpj

19

特定のファイルタイプを保存するときに、改行しないスペースを通常のスペースに置き換えるオートコマンドを追加できます。次のようなものをvimrcに追加します。

augroup RemoveSpaces
  autocmd!
  autocmd BufWritePre *.css silent! :%s/\%u00A0/ /g
augroup end

ファイルタイプを追加するか、マークを設定し、置換操作後にマークに戻ることにより、それを調整できます。そうしないと、置換が行われた最後の行の先頭に移動します。


ああ、それはかなり賢い。推進される場所はそれほど頻繁には起こらないので気にしません。デバッグに時間を費やすよりもずっと面倒です!
サルマナティー

13

この'listchars'オプションは、'list'表示を改行なしスペースにする手段を提供します。デフォルトでは設定されていないため、おそらく追加する必要があります。

set listchars+=nbsp:‗

それは確かに役立ちます。私はそれを入力していて、試してみてもNBSP炭のすべての時間を強調表示する方法を見つけ、それをキャッチしようと思います。o
Sarumanatee

2
@Sarumanatee行を追加するvimrcと、実際には、入力時に強調表示されます。
Tumbler41

1

はい、それはおそらくAlt +スペースです、私はパイプ演算子を使用すると多くのことが起こります:

cat xyz.txt | grep abc

altキーを長く保持しすぎると、パイプとbashがコマンド「grep」を見つけようとすると、grepが見つからなかったことを知らせるために、スペースが作成されます。

macosでは、キーマップを変更するためのトリックがありました。そのため、改行しないスペースを挿入するたびに、通常のスペースに変換/置換されます。私が覚えている限り、キーマップはキーボード全体で変更されているため、すべてのアプリケーションの問題が修正されます。


alt + spaceはVimとは関係ありません。デフォルトでは(ユーザーマッピングなしなど)、ほとんどのシステムでalt + spaceはEscを含むエスケープを生成し、Vimで挿入モードを終了します。そしてそれは試合です。壊れないスペースは、システム上の入力バスまたは入力マネージャーの結果であり、Vim / Gvimはそれを認識しません。
-grochmal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.