Berühren Sie die Datei beim Schreiben nicht, wenn die Datei nicht geändert wurde

15

Gelegentlich tippe ich abwesend, :wwenn ich etwas lese. Dies führt zu einer Änderung der Änderungszeit der Datei und manchmal dazu, dass mein Build-System einen wesentlichen Teil eines Projekts unnötigerweise neu erstellt.

Gibt es eine Möglichkeit, vim so einzustellen, dass es einfach nichts tut, wenn ich versuche, eine Datei zu schreiben, die nicht geändert wurde?

Praxeolitische
quelle

Antworten:

15

Erweitern Sie die Antwort von @ lcd047, die Sie cabbrevzum Ändern verwenden könnenw

:cabbrev w <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'up' : 'w')<CR>

Wenn Sie tippen, werden :wSie feststellen, dass es durch ersetzt wird, :upwenn Sie die Eingabetaste drücken.

jecxjo
quelle
14

Nicht direkt (das heißt, das Verhalten von :wkann nicht geändert werden), aber Sie können lernen, :upstatt zu verwenden :w. Es macht genau das, was Sie wollen.

lcd047
quelle
3
Lassen Sie mich nur hinzufügen: Ich verwende zum Speichern eine bevorzugte Tastaturbelegung und bin daran gebunden, :updateanstatt :writedie Anforderung für das Original-Poster zu erhalten.
Giovanni Maggiorani