13-6 编辑多个文件和保存

2020-08-17 20:39:14 浏览数 (1)

八、编辑多个文件(准)

用户经常遇到需要同时编辑多个文件的情况。可能是需要对多个文件作出修改,或者是拷贝文件的部分内容到另一个文件。 用户可以通过在命令行具体指定多个文件的方式使 vi 打开多个文件

vi file1 file2...

现在退出所处的 vi 会话,并创建一个用于编辑的新文件。 输入:wq来退出 vi 并保存做出的修改。 接下来,使用 ls 命令的部分输出在主目录创建一个用于实验的新文件。

代码语言:javascript复制
ls -l /usr/bin > ls-output.txt

现在就用 vi 同时编辑旧文件和新文件。

代码语言:javascript复制
vi foo.txt ls-output.txt

vi 启动后,屏幕显示内容如下所示:

vi同时编辑多个文件.pngvi同时编辑多个文件.png

1.切换文件(准)

(1):n命令
① 是什么?

使用以下 ex 命令来从一个文件切换到下一个文件

② 怎么做?
Ⅰ.语法格式

:n

输入后别忘了按 Enter 键。

(2):N命令
① 是什么?

ex 命令用来切换回上一个文件

② 怎么做?
Ⅰ.语法格式

:N

输入后别忘了按 Enter 键。

(3):n和:N切换时注意事项

当用户从一个文件切换到另一个的时候,vi 要求用户必须先保存对当前文件做出的修改才能切换到其它文件。 若要放弃对文件的修改,并使 vi 强制切换到另一个文件,可在命令后面加感叹号

(4):buffers命令

除了以上描述的切换方法,vim(和一些版本的 vi)还提供一些 ex 命令让用户可以更轻松地编辑多个文本。 用户可使用 :buffers 命令来查看正在编辑的文件列表

① 怎么做?

:buffers

buffers命令查看正在编辑的文件列表.pngbuffers命令查看正在编辑的文件列表.png
(5):buffer 文件编号

通过文件编号进行切换。

① 怎么做?

输入:buffer加文件(buffer)编号可切换到另一个文件(buffer)。

Ⅰ.示例

如从文件1(foo.txt) 切换到 文件2(ls-output.txt),用户应当输入如下命令。

代码语言:javascript复制
:buffer 2
​
# 现在屏幕展示的就是 文件2 的内容。
buffer命令切换文件示例.pngbuffer命令切换文件示例.png

2.载入更多的文件(准)

我们也可以在现有的编辑会话中载入更多文件。 使用 ex 命令 :e (edit的缩写)加文件名可以载入另一个文件

(1):e命令
① 怎么做?

使用 ex 命令 :e (edit的缩写)加文件名 可以在现有编辑会话中载入另一个文件

Ⅰ.语法格式

:e 想载入的文件名

Ⅱ.示例

先退出现有的编辑会话并回到命令行模式。 重启 vi,并只打开一个文件1(foo.txt)。

代码语言:javascript复制
vi foo.txt

添加一个文件(ls-output.txt)到编辑会话中,输入以下代码。

代码语言:javascript复制
:e ls-output.txt

屏幕将显示第二个文件的内容,而第一个文件仍然处于编辑状态,可使用 :buffers 命令来证实。

代码语言:javascript复制
:buffers
​
# 查看正在编辑的文件列表。
buffers命令查看正在编辑的文件列表.pngbuffers命令查看正在编辑的文件列表.png
② 注意

使用 :e 载入的文件不会响应 :n:N 命令,而需使用 :buffer 加文件编号 来切换文件

3.文件之间的内容复制(准)

(1)怎么做?

用户在编辑多个文件的过程中,有时会需要将一个文件中的一部分复制到另一个文件中。 使用之前使用过的 复制和粘贴命令 即可完成此功能,示例如下:

① 示例

首先,在载入的两个文件中,先切换到文件1(foo.txt)。

代码语言:javascript复制
:buffer 1

此时屏幕显示如下:(图片取自之前,因为效果是一样的,不再另行截图)

vi同时编辑多个文件.pngvi同时编辑多个文件.png

接下来,将光标移动到文件的第一行并输入 yy(复制当前行) 命令来复制第一行。 输入如下命令来切换到文件2(ls-output.txt)。

代码语言:javascript复制
:buffer 2

现在屏幕将会展示一份文件列表,如下所示(只显示一部分,图片取自之前,因为效果是一样的,不再另行截图):

buffer命令切换文件示例.pngbuffer命令切换文件示例.png

将光标移动到文件的第一行并使用 p 命令将从文件1复制的内容粘贴到本文件中。结果如下:

文件间内容复制示例.png文件间内容复制示例.png

4.插入整个文件

用户还可以将一个文件完全插入到正在编辑的文件中

(1):r命令
① 怎么做?

命令 :r (是read的缩写)将指定的文件内容插入到光标的位置之前。(注意:是插入到光标之前)

Ⅰ.语法格式

:r 想插入的文件名

Ⅱ.示例

为了演示这项功能,先结束现有的 vi 会话并重启 vi 的同时只打开一个文件(ls-output.txt)。

代码语言:javascript复制
vi ls-output.txt

屏幕将再次显示一份文件列表:

buffer命令切换文件示例.pngbuffer命令切换文件示例.png

将光标移动到文件的第三行并输入如下 ex 命令:

代码语言:javascript复制
:r foo.txt
​
# 通过 :r 命令 foo.txt 将被完全插入到 ls-output.txt 文件中。

此时屏幕显示如下:

r命令插入整个文件.pngr命令插入整个文件.png

九、保存工作

就像其它功能一样,vi 提供了很多种方式来保存编辑过的文件。 前面的章节已经介绍过用于此功能的 ex 命令:w,但是还有一些其它可用方法。

1.ZZ

命令模式下,输入 ZZ保存当前文档并退出 vi

2.:wq

同样的, ex 命令 :wq 组合了:w:q 这两个命令的功能,能够保存文件并退出 vi

3.:w加随意文件名-另存为

当命令 :w 指定一个随意的文件名时,命令的功能就类似于“ 另存为 ”。 例如,用户在编辑 foo.txt 的时候想要将其另存为 foo1.txt ,就可以输入如下内容:

代码语言:javascript复制
:w foo1.txt
(1)注意

此命令在以新名称保存文件的同时,并不更改编辑中的原文件的名称。 当用户继续编辑时,编辑的还是 foo.txt 而不是 foo1.txt。

0 人点赞