TranslateProject/published/202003/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md
2020-04-01 09:38:11 +08:00

138 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[#]: collector: (lujun9972)
[#]: translator: (mengxinayan)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-12053-1.html)
[#]: subject: (Basic Vim Commands You Need to Know to Work in Vim Editor)
[#]: via: (https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/)
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
必知必会的 Vim 编辑器基础命令
======
如果你是一名系统管理员或者开发者,当你在终端工作时有时会需要编辑一个文件。在 Linux 系统中有几种文件编辑器,你可以根据需求选择合适的文件编辑器。在这里,我想推荐 Vim 编辑器。
### 为什么推荐 Vim 编辑器
相对于创建新文件你更多是修改已经存在的文件。在这种情况下Vim 快捷键可以有效地满足你的需求。
下列文章可以帮助你了解对文件和目录的操作。
- [Linux 基础:对文件和目录进行操作的 Linux 和 Unix 命令][1]
- [在 Linux 中查看不同文件格式的 10 种方法][2]
### 什么是 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][a]
选题:[lujun9972][b]
译者:[萌新阿岩](https://github.com/mengxinayan)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.2daygeek.com/author/magesh/
[b]: https://github.com/lujun9972
[1]: https://www.2daygeek.com/linux-basic-commands-file-directory-manipulation/
[2]: https://www.2daygeek.com/unix-linux-command-to-view-file/