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