Wenn ich von meinem Mac aus in einem Vim auf einem anderen Rechner programmiere beschwert sich gcc öfter mal über folgendes und weigert sich die Datei zu kompilieren:

some_source.cpp:519:2: error: stray ‘\302’ in program
some_source.cpp:519:2: error: stray ‘\240’ in program

Nachdem ich mir lange Zeit immer damit behalf die Zeile zu löschen und neu zu schrieben, war das auf die Dauer doch etwas unbefriedigend. Bei Stackoverflow fand ich dann den Hinweis in die richtige Richtung. Das Problem ergibt sich durch versehentlich eingegebene geschützte Leerzeichen.

Mit diesem Wissen ist es möglich Vim zu sagen, dass er diese im Code markieren soll, so dass man sie gezielt löschen kann.

set listchars=nbsp:_
set list
Der listchars-Befehl legt fest wodurch welches Zeichen ersetzt werden soll, der list-Befehl aktiviert die Ersetzung. Ich lasse mir die geschützten Leerzeichen durch einen Unterstrich anzeigen, prinzipiell ist hier fast jedes Zeichen möglich. Da die ersetzten Zeichen in einer anderen Farbe dargestellt werden kann man sie auch nicht mit regulären Unterstrichen verwechseln. Außerdem lasse ich mir prinzipiell auch Tabulatoren und überschüssige Leerzeichen am Zeilenende anzeigen, so dass diese Zeile in meiner .vimrc jetzt so aussieht:
set listchars=tab:»·,trail:·,nbsp:_