-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathlearn-vi-16-MultiArguments.html
63 lines (58 loc) · 6.72 KB
/
learn-vi-16-MultiArguments.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
<!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学习笔记 参数(Arguments)</title>
</head>
<body>
<h1>VIM学习笔记 参数(Arguments)</h1>
<h2 class="article"><a id="args">启动参数</a></h2>
<p>在启动vim时,可以指定多个文件做为参数,例如以下操作系统命令将打开多个文件,并显示第一个文件:</p>
<p style="text-indent:2em"><code class="inset">$ vim file1.txt file2.txt file3.txt</code></p>
<p>参数(Arguments)和<a href="http://yyq123.github.io/learn-vim/learn-vi-13-MultiBuffers.html" title="Buffer">缓冲区</a>(Buffer)是不同的概念。早在Vi时期,就存在参数概念;而缓冲区则是在Vim之中新引进的。参数列表中的所有文件名,都会同时存在于缓冲区列表之中;但并不是所有缓冲区列表中的文件名,也都会出现在参数列表之中。</p>
<p>例如在启动vim之后,使用以下命令打开并编辑文件:</p>
<p style="text-indent:2em"><code class="inset">:e file4.txt</code></p>
<p>此时显示以下3个参数:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/args_3.jpg" title="args_3"><img src="https://yyq123.github.io/learn-vim/images/args_3.jpg" alt="args_3" /></a></p>
<p><a href="https://www.flickr.com/photos/yyq123/42559299455/in/dateposted/" title="args_3"><img src="https://farm2.staticflickr.com/1829/42559299455_0e76c01a10_o.jpg" width="552" height="42" alt="args_3" /></a></p>
<p>而缓冲区则为4个:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/args_4.jpg" title="args_4"><img src="https://yyq123.github.io/learn-vim/images/args_4.jpg" alt="args_4.jpg" /></a></p>
<p><a href="https://www.flickr.com/photos/yyq123/41656148030/in/dateposted/" title="args_4"><img src="https://farm2.staticflickr.com/1789/41656148030_ededba7c03_o.jpg" width="552" height="146" alt="args_4" /></a></p>
<h2 class="article"><a id="arglist">参数列表</a></h2>
<p>命令<code class="inset">:args</code>可以列示打开的多个文件,并用中括号“[]”标识出正在编辑的文件名。</p>
<p><a href="https://yyq123.github.io/learn-vim/images/args.png" title="args"><img src="https://yyq123.github.io/learn-vim/images/args.png" alt="args" /></a></p>
<p><a href="https://www.flickr.com/photos/yyq123/3737701803/" title="args by yyq123, on Flickr"><img src="https://farm3.static.flickr.com/2513/3737701803_11f4eb9625_o.png" width="491" height="144" alt="args" /></a></p>
<p>如果在命令中指定了文件名列表,那么可以打开多个文件:</p>
<p style="text-indent:2em"><code class="inset">:args *.txt</code></p>
<h2 class="article"><a id="alternate-file">切换多个文件</a></h2>
<p>可以使用:argument命令,直接切换到指定的文件。例如以下命令,将切换至列表中的第三个文件:</p>
<p style="text-indent:2em"><code class="inset">:argument 3</code></p>
<p>需要切换到下一个文件时,可以输入<code class="inset">:next</code>命令,如果你没有保存当前文件的修改,vim将给出提示信息,不允许切换到下一文件。输入<code class="inset">:write</code>和<code class="inset">:next</code>命令,则可以保存并切换到第二个文件(此命令也可简写为<code class="inset">:wnext</code>)。</p>
<p>使用<code class="inset">:next!</code>命令,可以强制切换到第二个文件,但所做改动也将会丢失。使用<code class="inset">:set autowrite</code>命令打开自动保存功能,可以避免数据丢失的意外情况;而命令<code class="inset">:set noautowrite</code>则可以关闭自动保存功能。</p>
<p>如果想要回到上一个文件,可以使用<code class="inset">:previous</code>或是<code class="inset">:Next</code>命令。如果要保存当前文件并切换到前一文件,可以使用<code class="inset">:wprevious</code>或是<code class="inset">:wNext</code>命令。</p>
<p>Vim将当前文件(current filename)标记为“%”;而将之前的交换文件(alternate filename)标记为“#”。</p>
<p>使用<code class="inset">:e #</code>命令,也可以切换到上一个文件中;如果当前文件没有保存,则会提示进行保存或者放弃。</p>
<p>如果希望放弃当前的文件编辑,并直接返回上一个文件中,那么可以使用<code class="inset">:e! #</code>命令。</p>
<p>使用<code class="inset">:r #</code>命令, 可以将上一文件的内容读入(粘贴)到当前文件中。</p>
<p>由于在编辑多文件的过程中,经常需要切换到之前的文件,因此提供快捷键<kbd>ctrl+^</kbd>进行快速切换。</p>
<p>使用<code class="inset">:first</code>或<code class="inset">:rewind</code>命令,可以快速切换到第一个文件;而<code class="inset">:last</code>命令,则可以快速切换到最后一个文件。</p>
<table summary="Commands" border="2" frame="hsides" rules="all" cellspacing="0" cellpadding="3">
<caption>命令小结</caption>
<tr><td><code class="inset">:next</code></td><td>切换到下一文件</td></tr>
<tr><td><code class="inset">:wnext</code></td><td>保存后切换到下一文件</td></tr>
<tr><td><code class="inset">:previous</code></td><td rowspan="2">切换到上一文件</td></tr>
<tr><td><code class="inset">:Next</code></td></tr>
<tr><td><code class="inset">:wprevious</code></td><td rowspan="2">保存后切换到上一文件</td></tr>
<tr><td><code class="inset">:wNext</code></td></tr>
<tr><td><code class="inset">:first</code></td><td>切换到第一个文件</td></tr>
<tr><td><code class="inset">:last</code></td><td>切换到最后一个文件</td></tr>
<tr><td><code class="inset">:set autowrite</code></td><td>打开自动保存功能</td></tr>
<tr><td><code class="inset">:set noautowrite</code></td><td>关闭自动保存功能</td></tr>
<tr><td><code class="inset">:args</code></td><td>显示正在编辑的文件名</td></tr>
<tr><td><code class="inset">:argument [N]</code></td><td>切换至第N号文件</td></tr>
</table>
<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="缓冲区(Buffer)" href="http://yyq123.github.io/learn-vim/learn-vi-13-MultiBuffers.html">上一篇</a> |<a title="笔记列表" href="http://yyq123.github.com/learn-vim/learn-vi-00-00-TOC.html"> 目录 </a>| <a title="窗口(Window)" href="http://yyq123.github.io/learn-vim/learn-vi-14-MultiWindows.html">下一篇</a>></span></p>
</body>
</html>