Не трогайте файл при записи, если файл не был изменен

15

Иногда я рассеянно печатаю, :wкогда читаю что-то. Это приводит к изменению времени изменения файла и иногда приводит к тому, что моя система сборки излишне перестраивает значительную часть проекта.

Есть ли способ настроить vim так, чтобы он ничего не делал, если я пытаюсь написать файл, и он не был изменен?

Praxeolitic
источник

Ответы:

15

Расширяя ответ @ lcd047, вы можете cabbrevизменитьw

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

Когда вы печатаете, :wвы заметите, что он будет заменен, :upкогда вы нажмете клавишу возврата.

jecxjo
источник
14

Не напрямую (то есть поведение :wне может быть изменено), но вы можете научиться использовать :upвместо :w. Это именно то, что вы хотите.

lcd047
источник
3
Просто позвольте мне добавить: я использую любимую раскладку клавиш для сохранения, и я связался с ней :updateвместо того, :writeчтобы получить требование «Оригинальный плакат».
Джованни Маджорани