对于已经在vim中打开的两个缓冲区,分别使用:diffthis 之后将会对这两个缓冲区的内容进行比较,被比较的缓冲区可以是一个尚未存盘的内存中的缓冲区。
在比较两个文件的不同之处时,可以用:diffget和:diffput命令对每一处不同进行双向的同步,也可以在比较不同时对内容进行其它编辑,然后用:diffupdate 对最新内容重新进行比较。
在浏览两个文件的不同之处时,可以用[c和]c两个Normal模式的命令直接跳转到上一个和下一个不同之处。
可以通过diffopt 等选项更精细地控制哪些区别被认为是真正的不同之处,比如可以设置比较时忽略空白字符数量的不同。
Unix 下可以用 vimdiff 命令来使用这个功能。
脚本语言
Vim 有她自己的脚本语言 ,使用脚本语言写成的宏 可以实现自动执行复杂的操作。用 -s 选项启动 Vim ,或者直接切换到宏 所在目录 使用 ‘:source’ 命令都可以执行 Vim 脚本。Vim 的配置文件就可以作为 Vim 脚本的一个范例,Unix 和Linux 下配置文件名是.vimrc,Windows 下配置文件一般叫做 _vimrc。这个文件在启动 Vim 的时候被自动执行。Vim 脚本语言 可以使用 Vim 命令行 模式的所有命令 ,使用 ‘:normal’ 命令还可以使用通常模式中的所有命令。Vim 脚本语言具有数字,字符串两种数据类型 。用数字代表布尔类型 ,0代表假,之外的数全代表真。最新的 Vim 7 更提供了列表 、关联数组 等高级数据结构 。Vim 脚本语言也拥有各种比较运算符 和算术运算符 。控制结构实现了 if分支 和 for/while 循环。用户还可以自己定义函数 ,并且可以使用超过100种的预定义函数 。编写成的脚本文件可以在调试模式中进行调试。
不足之处
大文件读取速度很慢(可用vim.org下载名为LargeFile的Script并安装已优化)LargeFile
即使文件不大,如果有非常长的行的话,处理也会变慢(同上)
vim自己的脚本语言过于复杂。缺乏自动执行和窗口管理的命令。(新手往往会有这种感觉)
存在类似Ctrl-1等不能被映射的键(限于某些字符终端的性能)
转自他人博客:
它们都是多模式编辑器 ,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令 ,而且还有一些新的特性在里面。
vim的这些优势主要体现在以下几个方面:
1、多级撤消
我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。
2、易用性
vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。
3、语法加亮
vim可以用不同的颜色来加亮你的代码。
4、可视化操作
就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
5、对vi的完全兼容
某些情况下,你可以把vim当成vi来使用。