-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathlearn-vi-15-Tabs.html
76 lines (69 loc) · 9.43 KB
/
learn-vi-15-Tabs.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<!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学习笔记 多标签页(Tabs)</title>
</head>
<body>
<p>Vim 7.0开始引入了多标签页(Tabs)概念,用于同时编辑多个文件,每一个标签页也可以包含多个缓冲区或窗口。标签页的特殊之处在于,通常作用于所有打开的缓冲区和窗口的命令(比如 :bufdo, :windo, :all, and :ball等),将只影响当前标签页中的缓冲区和窗口。</p>
<p><a href="https://www.flickr.com/photos/yyq123/390976092/" title="Photo Sharing"><img src="https://farm1.static.flickr.com/147/390976092_4b98eadb08_o.png" width="414" height="118" alt="Tabs_new" /></a></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">:tabedit</code>命令和文件名参数,可以在新标签页中打开指定的文件。也可以使用<code class="inset">:tabnew</code>命令,在新标签页中编辑新的文件。在输入以上命令及空格键之后,点击<kbd>Tab</kbd>键,将显示当前目录下的文件列表以方便你输入文件名称。</p>
<p><a href="https://www.flickr.com/photos/yyq123/33424128172/in/dateposted/" title="tabnew"><img src="https://c1.staticflickr.com/3/2816/33424128172_6b5f3ee743.jpg" width="500" height="79" alt="tabnew" /></a></p>
<p>命令<code class="inset">:tab split</code>将保留当前标签页,并在新标签页中打开当前缓冲区中的文件。如果你使用<code class="inset">:sp filename.txt</code>命令,在当前标签页中创建了一个新窗口;那么点击<kbd>Ctrl-WT</kbd>快捷键,将在当前标签页中关闭该文件,并在新建标签页中打开该文件。</p>
<p>如果你打开了多个缓冲区,那么使用命令<code class="inset">:tab ball</code>将为每一个打开的缓冲区,分别新建单独的标签页。</p>
<p>命令<code class="inset">:tabfind</code>允许你搜索并在新标签页中打开文件。比如我想打开当前目录下的img.txt文件,那么就可以使用<code class="inset">:tabfind img.*</code>命令。请注意,此命令只能打开一个文件,如果搜索出多个匹配文件,将提示“E77: 文件名过多”,这时你需要给出更精确的搜索条件以打开文件。此命令搜索文件的范围,是由path选项指定的。例如以下命令将指定搜索包含当前文件的目录(.),当前目录(两个逗号之间的空格), 以及当前目录下的所有子目录(**):</p>
<p style="text-indent:2em"><code class="inset">:set path=.,,**</code></p>
<p>Tab的标签默认显示当前缓冲区的文件名。如果在同一标签页中打开了多个缓冲区,那么标签也会显示打开缓冲区的总共数目。"+" 表示已经修改过的页面。而"2+" 则表示有3个窗口,其中一个已经更改。</p>
<p><a href="https://www.flickr.com/photos/yyq123/30905931782/in/dateposted/" title="Tabs_Label"><img src="https://c2.staticflickr.com/6/5452/30905931782_8d156cccce_o.png" width="405" height="33" alt="Tabs_Label" /></a></p>
<p>Vim默认最多只能打开10个标签页。你可以用<code class="inset">set tabpagemax=15</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">:tabs</code>可以显示已打开标签页的列表,并用“>”标识出当前页面,用“+”标识出已更改的页面。</p>
<p><a href="https://www.flickr.com/photos/yyq123/390976091/" title="Photo Sharing"><img src="https://farm1.static.flickr.com/174/390976091_f2ce87f68b_o.png" width="412" height="129" alt="Tabs_list" /></a></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">:tabclose</code>可以关闭当前标签页。而命令<code class="inset">:tabonly</code>将仅保留当前标签页,而关闭其它所有的标签页。</p>
<p>如果你使用<kbd>Ctrl-Wc</kbd>快捷键,关闭了当前标签页中的最后一个窗口,那么当前标签页也会随之关闭。</p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">切换标签页</p>
<p>使用以下任一命令,可以移动到下一个标签页:</p>
<ul>
<li><code class="inset">:tabn</code></li>
<li><code class="inset">gt</code></li>
<li><code class="inset">Ctrl-PgDn</code></li>
</ul>
<p>使用以下任一命令,可以移动到上一个标签页:</p>
<ul>
<li><code class="inset">:tabp</code></li>
<li><code class="inset">gT</code></li>
<li><code class="inset">Ctrl-PgUp</code></li>
</ul>
<p>如果已经到达最后面或最前面的标签页,将会自动转向循环。</p>
<p><a href="https://www.flickr.com/photos/yyq123/3442899619/" title="Tabs_gt_gT by yyq123, on Flickr"><img src="https://farm4.static.flickr.com/3308/3442899619_8d07f51e32_o.png" width="407" height="137" alt="Tabs_gt_gT" /></a></p>
<p>如果你打开了很多标签页,那么可以使用<code class="inset">:tabfirst</code>或<code class="inset">:tabr</code>命令,移动到第一个标签页。使用<code class="inset">:tablast</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">:tabm</code>命令。请注意,标签页次序是从0开始计数的。比如命令<code class="inset">:tabm 1</code>将把当前标签页移动到第2的位置。如果你没有为<code class="inset">:tabm</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">set showtabline=1</code>决定的。如果我们希望总是显示标签栏,那么可以用<code class="inset">set showtabline=2</code>命令来设置。如果我们希望完全不显示标签栏,那么可以使用<code class="inset">set showtabline=0</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">:tabdo</code>命令,我们可以同时在多个标签页中执行命令。比如我们打开了多个标签页,需要把这些文件中的“food”都替换成“drink”,那么就可以使用<code class="inset">:tabdo %s/food/drink/g</code>命令,一次完成对所有文件的替换操作,而不用针对每个文件重复操作。</p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">图形界面</p>
<p>如果你使用的是带有图形界面的gVim,那么新建、关闭和打开标签页的操作,都可以通过在标签页上右击鼠标完成。只需要点击相应标签,就可以在不同的标签页间切换。</p>
<p><a href="https://www.flickr.com/photos/yyq123/33452252771/in/dateposted/" title="Tabs_PopupMenu"><img src="https://c1.staticflickr.com/3/2931/33452252771_03c1ab89ef.jpg" width="353" height="194" alt="Tabs_PopupMenu" /></a></p>
<p>通过<code class="inset">:help tab-page-intro</code>命令,可以获得关于标签页使用的更多信息。我们甚至可以使用<code class="inset">:tab help tabpage</code>命令,在新的标签页查看帮助信息。</p>
<table summary="Commands" border="2" frame="hsides" rules="all" cellspacing="0" cellpadding="3">
<caption>命令小结</caption>
<tr><td><code class="inset">:tabnew</code></td><td>新建标签页</td></tr>
<tr><td><code class="inset">:tabfind</code></td><td>查找并在新标签页中打开文件</td></tr>
<tr><td><code class="inset">:tabs</code></td><td>显示已打开标签页的列表</td></tr>
<tr><td><code class="inset">:tabclose</code></td><td>关闭当前标签页</td></tr>
<tr><td><code class="inset">:tabonly</code></td><td>仅保留当前标签页打开</td></tr>
<tr><td><code class="inset">:tabn</code></td><td>移动到下一个标签页</td></tr>
<tr><td><code class="inset">:tabp</code></td><td>移动到上一个标签页</td></tr>
<tr><td><code class="inset">:tabfirst</code></td><td>移动到第一个标签页</td></tr>
<tr><td><code class="inset">:tablast</code></td><td>移动到最后一个标签页</td></tr>
<tr><td><code class="inset">:tabm</code></td><td>将当前标签页放置到指定位置</td></tr>
</table>
<p style="border-top:1px solid lightgray"><span style="float:right">Ver: 1.0</span><span><<a title="窗口(Window)" href="http://yyq123.blogspot.com/2009/08/vim-window.html">上一篇</a> |<a title="笔记列表" href="http://yyq123.github.com/learn-vim/learn-vi-00-List.html"> 目录 </a>| <a title="缓冲区 (Buffer)" href="http://yyq123.blogspot.com/2009/07/vim-buffer.html">下一篇</a>></span></p>
</body>
</html>