Vim使用最频繁的命令之一应该是 :w
。
Vim命令行命令 :w
是 :write
的缩写形式,用于将当前Vim缓冲区的内容写到磁盘文件中,即完成保存文件的操作。
别小看了这么一个简单又常见的写文件操作,合理地使用Vim命令保存文件也是一个值得深入研究的话题。Vim教程网总结了多种保存文件的Vim命令及其使用场景,供大家各取所需。
- (1) 保存文件,即把当前缓冲区内容写入文件:
:w
- (2) 强制保存文件,即便是只读文件:
:w!
- (3) 保存文件并退出:
:wq
- (4) 保存文件并退出:
:x
注
:x
命令是程序员最应该使用的命令,因为如果文件没有修改,:x
保存文件时并不会修改文件的时间戳,因此不会触发重新编译;而:wq
命令不管文件有没有被修改,都会修改时间戳,也即会触发重新编译,而这是毫无意义的。
- (5) 不保存文件,丢失所有的修改而强制退出:
:q!
- (6) 将打开的所有缓冲区分别写入对应文件,即保存所有打开的文件:
:wall
或缩写形式:wa
。没有文件名的缓冲区会报错,只读的缓冲区不会被写入。 - (7) 将打开的所有缓冲区分别写入对应文件,即保存所有打开的文件:
:xall
或缩写形式:xa
:xa
命令与:wa
的区别等价于:x
与:wq
命令的区别
- (8) 将当前缓冲区内容另存为 new.txt:
:w new.txt
- (9) 将当前缓冲区内容另存为 new.txt:
:saveas new.txt
或缩写形式:sav new.txt
,如果写操作成功,则复位 ‘readonly’ 标记 - (10) 将当前缓冲区的指定范围(range)内的内容另存为 new.txt:
:[range] w new.txt
,关于文件范围,可以参考Vim操作范围和文件范围 - (11) 将当前缓冲区的指定范围(range)内的内容追加到另一个文件 another.txt:
:[range] w >> another.txt
:w
命令缺省的 [range] 是整个缓冲区,即1,$
- (12) 当且仅当缓冲区内容被修改时才写入文件:
:update
或缩写形式:up
:update
命令和:w
类似,也支持指定范围和强制保存,其完整形式为::[range]up[date][!] [++opt] [>>] [file]
注:Vim命令的表达形式中,[]
内的内容表示可以缺省。