-
Notifications
You must be signed in to change notification settings - Fork 27
/
learn-vi-48-05-ExScript.html
44 lines (37 loc) · 5.01 KB
/
learn-vi-48-05-ExScript.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
<!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学习笔记 Ex脚本 (Ex Script)</title>
</head>
<body>
<h1>VIM学习笔记 Ex脚本 (Ex Script)</h1>
<p>如果希望一次性执行多条Ex命令,那么可以将这些命令保存为脚本文件,然后即可重复调用。</p>
<p>例如我的这个<a title="笔记列表" href="http://yyq123.github.com/learn-vim/learn-vi-00-00-TOC.html">VIM学习笔记</a>,都是在Vim里手工编写HTML代码的。相同的代码也会同步粘贴到我的<a href="https://yyq123.blogspot.com" title="语虚">blog</a>里。而在搬运代码之前,我需要删除其中的Tab制表符和换行符。也就是说,我需要重复执行几个删除和替换命令。</p>
<p><a href="https://yyq123.github.io/learn-vim/images/ExScript_Purpose.png" title="ExScript_Purpose"><img src="https://yyq123.github.io/learn-vim/images/ExScript_Purpose.png" alt="ExScript_Purpose" /></a></p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">创建脚本文件</p>
<p>我将以下命令,存储名为<a href="https://yyq123.github.io/learn-vim/samples/ExScript_Sample.vim" title="ExScript_Sample">ExScript_Sample.vim</a>的脚本文件。其中,所有以双引号(")开头的文本,都将被视为注释。注释可以单独为一行,也可以被放置在行的末尾。</p>
<p><a href="https://yyq123.github.io/learn-vim/images/ExScript_Sample.png" title="ExScript_Sample"><img src="https://yyq123.github.io/learn-vim/images/ExScript_Sample.png" alt="ExScript_Sample" /></a></p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">在Vim中执行脚本文件</p>
<p>在Vim中编辑文件时,可以使用以下命令来调用Ex脚本:</p>
<p style="text-indent:2em"><code class="inset">:source ExScript_Sample.vim</code></p>
<p>Vim将在屏幕底部显示命令执行的结果(比如修改或替换的行数等);点击<kbd>Enter</kbd>回车键,将返回常规模式:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/ExScript_Message.png" title="ExScript_Message"><img src="https://yyq123.github.io/learn-vim/images/ExScript_Message.png" alt="ExScript_Message" /></a></p>
<p>如果您对执行结果不满意,那么也可以使用<code class="inset">u</code>命令,<a href="http://yyq123.github.io/learn-vim/learn-vi-06-Undo.html" title="撤销(Undo)">撤销 (Undo)</a>以上操作。</p>
<p>在启动vim时,可以将文件名做为<a href="http://yyq123.github.io/learn-vim/learn-vi-16-MultiArguments.html" title="Arguments">参数(Arguments)</a>,以打开多个文件。例如使用以下操作系统命令,将打开当前目录下的所有网页文件:</p>
<p style="text-indent:2em"><code class="inset">$ vim *.html</code></p>
<p>我们可以先在当前文件下,使用<code class="inset">:source</code>命令执行脚本;然后使用<code class="inset">:next</code>命令,切换到下一个文件,依次针对各个文件分别执行脚本。</p>
<p>而使用以下命令,则可以一次性对所有参数列表中的文件执行脚本:</p>
<p style="text-indent:2em"><code class="inset">:argdo source ExScript_Sample.vim</code></p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">在命令行中执行脚本文件</p>
<p>在操作系统的命令行中,使用vim的-c选项,可以在加载文件之后自动执行Ex脚本文件:</p>
<p style="text-indent:2em"><code class="inset">$ vim -c "source ExScript_Sample.vim" test.html</code></p>
<p>利用竖直线“|”分割符,可以<a href="http://yyq123.github.io/learn-vim/learn-vi-48-02-ExCommand-Run.html" title="执行Ex命令(Ex Command-Run)">组合执行</a>Ex脚本文件和Ex命令:</p>
<p style="text-indent:2em"><code class="inset">$ vim -c "source ExScript_Sample.vim | w" test.html</code></p>
<p>利用竖直线“|”分割符和argdo命令,可以针对多个文件分别执行脚本文件,然后保存并退出:</p>
<p style="text-indent:2em"><code class="inset">$ vim -c "argdo source ExScript_Sample.vim | w" -c "qa" A.html B.html C.html</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="执行Ex命令(Ex Command-Run)" href="http://yyq123.github.io/learn-vim/learn-vi-48-02-ExCommand-Run.html">上一篇</a> |<a title="笔记列表" href="http://yyq123.github.com/learn-vim/learn-vi-00-00-TOC.html"> 目录 </a>| <a title="Ex命令寻址方式(Ex Command-Address)" href="http://yyq123.github.io/learn-vim/learn-vi-48-01-ExCommand-Adress.html">下一篇</a>></span></p>
</body>
</html>