2010-06-22 6 views
13

J'ai réalisé que dans gvim Control+S comme la commande :update. Je sauvegarde toujours en utilisant Ctrl+S, donc je suppose que :update est une autre façon de dire "actualiser les modifications". Est-ce que :update est fondamentalement identique à écrire :w? Aurai-je des problèmes si je remplace :update pour :w!?Quelle est la différence entre: update et: w dans Vim?

edit: Je voulais changer :update-:w! becauase J'ai un fichier qui dit « prêt seulement s'il vous plaît ajouter !. » Et je pensais que c'était la seule solution

+0

Vous pouvez utiliser bang ('!') Avec la commande update. – ZyX

Répondre

4

De l'aide:

:[range]up[date][!] [++opt] [>>] [file] 
         Like ":write", but only write when the buffer has been 
         modified. {not in Vi} 
2

:help :update dit:

Comme ": write", mais écrire que lorsque le tampon a été modifié.

15

:help :update est assez clair sur ce point:

Like ":write", but only write when the buffer has been modified. 

Ainsi, le fichier sera écrit seulement si ont été effectivement changé le contenu de la mémoire tampon. Donc, si vous utilisez :update (ou appuyez sur Ctrl + S dans GVim) et qu'il n'y a pas de changements non sauvegardés dans le buffer, cela ne fera rien.

+0

Je n'arrête pas d'utiliser ': help' et finis sur StackOverflow. Soulignant dans cette réponse a été utile. –

9

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.

Questions connexes