-
Notifications
You must be signed in to change notification settings - Fork 28
/
learn-vi-192-diffgp.html
49 lines (42 loc) · 5.21 KB
/
learn-vi-192-diffgp.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh" xml:lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="learn-vi.css" />
<title>VIM学习笔记 比较文件-消除差异(diffget & diffput)</title>
</head>
<body>
<h1>VIM学习笔记 比较文件-消除差异(diffget & diffput)</h1>
<p>在操作系统的命令行中使用以下命令,可以利用Vim比较多个文件:</p>
<p style="text-indent:2em"><code class="inset">$ vimdiff file1 file2</code></p>
<p>如下图所示,红色高亮区域显示了两个文件中第三行的差异,左侧文件包含文字“ACTUAL”,而右侧文件则包含文字“BUDGET”:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/vimdiff_2_files.png" title="vimdiff"><img src="https://yyq123.github.io/learn-vim/images/vimdiff_2_files.png" alt="vimdiff" width="550" height="121" /></a></p>
<p>在比较文件并发现不同之处以后,可以通过命令消除这些差异点。</p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">获取差异</p>
<p>使用<code class="inset">]c</code>命令,可以移动到差异处。</p>
<p>使用<code class="inset">:diffget</code>或<code class="inset">do</code>命令,将从另一文件中获得差异文字并复制到当前文件中,以消除差异。</p>
<p>例如,在左侧文件中执行:diffget命令,会将右侧文件中的文字“BUDGET”,复制到左侧文件,并替代掉差异文字“ACTUAL”:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/diffget.png" title="diffget"><img src="https://yyq123.github.io/learn-vim/images/diffget.png" alt="diffget" width="550" height="121" /></a></p>
<p>如果希望一次性获取整个文件的差异,那么可以使用以下命令:</p>
<p style="text-indent:2em"><code class="inset">:%diffget</code></p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">推送差异</p>
<p>使用<code class="inset">:diffput</code>或<code class="inset">dp</code>命令,将以当前文件为基准,消除另一文件中的差异。</p>
<p>例如,在左侧文件中执行:diffput命令,会将左侧文件中的文字“ACTUAL”推送到右侧文件,并替代掉差异文字“BUDGET”:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/diffput.png" title="diffput"><img src="https://yyq123.github.io/learn-vim/images/diffput.png" alt="diffget" width="550" height="121" /></a></p>
<p>如果希望一次性推送整个文件的差异,那么可以使用以下命令:</p>
<p style="text-indent:2em"><code class="inset">:%diffput</code></p>
<p>使用:diffget和:diffput命令消除差异之后,vim会自动刷新差异的高亮显示;如果您采用手动修改文字来消除差异,那么需要执行<code class="inset">:diffupdate</code>命令来刷新差异的高亮显示。</p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">消除多个文件间的差异</p>
<p>我们可以同时比较多个文件之间的差异。例如以下命令,将比较三个文件:</p>
<p style="text-indent:2em"><code class="inset">$ vimdiff file1 file2 file3</code></p>
<p>如下图所示,红色高亮区域显示了三个文件中第三行的差异:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/vimdiff_3_files.png" title="vimdiff"><img src="https://yyq123.github.io/learn-vim/images/vimdiff_3_files.png" alt="vimdiff" width="550" height="121" /></a></p>
<p>因为此时打开了多个<a href="http://yyq123.github.io/learn-vim/learn-vi-13-MultiBuffers.html" title="Buffer">缓冲区 (Buffer)</a>,所以需要执行:diffget [bufspec]和:diffput [bufspec]命令以指明缓冲区。例如<code class="inset">:diffput 3</code>命令,将推送差异到第三缓冲区:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/diffput_3.png" title="vimdiff"><img src="https://yyq123.github.io/learn-vim/images/diffput_3.png" alt="vimdiff" width="550" height="121" /></a></p>
<p>其中,[bufspec]参数可以是缓冲区编号,缓冲区名称,或者缓冲区名称的一部分。可以使用<code class="inset">:buffers</code>命令,来查看包含缓冲区编号和名称的列表。</p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">帮助信息</p>
<p>使用<code class="inset">:help copy-diffs</code>命令,可以查看合并/消除差异的更多帮助信息。</p>
<p style="border-top:1px solid lightgray"><span style="float:right">Ver: 2.0 | <a href="mailto:[email protected]">YYQ</a></span><span><<a title="比较文件(diff)" href="http://yyq123.github.io/learn-vim/learn-vi-191-diff.html">上一篇</a> |<a title="笔记列表" href="http://yyq123.github.com/learn-vim/learn-vi-00-List.html"> 目录 </a>| <a title="操作文件(Manipulate File)" href="http://yyq123.github.io/learn-vim/learn-vi-18-ManipulateFile.html">下一篇</a>></span></p>
</body>
</html>