vimdiff的常用命令

来源:互联网 发布:linux系统vi编辑器 编辑:程序博客网 时间:2024/05/17 07:10

vimdiff [options] file1 file2 [file3]

[功能]

同时打开两个或者多个文件,进行比较。


[描述]

vimdiff会将两个文件的相同指出尽量列在同一位置上面,便于查对比较。其命令基本和vim是一致的。

vimdiff使用vim启动两个或者多个文件,每个文件有其自己的窗口。每个文件中不同的地方会用高亮显示出来。它在进行改变的检查以及将改动从一个版本的文件移动到另一个版本的情况下非常方便。首先你得保证安装了vim才能是用vimdiff.用这个命令安装:

#apt-get install vim-full

其他类似的工具还tkdiff,meld 和 xfdiff4等。 


[举例]

*同时打开main.cpp和main2.cpp,垂直方向分屏:

$vimdiff main.cpp main2.cpp

或$vim -d main.cpp main2.cpp

这样会同时打开两个文件垂直在两栏显示,可以打开不止两个文件


*同时打开main.cpp和main2.cpp,水平方向分屏:

$vimdiff -o main.cpp main2.cpp

这样会同时打开两个文件在上下两栏显示.


**打开文件之后

可以看见不同的地方会高亮显示,相同的地方默认会被折叠起来。如下常用操作:

*跳到下一个不同的地方:

输入"]c".


*跳到上一个不同的地方:

输入"[c".


*用另外一个窗口的不同处替换当前:

输入"do".

这里,前提是用']c'或者'[c'跳到相应的不同处,执行完毕之后,当前窗口当前位置内容被替换为另外一个窗口的当前位置内容。注意这里是两个文件的情况,当前窗口有多于两个文件时无法进行。


*先指定范围1-100行,再用另外一个窗口的不同处替换当前:

输入"1,100 diffg".

或输入"1,100 diffget".

这里,等同于do不过指定了范围,如果有缓冲还可在diffg后面指定缓冲名字。


*先指定范围1-100行,再用指定3号缓冲(假设是文件file3)的不同处替换当前:

输入"1,100 diffg 3".

或输入"1,100 diffget 3".

这里,在diffg后面指定缓冲名字。


*用当前替换另外一个窗口的不同处:

输入"dp".

这里,前提是用']c'或者'[c'跳到相应的不同处,执行完毕之后,另外一个窗口的当前位置内容被替换成当前窗口当前的位置内容。注意这里是两个文件的情况,当前窗口有多于两个文件时无法进行。


*先指定范围1-100行,再用另外一个窗口的不同处替换当前:

输入"1,100 diffpu".

或输入"1,100 diffput".

这里,等同于dp不过指定了范围,如果有缓冲还可在diffpu后面指定缓冲名字。


*先指定范围1-100行,再用指定3号缓冲(假设是文件file3)的不同处替换当前:

输入"1,100 diffpu 3".

或输入"1,100 diffput 3".

这里,在diffpu后面指定缓冲名字。


*新开一个水平窗口载入file文件进行对比:

输入":diffsplit file".

这里新开的窗口是水平排列的,在不同窗口间移动的命令同vim。


*新开一个垂直窗口载入file文件进行对比:

输入"vert diffsplit file".

这里,vert实际是vertical前缀的简写。新开的窗口是垂直排列的,在不同窗口间移动的命令同vim。


*强制更新文件的不同状态:

输入":diffupdate".

这里,当我们修改某一个文件的时候,vim会试图使它和另外一个文件的不同之处保持更新,例如插入和删除行。但是,更复杂的修改或者在一个行内的修改可能会导致不同处(vimdiff)没有及时更新,这时候可以运行这个命令(diffupdate)进行强制更新。


*修改缺省的上下文行为3行:

输入":set diffopt=context:3".

这里vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数,可以这样设置.



*打开折叠的文本:

输入"zo".


*折叠相同的文本:

输入"zc".


*修改完毕之后保存所有文件:

输入"wqa".

**


颜色修改:

换成colorscheme,使用  :colorscheme pablo 
或者:h hl-DiffAdd 

[其他]

1. 使用vim的比较模式打开两个文件:
vim -d file1 file2

vimdiff file1 file2

2. 如果已经打开了文件file1,再打开另一个文件file2进行比较:
:vert diffsplit file2
如果没有用vert命令,diffsplit则会分上下两个窗口。

3. 如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。
分别在两个窗口里面输入命令:
:diffthis

4. 如果更改了某个窗口的内容,vim又没有自动更新diff检查,可以使用如下命令更新:
:diffupdate

5. 定位到不同点:
[c     跳到前一个不同点
]c     跳到后一个不同点

6. 在窗口间跳转:
ctrl-w w    跳到下一个窗口
ctrl-w h    跳到左侧窗口
ctrl-w l    跳到右侧窗口
ctrl-w j    跳到下方的窗口
ctrl-w k    跳到上方的窗口

7. 合并文档:
dp          将差异点的当前文档内容应用到另一文档(diff put)
do          将差异点的另一文档的内容拷贝到当前文档(diff get)

8. 上下文的展开和查看
比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以这样设置:
:set diffopt=context:3

可以用简单的折叠命令来临时展开被折叠的相同的文本行: 
zo          (folding open, z这个字母看上去比较像折叠的纸)

然后可以用下列命令来重新折叠: 
zc          (folding close)


其实vimdiff就是vim,只是一个符号链接而已,你可以file /etc/alternatives/*|grep bin/vim看看。

0 0