八、编辑多个文件(准)
用户经常遇到需要同时编辑多个文件的情况。可能是需要对多个文件作出修改,或者是拷贝文件的部分内容到另一个文件。 用户可以通过在命令行具体指定多个文件的方式使 vi 打开多个文件。
vi file1 file2...
代码语言:javascript复制现在退出所处的 vi 会话,并创建一个用于编辑的新文件。 输入
:wq
来退出 vi 并保存做出的修改。 接下来,使用 ls 命令的部分输出在主目录创建一个用于实验的新文件。
ls -l /usr/bin > ls-output.txt
代码语言:javascript复制现在就用 vi 同时编辑旧文件和新文件。
vi foo.txt ls-output.txt
vi 启动后,屏幕显示内容如下所示:
1.切换文件(准)
(1):n命令
① 是什么?
使用以下 ex 命令来从一个文件切换到下一个文件。
② 怎么做?
Ⅰ.语法格式
:n
输入后别忘了按 Enter 键。
(2):N命令
① 是什么?
ex 命令用来切换回上一个文件。
② 怎么做?
Ⅰ.语法格式
:N
输入后别忘了按 Enter 键。
(3):n和:N切换时注意事项
当用户从一个文件切换到另一个的时候,vi 要求用户必须先保存对当前文件做出的修改才能切换到其它文件。 若要放弃对文件的修改,并使 vi 强制切换到另一个文件,可在命令后面加感叹号。
(4):buffers命令
除了以上描述的切换方法,vim(和一些版本的 vi)还提供一些 ex 命令让用户可以更轻松地编辑多个文本。 用户可使用 :buffers 命令来查看正在编辑的文件列表。
① 怎么做?
:buffers
(5):buffer 文件编号
通过文件编号进行切换。
① 怎么做?
输入
:buffer
加文件(buffer)编号可切换到另一个文件(buffer)。
Ⅰ.示例
代码语言:javascript复制如从文件1(foo.txt) 切换到 文件2(ls-output.txt),用户应当输入如下命令。
:buffer 2
# 现在屏幕展示的就是 文件2 的内容。
2.载入更多的文件(准)
我们也可以在现有的编辑会话中载入更多文件。 使用 ex 命令
:e
(edit的缩写)加文件名可以载入另一个文件。
(1):e命令
① 怎么做?
使用 ex 命令
:e
(edit的缩写)加文件名 可以在现有编辑会话中载入另一个文件。
Ⅰ.语法格式
:e 想载入的文件名
Ⅱ.示例
代码语言:javascript复制先退出现有的编辑会话并回到命令行模式。 重启 vi,并只打开一个文件1(foo.txt)。
vi foo.txt
代码语言:javascript复制添加一个文件(ls-output.txt)到编辑会话中,输入以下代码。
:e ls-output.txt
代码语言:javascript复制屏幕将显示第二个文件的内容,而第一个文件仍然处于编辑状态,可使用
:buffers
命令来证实。
:buffers
# 查看正在编辑的文件列表。
② 注意
使用 :e 载入的文件不会响应
:n
或:N
命令,而需使用:buffer
加文件编号 来切换文件。
3.文件之间的内容复制(准)
(1)怎么做?
用户在编辑多个文件的过程中,有时会需要将一个文件中的一部分复制到另一个文件中。 使用之前使用过的 复制和粘贴命令 即可完成此功能,示例如下:
① 示例
代码语言:javascript复制首先,在载入的两个文件中,先切换到文件1(foo.txt)。
:buffer 1
此时屏幕显示如下:(图片取自之前,因为效果是一样的,不再另行截图)
代码语言:javascript复制接下来,将光标移动到文件的第一行并输入
yy
(复制当前行) 命令来复制第一行。 输入如下命令来切换到文件2(ls-output.txt)。
:buffer 2
现在屏幕将会展示一份文件列表,如下所示(只显示一部分,图片取自之前,因为效果是一样的,不再另行截图):
将光标移动到文件的第一行并使用
p
命令将从文件1复制的内容粘贴到本文件中。结果如下:
4.插入整个文件
用户还可以将一个文件完全插入到正在编辑的文件中。
(1):r命令
① 怎么做?
命令
:r
(是read的缩写)将指定的文件内容插入到光标的位置之前。(注意:是插入到光标之前)
Ⅰ.语法格式
:r 想插入的文件名
Ⅱ.示例
代码语言:javascript复制为了演示这项功能,先结束现有的 vi 会话并重启 vi 的同时只打开一个文件(ls-output.txt)。
vi ls-output.txt
屏幕将再次显示一份文件列表:
代码语言:javascript复制将光标移动到文件的第三行并输入如下 ex 命令:
:r foo.txt
# 通过 :r 命令 foo.txt 将被完全插入到 ls-output.txt 文件中。
此时屏幕显示如下:
九、保存工作
就像其它功能一样,vi 提供了很多种方式来保存编辑过的文件。 前面的章节已经介绍过用于此功能的 ex 命令
:w
,但是还有一些其它可用方法。
1.ZZ
在命令模式下,输入
ZZ
将保存当前文档并退出 vi。
2.:wq
同样的, ex 命令
:wq
组合了:w
和:q
这两个命令的功能,能够保存文件并退出 vi。
3.:w加随意文件名-另存为
代码语言:javascript复制当命令
:w
指定一个随意的文件名时,命令的功能就类似于“ 另存为 ”。 例如,用户在编辑 foo.txt 的时候想要将其另存为 foo1.txt ,就可以输入如下内容:
:w foo1.txt
(1)注意
此命令在以新名称保存文件的同时,并不更改编辑中的原文件的名称。 当用户继续编辑时,编辑的还是 foo.txt 而不是 foo1.txt。