vimdiff: 使用Vim中强大的文件diff功能[转]

学习了一段时间的Vim,直到最近才发现Vim的diff功能是如此方便,对比代码变化再也不用到处去找diff软件或者依靠版本控制的diff了。强大的Vim。

下图是我在macVim中的diff效果。

下面是vimdiff的常见用法,总结了一下,不仔细看一遍手册,在各种场景下还真不一定能马上想到最合适的命令。

在终端中直接以diff模式打开Vim:

1 vimdiff file1 file2 [file3 [file4]] #或者
2 vim -d file1 file2 [file3 [file4]]

使用GUI(gVim)的话:

1 gvimdiff file1 file2 [file3 [file4]]
2
3 #或者
4
5 vim -d -g file1 file2 [file3 [file4]]

mac用户使用macVim的话如下,这是vim doc中没有提到的:

1 mvim -d -g file1 file2 [file3 [file4]]

上面的操作将会用vertical分割的方式打开文件进行diff,如果要使用水平分割,可以加入参数-o

1 vimdiff -o file1 file2
2
3 #或者如下,gvim和macvim类推
4
5 vim -d -o file1 file2

前面是使用diff模式直接打开Vim的方法,如果已经在Vim中要启用diff模式,则使用以下命令:

1 :diffs[plit] {filename} #在当前窗口分割,载入另一个文件filename进行diff
2
3 :difft[his] #将当前文件加入diff
4
5 :diffp[atch] {patchfile} #将buffer中的文件载入当前窗口进行diff

以上操作都可以加入 vimdiff 的其他 -options。

如果在载入文件时要使用纵向分割,可以加上vert前缀命令:

1 :vert diffs file2.txt

文件改动后,要刷新diff,可以使用diffupdate命令

1 :diffu[pdate] #更新diff
2
3 :diffu[pdate] ! #对所有文件更新diff

在diff中的跳转:

1 ] c #下一个不同
2 [ c #上一个不同

在diff模式中,要关闭diff模式返回正常模式,可以使用diffoff命令:

1 :diffo[ff] #将目前文件退出diff模式
2
3 :diffo[ff]! #将目前窗口中的所有文件退出diff模式

以上就是常用的vimdiff命令和方法,还有很多复杂的命令没有研究和列举,例如diffexpr, diffcopying 等等,功能就更加强大了。

在版本文件中随意切换、diff和跳转查看变更,在Vim中就是如此简单!

时间: 2024-10-04 03:16:19

vimdiff: 使用Vim中强大的文件diff功能[转]的相关文章

vim中的加密文件

用vim编辑程序. 要连续输入几个宏名,将键盘改为了大写输入. 存盘退出,本该用:x,结果写成了:X.接着,要求输入密码,再确认一次.按要求做了,心中还在纳闷. 接着用gcc编译程序,一大堆错误.根据提示,源文件中有大量非法的符号. 用vim打开,需要输入密码. 用gedit打开,里面不少怪符号. 想到误将源文件加密了. 查资料,知道了:x和:X的区别.知道了在命令状态下,用:set key=解密. 第一次解密,没有注意到=后面该有个空格. gcc还是一堆错误,再vim,还要密码. 第二次解密,

Vim中的swp文件,在vim非正常退出时,再次编辑会出问题

vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件,如果原文件名是data,那么swp文件名就是.data.swp.如果文件正常退出,则此文件自动删除.以下两种情况不会删除swp文件: Vim非正常退出,这种情况下,除非手动删除swp文件(也可以在vim提示时删除),否则它会一直存在. 多个程序同时编辑一个文件. 可以通过选项禁止产生swp文件 set noswapfile

VIM中diff的使用

1.启动diff 在VIM中开启diff的方式有很多,下面介绍几种常用的场景. 1.1 外部直接打开两个文件 # 直接使用vimdiff指令vimdiff FILE_1 FILE_2# 使用vim指令加-d参数 vim -d FILE_1 FILE_2 1.2 打开文件之后再进行文件比较 # 先打开一个文件,再打开另一个文件进行对比 vim FILE_1 :vertical diffsplit FILE_2 # 直接打开两个文件,在进行比较 vim -On FILE_1 FILE_2 :diff

转:在VIM中保存编辑过的只读文件

你是否会和我一样经常碰到这样的情景:在VIM中编辑了一个系统配置文件,当需要保存时才发现当前的用户对该文件没有写入的权限.如果已 经做了很多修改,放弃保存的确很懊恼,只好先保存在用户的主目录下,再用sudo mv移动到文件的原始位置,并按需要chown.这样做实在太麻烦了,以下的这个技巧就太方便了.当需要保存时,输入以下的命令: :w !sudo tee %

vim中.swp文件处理

参考: http://blog.csdn.net/lingdxuyan/article/details/4993868 http://www.cnblogs.com/softwaretesting/archive/2011/09/23/2185851.html 关于swp文件 使用vi,经常可以看到.swp这个文件,那这个文件是怎么产生的呢,当你打开一个文件,vi就会生成这么一个.(filename)swp文件 以备不测(不测下面讨论),如果你正常退出,那么这个这个swp文件将会自动删除 . 不

去除VIM中打开文件里有的^M字符

现象:在linux下打开Windows编辑的文本文件时会出现^M 原因:把文件从一个系统移到另一个不同的系统,你就会遇到与换行相关的问题. 解决方法: 在命令模式下使用正则表达式进行字符全文空替换:其中"^M"的输入,分别是"Ctrl+v"."Ctrl+M"键生成的.像^M 这样的在VIM中是控制字符,在查找替换中输入控制字符必须用别的方法,那就是在输入^M时,必须依次在键盘上敲入Ctrl+V和Ctrl+M. :%s/^M//g 使用sed 工具

在vim中显示git commit的文件

我们常常想看到一个git commit当中修改的所有文件,并编辑其中的一部分,通常我们是git show #SHAxxxx, 然后再在编辑器中找到对应文件并打开,如果你用vim,那问题就简单了,一行搞定: vim -pn $(git show --pretty="format:" --name-only SHAxxxx ) 其中$()是sub shell, 也可以写成shell: function gitvim(){ vim -pn $(git show --pretty="

在Vim中查看文件编码

:set fileencoding 即可显示文件编码格式. 如果你只是想查看其它编码格式的文件或者想解决 用Vim查看文件乱码的问题,那么在 ~/.vimrc 文件中添加以下内容: set encoding=utf-8 fileencodings=utf-8 这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或 者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适 的编码,就用latin-1(ASCII)编码打开. 以指定的编码打开某文件 如

Vim 中截取部分内容保存到其他文件

最近无聊,突然想跟着玩玩天池数据挖掘,发现数据好大,想转换到mysql数据库,phpmyadmin import 导入时抱错! 数据文件大大! 于是乎,准备截取一小段到另外一个文件测试先,然后,发现了一个vim中一个很好用的命令: 1. vim 打开data.csv文件,按esc,切换到命令模式,截取第2到200行到新文件data_copy.csv中: : 2, 200 w ./data_copy.csv 2. 追加到原有文件中命令:加上 “>>” 表示追加而不覆盖! :201,380 w &