Beim Versuch, einige Dateien in Git festzuschreiben, werden nachgestellte Whitespace-Fehler angezeigt.
Ich möchte diese nachgestellten Leerzeichen automatisch entfernen, bevor ich Python-Dateien speichere.
Können Sie vim dafür konfigurieren? Wenn das so ist, wie?
vim
automation
whitespace
removing-whitespace
Paul D. Eden
quelle
quelle
Antworten:
Ich habe die Antwort hier gefunden .
Das Hinzufügen von Folgendem zu meiner .vimrc-Datei hat den Trick getan.
quelle
e
Zusammenstellung von oben plus Speichern der Cursorposition:
Wenn Sie dies beim Speichern auf eine beliebige Datei anwenden möchten, lassen Sie die zweite weg
autocmd
und verwenden Sie einen Platzhalter*
:quelle
autocmd FileType c,cpp,java,php,ruby,python
Teil entfernt, damit es auf alle Dateien angewendet wird.<buffer>
mit ,*
wenn Sie es Arbeit für alle Dateien wollenkeepp
keepp %s/\s\+$//e
Ich habe normalerweise auch eine:
in meiner
.vimrc
Datei, so dass Leerzeichen am Zeilenende hellig sind.Todo ein Syntax hilighting wobei group-name , der wie Schlüsselwörter für hilighting verwendet wird
TODO
,FIXME
oderXXX
. Es hat eine ärgerlich hässliche gelbliche Hintergrundfarbe und ich finde es am besten, Dinge zu hellen, die Sie nicht in Ihrem Code haben wollen :-)quelle
:hi Todo
. Also habe ich durchgesehen:hi <Tab>
und:help hi
. Ich überlegteCursor
undError
, aber ich denke, ich werde es versuchenmatch VisualNOS /\s\+$/
. Ich könnte dies mit einigen derautocmd
s aus anderen Antworten hier kombinieren .Ich hebe sowohl vorhandene nachgestellte Leerzeichen hervor als auch nachfolgende Leerzeichen.
Ich konfiguriere meinen Editor (vim) so, dass am Ende Leerzeichen angezeigt werden, z
mit diesem am Ende meiner .vimrc:
und ich 'entferne' es automatisch von Dateien, wenn ich sie speichere, in meinem Fall * .rb für Ruby-Dateien, wieder in meinem ~ / .vimrc
quelle
Hier ist eine Möglichkeit, nach mehr als einem Dateityp zu filtern.
quelle
Kopiert und eingefügt von http://blog.kamil.dworakowski.name/2009/09/unobtrusive-highlighting-of-trailing.html (der Link funktioniert nicht mehr, aber das Bit, das Sie benötigen, ist unten)
"Dies hat den Vorteil, dass nicht jedes Leerzeichen am Ende der Zeile hervorgehoben wird, nur wenn Sie eine Datei öffnen oder den Einfügemodus verlassen. Sehr ordentlich."
quelle
Ich habe diese Lösung in einem Kommentar bei gesehen VIM Wikia gesehen - Entfernen Sie unerwünschte Leerzeichen
Ich mochte es wirklich. Fügt ein
.
zu den unerwünschten Leerzeichen hinzu.Setzen Sie dies in Ihre
.vimrc
quelle
So mache ich es. Ich kann mich nicht erinnern, wo ich es von tbh gestohlen habe.
quelle
%s
die globale (g) Flagge ist so nutzlos wie ein Leerzeichen bei EOL :-)Eine Lösung, bei der nachfolgende Leerzeichen einfach aus der Datei entfernt werden, ist nicht unter allen Umständen akzeptabel. Es funktioniert in einem Projekt, in dem diese Richtlinie von Anfang an angewendet wurde. Daher gibt es keine solchen Leerzeichen, die Sie nicht einfach selbst in Ihr bevorstehendes Commit aufgenommen haben.
Angenommen, Sie möchten lediglich keine neuen Instanzen von nachgestellten Leerzeichen hinzufügen, ohne vorhandene Leerzeichen in Zeilen zu beeinflussen, die Sie nicht bearbeitet haben, um Ihr Commit frei von Änderungen zu halten, die für Ihre Arbeit irrelevant sind.
In diesem Fall können Sie mit git ein Skript wie das folgende verwenden:
Das heißt, wir speichern die Änderungen und filtern dann alle
+
Zeilen im Diff, um deren nachfolgendes Leerzeichen zu entfernen, wenn wir die Änderung erneut auf das Arbeitsverzeichnis anwenden. Wenn diese Befehlspipe erfolgreich ist, löschen wir den Stash.quelle
Die anderen Ansätze hier funktionierten in MacVim irgendwie nicht, wenn sie in der
.vimrc
Datei verwendet wurden. Hier ist eine, die nachfolgende Leerzeichen hervorhebt:quelle
set listchars=trail:·
:E474: Invalid argument: listchars=trail:·
. Können Sie Ihr Beispiel validieren?autocmd BufWritePre * :%s/\s\+$//<CR>:let @/=''<CR>
quelle
Für Benutzer, die es für bestimmte Dateitypen ausführen möchten (FileTypes sind nicht immer zuverlässig):
Oder mit vim7:
quelle
Wenn Sie Leerzeichen kürzen, sollten Sie dies nur für Dateien tun, die bereits sauber sind. "Wenn du in Rom bist...". Dies ist eine gute Etikette bei der Arbeit an Codebasen, bei denen falsche Änderungen nicht erwünscht sind.
Diese Funktion erkennt nachgestellte Leerzeichen und aktiviert das Trimmen nur, wenn es bereits sauber war.
Der Verdienst für diese Idee geht an ein Juwel eines Kommentars hier: https://github.com/atom/whitespace/issues/10 (längster Bug-Ticket-Kommentar-Stream aller Zeiten)
quelle
let _s=@/
Suchregister auch behalten und am Ende `let @ / = _ s` wiederherstellen. In diesem Fall verwenden wir das Schwarzlochregister