zoukankan      html  css  js  c++  java
  • vimdiff: 使用Vim中强大的文件diff功能[转]

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

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

    屏幕快照-2014-05-28-下午9.26.59.png

    下面是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中就是如此简单!

  • 相关阅读:
    关于idea的目录, mybatis里mapper无法用resource获取 和 驼峰命令规则
    直接调用类方法 和 new再调用方法 的区别
    腾讯笔试题
    linux安装包
    centos 学习笔记一
    putty链接l虚拟机linux centos
    单链表的一般处理(C语言)
    华为2011机试题
    【转】函数返回类型为指针类型时的一些问题
    在 Windows Server 2012 上安装 dotNET Framework v3.5
  • 原文地址:https://www.cnblogs.com/galoishelley/p/4045611.html
Copyright © 2011-2022 走看看