现在的位置: 首页 > 综合 > 正文

vim 比较文件、修改二进制文件

2013年10月08日 ⁄ 综合 ⁄ 共 1135字 ⁄ 字号 评论关闭

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这个字母看上去比较像折叠的纸)

9. 比较二进制文件
    vim -bd 1.bin 2.bin

    :%!xxd -g 1,这样就ok了,对于二进制文件的比较和打开,必须明确指出-b参数,否则,二进制数据显示出现错误!
   
    可以使用如下键盘映射:
   
    nmap <C-F7> :%!xxd -g 1<CR>
    nmap <S-F7> :%!xxd -r<CR>

    :diffget从对面的窗口获取不同之处到当前窗体
   
    :diffput将当前窗口的不同之处复制到对面窗体
   
    do等同diffget diff obtain
   
    dp等同diffput

10. 编辑二进制文件

    vim -b filename            打开二进制文件
   
    :%!xxd                     转化成16进制查看
   
    :%!xxd -r                修改后将16进制转到二进制
   
    :wq                        存盘退出

抱歉!评论已关闭.