vimdiff: 使用Vim中强大的文件diff功能[转]
学习了一段时间的Vim,直到最近才发现Vim的diff功能是如此方便,对比代码变化再也不用到处去找diff软件或者依靠版本控制的diff了。强大的Vim。
下图是我在macVim中的diff效果。

下面是vimdiff的常见用法,总结了一下,不仔细看一遍手册,在各种场景下还真不一定能马上想到最合适的命令。
在终端中直接以diff模式打开Vim:
vimdiff file1 file2 [file3 [file4]] #或者
vim -d file1 file2 [file3 [file4]]
使用GUI(gVim)的话:
gvimdiff file1 file2 [file3 [file4]] #或者 vim -d -g file1 file2 [file3 [file4]]
mac用户使用macVim的话如下,这是vim doc中没有提到的:
mvim -d -g file1 file2 [file3 [file4]]
上面的操作将会用vertical分割的方式打开文件进行diff,如果要使用水平分割,可以加入参数-o
vimdiff -o file1 file2 #或者如下,gvim和macvim类推 vim -d -o file1 file2
前面是使用diff模式直接打开Vim的方法,如果已经在Vim中要启用diff模式,则使用以下命令:
:diffs[plit] {filename} #在当前窗口分割,载入另一个文件filename进行diff
:difft[his] #将当前文件加入diff
:diffp[atch] {patchfile} #将buffer中的文件载入当前窗口进行diff
以上操作都可以加入 vimdiff 的其他 -options。
如果在载入文件时要使用纵向分割,可以加上vert前缀命令:
:vert diffs file2.txt
文件改动后,要刷新diff,可以使用diffupdate命令
:diffu[pdate] #更新diff :diffu[pdate] ! #对所有文件更新diff
在diff中的跳转:
] c #下一个不同
[ c #上一个不同
在diff模式中,要关闭diff模式返回正常模式,可以使用diffoff命令:
:diffo[ff] #将目前文件退出diff模式 :diffo[ff]! #将目前窗口中的所有文件退出diff模式
以上就是常用的vimdiff命令和方法,还有很多复杂的命令没有研究和列举,例如diffexpr, diffcopying 等等,功能就更加强大了。
在版本文件中随意切换、diff和跳转查看变更,在Vim中就是如此简单!
vimdiff: 使用Vim中强大的文件diff功能[转]的更多相关文章
- VIM学习笔记 比较文件(diff)
比较 可以从命令行调用以下命令,来打开两个文件进行比较: vim -d file1 file2 如果已经打开了文件file1,那么可以在Vim中用以下命令,再打开另一个文件file2进行比较: :di ...
- vim中处理重定向文件中的^H和^M
做实验的时候会把日志重定向写到文件中,方便以后查看.但是用vim打开之后出现很多^H和^M,就像乱码一样.如图所示: 现在尝试在vim中解决这个问题. 替换^H 在vim中输入命令,表示把^H替换成空 ...
- Vim中的swp文件,在vim非正常退出时,再次编辑会出问题
vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件,如果原文件名是data,那么swp文件名就是.data.swp.如果文件正常退出,则此文件自动删除.以下两种情况不会删除swp文件: V ...
- vim中的加密文件
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sxhelijian/article/details/32911665 用vim编辑程序. 要连续输入 ...
- vim中利用swp文件进行恢复
经常电脑因为没电或者强行关闭vim,会导致原文件没有保存, 这种情况下vim会自动保存一个.swp文件,需要恢复时, 使用vim -r filename 期中-r意思为recovery 恢复之后最好删 ...
- 学会了vim中的自动补全功能
好开心,再也不用再多个工具之间切换了,哈哈 擦,功能太弱
- vim中^M的研究
vim打开文件时在行尾显示^M,这样的情况时不时会遇到,下面稍微深入了解下这个问题: 原理呢,其实很简单:Windows换行风格(也叫dos风格)的文本以Unix风格解析就会出现这个情况: 首先重现这 ...
- vim 中查询和转换编码
vim中查询修改文件编码格式 set fileencoding 查看现在文本的编码 :set fenc=编码 转换当前文本的编码为指定的编码 :set enc=编码 以指定的编码显示文本,但不保存到文 ...
- vim中.swp文件处理
参考: http://blog.csdn.net/lingdxuyan/article/details/4993868 http://www.cnblogs.com/softwaretesting/a ...
随机推荐
- PHP第二课笔记
★Php的基本概念 快速入门案例 test.php <html> <body> //<?php ?>是运行在服务端 <?php echo 'hello' ...
- python视频教程大全集下载
python3英文视频教程(全87集) http://pan.baidu.com/s/1dDnGBvV Python从入门到精通视频(全60集)链接:http://pan.baidu.com/s/1e ...
- python的闭包以及闭包在设计里的意图和作用
def test(func): print func(3,4) test(lambda x,y : x+y) test(lambda x,y : x-y) 这是python的一种闭包写法,他的设计意图 ...
- Linux安装oracle报错解决
安装报错:[oracle@centos1 database]$ ./runInstaller Starting Oracle Universal Installer... Checking insta ...
- union all合并记录
SQL> SELECT empno AS 编码, ename AS 名称, nvl(mgr, deptno) AS 上级编码 FROM emp 2 order by empno 3 UNION ...
- 第04讲- Android项目目录结构分析
学习内容: 1. 认识R类(R.java)的作用 R.java是在建立项目时自动生成的,这个文件是只读模式,不能更改.R类中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R ...
- poj 1759 Garland (二分搜索之其他)
Description The New Year garland consists of N lamps attached to a common wire that hangs down on th ...
- 学习php常用算法
<?php /*学用php算法*/ /*1.冒泡法 *思路分析:在要排序的一组数中,对当前还未排好的序列, *从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒. *即,每 ...
- python高级编程 编写一个包1
#目的是:编写,发行python包可重复过程"""1:是缩短开始真正工作之前所需要的设置时间,也就是提供模板2:提供编写包的标准化方法3:简化测试驱动开发方法的使用4:为 ...
- boost::asio译文
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENS ...