Ne touchez pas le fichier lors de l'écriture si le fichier n'a pas été modifié

15

Parfois, je tape distraitement :wquand je lis quelque chose. Cela provoque le temps de modification du fichier à changer et parfois mon système de génération à reconstruire inutilement une partie substantielle d'un projet.

Existe-t-il un moyen de configurer vim pour ne rien faire si j'essaie d'écrire un fichier et qu'il n'a pas été modifié?

Praxéolitique
la source

Réponses:

15

Étendre la réponse de @ lcd047 que vous pouvez utiliser cabbrevpour modifierw

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

Lorsque vous tapez, :wvous remarquerez qu'il sera remplacé par :uplorsque vous appuyez sur Entrée.

jecxjo
la source
14

Pas directement (c'est-à-dire que le comportement de :wne peut pas être changé), mais vous pouvez apprendre à utiliser à la :upplace de :w. Il fait exactement ce que vous voulez.

lcd047
la source
3
Permettez-moi d'ajouter: j'utilise un mappage de touches préféré pour l'enregistrement, et je l'ai lié au :updatelieu d' :writeobtenir la configuration requise pour l'affiche originale.
Giovanni Maggiorani