必知必会的 Vim 编辑器基础命令
在 Linux 系统中有几种文件编辑器，你可以根据需求选择合适的文件编辑器。在这里，我想推荐 Vim 编辑器。
Vim Vi
在 Linux 系统中有几种文件编辑器，你可以根据需求选择合适的文件编辑器。在这里，我想推荐 Vim 编辑器。
![](/data/attachment/album/202003/30/120649imd4c3y0nyn0fzmf.jpg)


如果你是一名系统管理员或者开发者，当你在终端工作时有时会需要编辑一个文件。在 Linux 系统中有几种文件编辑器，你可以根据需求选择合适的文件编辑器。在这里，我想推荐 Vim 编辑器。


### 为什么推荐 Vim 编辑器


相对于创建新文件，你更多是修改已经存在的文件。在这种情况下，Vim 快捷键可以有效地满足你的需求。


下列文章可以帮助你了解对文件和目录的操作。


* [Linux 基础：对文件和目录进行操作的 Linux 和 Unix 命令](https://www.2daygeek.com/linux-basic-commands-file-directory-manipulation/)
* [在 Linux 中查看不同文件格式的 10 种方法](https://www.2daygeek.com/unix-linux-command-to-view-file/)


### 什么是 Vim


Vim 是被 Linux 管理员和开发者广泛使用的最流行和功能强大的编辑器之一。它可以通过高度的自定义配置来提高文本编辑效率。它是在众多 Unix 默认安装的 Vi 编辑器的升级版。


Vim 通常被称为“程序员的编辑器”，但并不限于此，它也可用于编辑任何类型的文件。它具有许多功能，例如：多次撤销、多窗口和缓冲区、语法高亮、命令行编辑、文件名补全、可视选择等等。你可以使用 `:help` 命令来获取在线帮助。


### 理解 Vim 的模式


Vim 有两种模式，详细介绍如下：


**命令模式：** 当启动 Vim 编辑器后，默认处在命令模式下。你可以在文件中移动并且修改内容，剪切、复制和粘贴文件的一部分，同时发出命令执行更多操作（按 `ESC` 键进入命令模式）


**插入模式：** 插入模式用于在给定的文档位置插入文本（按 `i` 键进入插入模式）


### 我如何知道我正使用哪种 Vim 模式呢？


如果你正在使用插入模式，你会在编辑器的底部看到 `INSERT`。如果编辑器底部没有显示任何内容，或者在编辑器底部显示了文件名，则处于 “命令模式”。


### 命令模式下的光标移动


Vim 快捷键允许你使用不同的方式来移动光标：


* `G` – 跳转到文件最后一行
* `gg` – 跳转到文件首行
* `$` – 跳转到行末尾
* `0`（数字 0） – 跳转到行开头
* `w` – 跳转到下一个单词的开始（单词的分隔符可以是空格或其他符号）
* `W` – 跳转到下一个单词的开始（单词的分隔符只能是空格）
* `b` – 跳转到下一个单词的末尾（单词的分隔符可以是空格或其他符号）
* `B` – 跳转到下一个单词的末尾（单词的分隔符只能是空格）
* `PgDn` 键 – 向下移动一页
* `PgUp` 键 – 向上移动一页
* `Ctrl+d` – 向下移动半页
* `Ctrl+u` – 向上移动半页


### 插入模式：插入文字


下面的 Vim 快捷键允许你根据需要在光标的不同位置插入内容。


* `i` – 在光标之前插入
* `a` – 在光标之后插入
* `I` – 在光标所在行的开头插入。当光标位于行中间时，这个键很有用
* `A` – 在光标所在行的末尾插入。
* `o` – 在光标所在行的下面插入新行
* `O` – 在光标所在行的上面插入新行
* `ea` – 在单词的末尾插入


### 拷贝、粘贴和删除一行


* `yy` – 复制一行
* `p` / `P` – 将内容粘贴到光标之后 / 之前
* `dd` – 删除一行
* `dw` – 删除一个单词


### 在 Vim 中搜索和替换匹配的模式


* `/模式` – 向后搜索给定的模式
* `?模式` – 向前搜索给定的模式
* `n` – 向后重复搜索之前给定的模式
* `N` – 向前重复搜索之前给定的模式
* `:%s/旧模式/新模式/g` – 将文件中所有的旧模式替换为新模式
* `:s/旧模式/新模式/g` – 将当前行中所有的旧模式替换为新模式
* `:%s/旧模式/新模式/gc` – 逐个询问是否文件中的旧模式替换为新模式


### 如何在 Vim 编辑器中跳转到特定行


你可以根据需求以两种方式达到该目的，如果你不知道行号，建议采用第一种方法。


通过打开文件并运行下面的命令来显示行号



```
:set number
```

当你设置好显示行号后，按 `:n` 跳转到相应的行号。例如，如果你想跳转到第 15 行，请输入：



```
:15
```

如果你已经知道行号，请使用以下方法在打开文件时直接跳转到相应行。例如，如果在打开文件时直接跳转到 20 行，请输入下面的命令：



```
$ vim +20 [文件名]
```

### 撤销操作/恢复上一次操作/重复上一次操作


* `u` – 撤销更改
* `Ctrl+r` – 恢复更改
* `.` – 重复上一条命令


### 保存和退出 Vim


* `:w` – 保存更改但不退出 vim
* `:wq` – 写并退出
* `:q!` – 强制退出




---


via: <https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/>


作者：[Magesh Maruthamuthu](https://www.2daygeek.com/author/magesh/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[萌新阿岩](https://github.com/mengxinayan) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

