Ecco un altro modo per spiegare la differenza tra :write
(scorciatoia :w
) e :update
(scorciatoia :up
):
Ogni volta che si digita :w
, Vim letteralmente scrivere il buffer per il file, non importa il buffer è vuoto o no. Il numero MEAN aggiornerà la data timestamp del file all'ora :w
digitata, anche se il contenuto del file NON è stato effettivamente modificato.
Mentre con :up
, proprio come il vim aiuto manuale dice, il VIM sarà solo aggiornare il timestamp quando il file è stato modificato.
Per esempio, quando ho aprire un file solo per la lettura, ma può accidentalmente (o, abitualmente) tipo :w
o :wq
, e se lo faccio a cuore i timestamp del file (cioè il tempo modificato ultimo) , quindi non si può tornare indietro.Gli esempi che seguono (in shell BASH) mostrano gli effetti:
$ 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
ora diamo vim il file e cercare :up
e :w
comando rispettivamente:
$ vim test.txt
Non modifica, è sufficiente digitare :up
e quindi :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!
Come potete vedere, solo il tempo di accesso è cambiato, questo perché leggiamo (Access) i dati nel file. Ma il tempo di modifica del tempo di modifica & è sempre lo stesso.
vim di Ora diamo di nuovo e utilizzare il comando :w
.
$ vim test.txt
Non modifica, ma questa volta di tipo :w
e poi :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!
Ora possiamo vedere la differenza tra :up
e :w
! I dati del file sono Modificati e anche lo stato del file è Modificato, sebbene non ci sia nulla di nel modificato nel file.
Quindi, per evitare questo, si può assegnare il comando :w
al comando :up
utilizzando :map :w :up
.
È possibile utilizzare bang ('!') Con il comando di aggiornamento. – ZyX