我意识到,在gvim Control+S
作为:update
命令。我总是使用Ctrl+S
保存,所以我认为:update
是另一种说法,“刷新更改”。是:update
基本上一样写:w
?如果我将:update
替换为:w!
,我会遇到问题吗?Vim中的update和w有什么区别?
编辑:我想将:update
更改为:w!
因为我有一个文件,上面写着“仅供用户准备,请添加!
”。而且我认为这是唯一的解决办法
我意识到,在gvim Control+S
作为:update
命令。我总是使用Ctrl+S
保存,所以我认为:update
是另一种说法,“刷新更改”。是:update
基本上一样写:w
?如果我将:update
替换为:w!
,我会遇到问题吗?Vim中的update和w有什么区别?
编辑:我想将:update
更改为:w!
因为我有一个文件,上面写着“仅供用户准备,请添加!
”。而且我认为这是唯一的解决办法
从帮助:
:[range]up[date][!] [++opt] [>>] [file]
Like ":write", but only write when the buffer has been
modified. {not in Vi}
:help :update
说:
类似于 “:写”,但只有当缓冲区已修改写。
:help :update
是上很清楚:
Like ":write", but only write when the buffer has been modified.
因此,如果缓冲区的内容实际上已经改变了文件将只写。因此,如果您使用:update
(或在GVim中按Ctrl + S),并且缓冲区中没有未保存的更改,它将不会执行任何操作。
我一直忘记使用':help',并最终在StackOverflow上结束。强调这个答案是有帮助的。 – 2017-04-02 06:27:19
这里是另一种方式来解释: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
命令。
您可以使用bang('!')和update命令。 – ZyX 2010-06-22 15:54:59