Merge pull request #8750 from wxy/20180317-How-To-Edit-Multiple-Files-Using-Vim-Editor

PRF&PUB:20180317 How To Edit Multiple Files Using Vim Editor
This commit is contained in:
Xingyu.Wang 2018-05-11 10:27:04 +08:00 committed by GitHub
commit d8935ed6fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,41 +1,40 @@
如何使用 Vim 编辑器编辑多个文件 如何使用 Vim 编辑多个文件
====== ======
![](https://www.ostechnix.com/wp-content/uploads/2018/03/Edit-Multiple-Files-Using-Vim-Editor-720x340.png) ![](https://www.ostechnix.com/wp-content/uploads/2018/03/Edit-Multiple-Files-Using-Vim-Editor-720x340.png)
有时候,您可能需要修改多个文件,或要将一个文件的内容复制到另一个文件中。在图形用户界面中,您可以在任何图形文本编辑器(如 gedit中打开文件并使用 `CTRL + C``CTRL + V` 复制和粘贴内容。在命令行模式下,您不能使用这种编辑器。不过别担心,只要有 `vim` 编辑器就有办法。在本教程中,我们将学习使用 `vim` 编辑器同时编辑多个文件。相信我,很有意思哒。
有时候,您可能需要修改多个文件,或要将一个文件的内容复制到另一个文件中。在图形用户界面中,您可以在任何图形文本编辑器(如 gedit中打开文件并使用 CTRL + C 和 CTRL + V 复制和粘贴内容。在命令行模式下,您不能使用这种编辑器。不过别担心,只要有 vim 编辑器就有办法。在本教程中,我们将学习使用 Vim 编辑器同时编辑多个文件。相信我,很有意思哒。
### 安装 Vim ### 安装 Vim
Vim 编辑器可在大多数 Linux 发行版的官方软件仓库中找到,所以您可以用默认的软件包管理器来安装它。例如,在 Arch Linux 及其变体上,您可以使用如下命令: Vim 编辑器可在大多数 Linux 发行版的官方软件仓库中找到,所以您可以用默认的软件包管理器来安装它。例如,在 Arch Linux 及其变体上,您可以使用如下命令:
``` ```
$ sudo pacman -S vim $ sudo pacman -S vim
``` ```
在 Debian 和 Ubuntu 上: 在 Debian 和 Ubuntu 上:
``` ```
$ sudo apt-get install vim $ sudo apt-get install vim
``` ```
在 RHEL 和 CentOS 上: 在 RHEL 和 CentOS 上:
``` ```
$ sudo yum install vim $ sudo yum install vim
``` ```
在 Fedora 上: 在 Fedora 上:
``` ```
$ sudo dnf install vim $ sudo dnf install vim
``` ```
在 openSUSE 上: 在 openSUSE 上:
``` ```
$ sudo zypper install vim $ sudo zypper install vim
``` ```
### 使用 Linux 的 Vim 编辑器同时编辑多个文件 ### 使用 Linux 的 Vim 编辑器同时编辑多个文件
@ -44,7 +43,8 @@ $ sudo zypper install vim
#### 方法一 #### 方法一
有两个文件,即 **file1.txt****file2.txt**,带有一堆随机单词: 有两个文件,即 `file1.txt``file2.txt`,带有一堆随机单词:
``` ```
$ cat file1.txt $ cat file1.txt
ostechnix ostechnix
@ -59,53 +59,52 @@ line2
line3 line3
line4 line4
line5 line5
``` ```
现在,让我们同时编辑这两个文件。请运行: 现在,让我们同时编辑这两个文件。请运行:
``` ```
$ vim file1.txt file2.txt $ vim file1.txt file2.txt
``` ```
Vim 将按顺序显示文件的内容。首先显示第一个文件的内容,然后显示第二个文件,依此类推。 Vim 将按顺序显示文件的内容。首先显示第一个文件的内容,然后显示第二个文件,依此类推。
![][2] ![][2]
**在文件中切换** ##### 在文件中切换
要移至下一个文件,请键入: 要移至下一个文件,请键入:
``` ```
:n :n
``` ```
![][3] ![][3]
要返回到前一个文件,请键入: 要返回到前一个文件,请键入:
``` ```
:N :N
``` ```
如果有任何未保存的更改Vim 将不允许您移动到下一个文件。要保存当前文件中的更改,请键入: 如果有任何未保存的更改Vim 将不允许您移动到下一个文件。要保存当前文件中的更改,请键入:
``` ```
ZZ ZZ
``` ```
请注意,是两个大写字母 ZZSHIFT + zz 请注意,是两个大写字母 `ZZ``SHIFT + zz`)。
要放弃更改并移至上一个文件,请键入: 要放弃更改并移至上一个文件,请键入:
``` ```
:N! :N!
``` ```
要查看当前正在编辑的文件,请键入: 要查看当前正在编辑的文件,请键入:
``` ```
:buffers :buffers
``` ```
![][4] ![][4]
@ -114,57 +113,59 @@ ZZ
![][5] ![][5]
要切换到下一个文件,请输入 **:buffer**,后跟缓冲区编号。例如,要切换到第一个文件,请键入: 要切换到下一个文件,请输入 `:buffer`,后跟缓冲区编号。例如,要切换到第一个文件,请键入:
``` ```
:buffer 1 :buffer 1
``` ```
![][6] ![][6]
**打开其他文件进行编辑** ##### 打开其他文件进行编辑
目前我们正在编辑两个文件,即 file1.txt 和 file2.txt。我想打开另一个名为 **file3.txt** 的文件进行编辑。 目前我们正在编辑两个文件,即 `file1.txt``file2.txt`。我想打开另一个名为 `file3.txt` 的文件进行编辑。
您会怎么做?这很容易。只需键入 `:e`,然后输入如下所示的文件名即可:
您会怎么做?这很容易。只需键入 **:e**,然后输入如下所示的文件名即可:
``` ```
:e file3.txt :e file3.txt
``` ```
![][7] ![][7]
现在你可以编辑 file3.txt 了。 现在你可以编辑 `file3.txt` 了。
要查看当前正在编辑的文件数量,请键入: 要查看当前正在编辑的文件数量,请键入:
``` ```
:buffers :buffers
``` ```
![][8] ![][8]
请注意,对于使用 **:e** 打开的文件,您无法使用 **:n** 或 **:N** 进行切换。要切换到另一个文件,请输入 **:buffer**,然后输入文件缓冲区编号。 请注意,对于使用 `:e` 打开的文件,您无法使用 `:n``:N` 进行切换。要切换到另一个文件,请输入 `:buffer`,然后输入文件缓冲区编号。
**将一个文件的内容复制到另一个文件中** ##### 将一个文件的内容复制到另一个文件中
您已经知道了如何同时打开和编辑多个文件。有时,您可能想要将一个文件的内容复制到另一个文件中。这也是可以做到的。切换到您选择的文件,例如,假设您想将 file1.txt 的内容复制到 file2.txt 中: 您已经知道了如何同时打开和编辑多个文件。有时,您可能想要将一个文件的内容复制到另一个文件中。这也是可以做到的。切换到您选择的文件,例如,假设您想将 `file1.txt` 的内容复制到 `file2.txt` 中:
首先,请切换到 `file1.txt`
首先,请切换到 file1.txt
``` ```
:buffer 1 :buffer 1
``` ```
将光标移动至在想要复制的行的前面,并键入**yy** 以抽出(复制)该行。然后,移至 file2.txt 将光标移动至在想要复制的行的前面,并键入`yy` 以抽出(复制)该行。然后,移至 `file2.txt`
``` ```
:buffer 2 :buffer 2
``` ```
将光标移至要从 file1.txt 粘贴复制行的位置,然后键入 **p**。例如,您想要将复制的行粘贴到 line2 和 line3 之间,请将鼠标光标置于行前并键入 **p** 将光标移至要从 `file1.txt` 粘贴复制行的位置,然后键入 `p`。例如,您想要将复制的行粘贴到 `line2``line3` 之间,请将鼠标光标置于行前并键入 `p`
输出示例: 输出示例:
``` ```
line1 line1
line2 line2
@ -172,54 +173,54 @@ ostechnix
line3 line3
line4 line4
line5 line5
``` ```
![][9] ![][9]
要保存当前文件中所做的更改,请键入: 要保存当前文件中所做的更改,请键入:
``` ```
ZZ ZZ
``` ```
再次提醒,是两个大写字母 ZZSHIFT + z 再次提醒,是两个大写字母 ZZ`SHIFT + z`)。
保存所有文件的更改并退出 vim 编辑器,键入: 保存所有文件的更改并退出 vim 编辑器,键入:
``` ```
:wq :wq
``` ```
同样,您可以将任何文件的任何行复制到其他文件中。 同样,您可以将任何文件的任何行复制到其他文件中。
**将整个文件内容复制到另一个文件中** ##### 将整个文件内容复制到另一个文件中
我们知道如何复制一行,那么整个文件的内容呢?也是可以的。比如说,您要将 file1.txt 的全部内容复制到 file2.txt 中。 我们知道如何复制一行,那么整个文件的内容呢?也是可以的。比如说,您要将 `file1.txt` 的全部内容复制到 `file2.txt` 中。
先打开 `file2.txt`
先打开 file2.txt
``` ```
$ vim file2.txt $ vim file2.txt
``` ```
如果文件已经加载,您可以通过输入以下命令切换到 file2.txt 如果文件已经加载,您可以通过输入以下命令切换到 `file2.txt`
``` ```
:buffer 2 :buffer 2
``` ```
将光标移动到您想要粘贴 file1.txt 内容的位置。我想在 file2.txt 的第 5 行之后粘贴 file1.txt 的内容,所以我将光标移动到第 5 行。然后,键入以下命令并按回车键: 将光标移动到您想要粘贴 `file1.txt` 的内容的位置。我想在 `file2.txt` 的第 5 行之后粘贴 `file1.txt` 的内容,所以我将光标移动到第 5 行。然后,键入以下命令并按回车键:
``` ```
:r file1.txt :r file1.txt
``` ```
![][10] ![][10]
这里,**r** 代表 **read** 这里,`r` 代表 “read”。
现在您会看到 `file1.txt` 的内容被粘贴在 `file2.txt` 的第 5 行之后。
现在您会看到 file1.txt 的内容被粘贴在 file2.txt 的第 5 行之后。
``` ```
line1 line1
line2 line2
@ -231,107 +232,103 @@ open source
technology technology
linux linux
unix unix
``` ```
![][11] ![][11]
要保存当前文件中的更改,请键入: 要保存当前文件中的更改,请键入:
``` ```
ZZ ZZ
``` ```
要保存所有文件的所有更改并退出 vim 编辑器,请输入: 要保存所有文件的所有更改并退出 vim 编辑器,请输入:
``` ```
:wq :wq
``` ```
#### 方法二 #### 方法二
另一种同时打开多个文件的方法是使用 **-o** 或 **-O** 标志。 另一种同时打开多个文件的方法是使用 `-o``-O` 标志。
要在水平窗口中打开多个文件,请运行: 要在水平窗口中打开多个文件,请运行:
``` ```
$ vim -o file1.txt file2.txt $ vim -o file1.txt file2.txt
``` ```
![][12] ![][12]
要在窗口之间切换,请按 **CTRL-w w**(即按 **CTRL + w** 并再次按 **w**)。或者,您可以使用以下快捷方式在窗口之间移动: 要在窗口之间切换,请按 `CTRL-w w`(即按 `CTRL + w` 并再次按 `w`)。或者,您可以使用以下快捷方式在窗口之间移动:
* **CTRL-w k** 上面的窗口
* **CTRL-w j** 下面的窗口
* `CTRL-w k` 上面的窗口
* `CTRL-w j` 下面的窗口
要在垂直窗口中打开多个文件,请运行: 要在垂直窗口中打开多个文件,请运行:
``` ```
$ vim -O file1.txt file2.txt file3.txt $ vim -O file1.txt file2.txt file3.txt
``` ```
![][13] ![][13]
要在窗口之间切换,请按 **CTRL-w w**(即按 **CTRL + w** 并再次按 **w**)。或者,使用以下快捷方式在窗口之间移动: 要在窗口之间切换,请按 `CTRL-w w`(即按 `CTRL + w` 并再次按 `w`)。或者,使用以下快捷方式在窗口之间移动:
* **CTRL-w l** 左面的窗口
* **CTRL-w h** 右面的窗口
* `CTRL-w l` 左面的窗口
* `CTRL-w h` 右面的窗口
其他的一切都与方法一的描述相同。 其他的一切都与方法一的描述相同。
例如,要列出当前加载的文件,请运行: 例如,要列出当前加载的文件,请运行:
``` ```
:buffers :buffers
``` ```
在文件之间切换: 在文件之间切换:
``` ```
:buffer 1 :buffer 1
``` ```
打开其他文件,请键入: 打开其他文件,请键入:
``` ```
:e file3.txt :e file3.txt
``` ```
将文件的全部内容复制到另一个文件中: 将文件的全部内容复制到另一个文件中:
``` ```
:r file1.txt :r file1.txt
``` ```
方法二的唯一区别是,只要您使用 **ZZ** 保存对当前文件的更改,文件将自动关闭。然后,您需要依次键入 **:wq ** 来关闭文件。但是,如果您按照方法一进行操作,输入 **:wq** 时,所有更改将保存在所有文件中,并且所有文件将立即关闭。 方法二的唯一区别是,只要您使用 `ZZ` 保存对当前文件的更改,文件将自动关闭。然后,您需要依次键入 `:wq` 来关闭文件。但是,如果您按照方法一进行操作,输入 `:wq` 时,所有更改将保存在所有文件中,并且所有文件将立即关闭。
有关更多详细信息,请参阅手册页。 有关更多详细信息,请参阅手册页。
``` ```
$ man vim $ man vim
``` ```
**建议阅读:** ### 建议阅读
您现在掌握了如何在 Linux 中使用 vim 编辑器编辑多个文件。正如您所见编辑多个文件并不难。Vim 编辑器还有更强大的功能。我们接下来会提供更多关于 Vim 编辑器的内容。 您现在掌握了如何在 Linux 中使用 vim 编辑器编辑多个文件。正如您所见编辑多个文件并不难。Vim 编辑器还有更强大的功能。我们接下来会提供更多关于 Vim 编辑器的内容。
再见! 再见!
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
via: https://www.ostechnix.com/how-to-edit-multiple-files-using-vim-editor/ via: https://www.ostechnix.com/how-to-edit-multiple-files-using-vim-editor/
作者:[SK][a] 作者:[SK][a]
译者:[jessie-pang](https://github.com/jessie-pang) 译者:[jessie-pang](https://github.com/jessie-pang)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出