Voici une autre façon d'expliquer la différence entre :write
(raccourci :w
) et :update
(raccourci :up
):
Chaque fois que nous tapons :w
, VIM va littéralement écrire le tampon au fichier, quelle que soit la mémoire tampon est vide ou pas. Ce MEANs mettra à jour le timestamp du fichier à l'heure :w
tapé, même si le contenu du fichier n'a pas réellement été modifié.
Alors avec :up
, tout comme le manuel d'aide vim dit, le VIM ne mettra à jour l'horodatage lorsque le fichier a été modifié.
Par exemple, quand j'ouvrir un fichier juste pour la lecture, mais je peut accidentellement (ou, habituellement) de type :w
ou :wq
, et si je fais attention sur les horodatages du fichier (c.-à-dernière modification) , alors il n'y a pas de retour en arrière.Les exemples suivants (en shell BASH) montrent les effets:
$ touch test.txt
$
$ stat test.txt
File: `test.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828498 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-15 22:30:52.159258193 +0800
Modify: 2014-03-15 22:30:52.159258193 +0800
Change: 2014-03-15 22:30:52.159258193 +0800
Maintenant VIM le fichier et :up
et :w
commande respectivement:
$ vim test.txt
Ne pas éditer, tapez simplement :up
puis :q
$ stat test.txt
File: `test.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828498 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-15 22:33:10.002269244 +0800 <--- Different!
Modify: 2014-03-15 22:30:52.159258193 +0800 <--- Didn't Change!
Change: 2014-03-15 22:30:52.159258193 +0800 <--- Didn't Change!
Comme vous pouvez le voir, seul le temps d'accès est changé, c'est parce que nous lisons (Access) les données dans le fichier. Mais l'heure de modification & L'heure du changement est toujours la même.
Maintenant, nous allons à nouveau de vim et utilisez la commande :w
.
$ vim test.txt
Ne pas l'édition, mais ce type de temps :w
puis :q
$ stat test.txt
File: `test.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828538 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-15 22:40:26.728239153 +0800 <--- Different Again!
Modify: 2014-03-15 22:40:26.728239153 +0800 <--- Changed!
Change: 2014-03-15 22:40:26.728239153 +0800 <--- Changed!
Maintenant, nous pouvons voir la différence entre :up
et :w
! Les données du fichier sont modifiées et le statut du fichier a également changé, bien qu'il n'y ait rien vraiment changé dans le fichier.
Donc, pour éviter cela, on peut transformer la commande :w
à la commande en utilisant :up
:map :w :up
.
Vous pouvez utiliser bang ('!') Avec la commande update. – ZyX