2010-06-22 67 views
13

我意识到,在gvim Control+S作为:update命令。我总是使用Ctrl+S保存,所以我认为:update是另一种说法,“刷新更改”。是:update基本上一样写:w?如果我将:update替换为:w!,我会遇到问题吗?Vim中的update和w有什么区别?

编辑:我想将:update更改为:w!因为我有一个文件,上面写着“仅供用户准备,请添加!”。而且我认为这是唯一的解决办法

+0

您可以使用bang('!')和update命令。 – ZyX 2010-06-22 15:54:59

回答

4

从帮助:

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

:help :update说:

类似于 “:写”,但只有当缓冲区已修改写。

15

:help :update是上很清楚:

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

因此,如果缓冲区的内容实际上已经改变了文件将只写。因此,如果您使用:update(或在GVim中按Ctrl + S),并且缓冲区中没有未保存的更改,它将不会执行任何操作。

+0

我一直忘记使用':help',并最终在StackOverflow上结束。强调这个答案是有帮助的。 – 2017-04-02 06:27:19

9

这里是另一种方式来解释:write(快捷:w)和:update(快捷键:up)之间的区别:

当我们键入:w,VIM将字面上写的缓冲区里的文件,不管缓冲区是空的或不。那意味着它将更新文件的时间戳到时间:w键入,即使该文件的内容没有实际更改。

虽然与:up,就像vim的帮助手册称,VIM将只更新时间戳当文件已被更改。


例如,当我打开一个文件只是为了阅读,但我可能不小心(或习惯)型:w:wq,如果我做护理有关文件的时间戳(即最后修改时间) ,那么就没有回头路了。下面的例子(在BASH外壳)显示效果:

$ 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 

现在让我们VIM文件,试分别:up:w命令:

$ vim test.txt 

不要编辑,只需键入:up然后: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! 

正如你所看到的,只有访问时间被改变,这是因为我们读取(访问)文件中的数据。但修改时间&更改时间仍然相同。


现在再次让我们vim和使用:w命令。

$ vim test.txt 

不要修改,但这次类型:w然后: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! 

现在我们可以看到:up:w的区别!该文件的数据是修改和文件状态也改变,虽然没有什么真的文件中更改。


因此,为了避免这种情况,一个可以在:w命令映射到使用:map :w :up:up命令。

相关问题