# Linux文本编辑器

# Linux文本编辑器  

## 文本编辑器

Windows：Notepad（记事本）、Sublime、UltraEdit等

Linux：VI/VIM、nano、Emacs、Sed、gedit、Kate等  

## VI和VIM的区别

1. 功能和特性：VIM是对VI的改进和扩展，提供了更多的功能和特性。VIM支持语法高亮、多级撤销、多窗口编辑、代码补全、宏录制、插件支持等，并且具有更强大的定制性。
2. 兼容性：VI是一个最初于1970年代开发的编辑器，它是UNIX和Linux系统的默认文本编辑器之一。VIM是对VI的增强版本，它保持了VI的基本功能，并添加了许多新功能。几乎所有支持VI的操作也适用于VIM。
3. 模式：VI和VIM都有三种主要模式：命令模式（Command mode）、插入模式（Insert mode）和可视模式（Visual mode）。在命令模式下，可以执行各种编辑命令；在插入模式下，可以输入文本；在可视模式下，可以选择文本块进行编辑。
4. 使用界面：VIM在命令模式下提供了更多的快捷键和命令，这使得它的学习曲线较陡峭。但是，一旦熟悉了VIM的命令和快捷键，它可以显著提高编辑效率。

**VIM是对VI的改进和扩展**

## VIM配置文件

全局配置：`/etc/vimrc`

用户配置：`~/.vimrc  `

## VIM三种模式的关系

**命令模式：**通过命令操作文本文件

**编辑模式：**对文本的内容进行编辑

**底行模式：**结束操作的时候使用  

## VIM三种模式切换  

![](https://pic.imgdb.cn/item/64a636691ddac507cc46d583.jpg)

## 命令模式

### 打开文件

`VIM 文件名  `

例：

```
vim /etc/sysconfig/network-scripts/ifcfg-ens33 

vim redis.conf  
```

> 错误提示：
>
> `E325: ATTENTION``
>
> ``Found a swap file by the name ".redis.conf.swp"`
>
> 原因：编辑未结束
>
> 解决办法：保存文本文件，或者删除.swp

### 移动光标操作

| 操作           | 按键             |
| -------------- | ---------------- |
| 移动光标       | 方向键 `↑ ↓ ← →` |
| 跳到行首       | `HOME`           |
| 跳到行尾       | `END`            |
| 向后前进多少行 | `n（数字）`      |
| 退出前进一屏   | `Ctrl+F`         |
| 后退一屏       | `Ctrl+B`         |
| 跳到文档末尾   | `Shift+G `/` G`  |
| 跳到文档开头   | `:1 `/ `gg`      |

### 搜索替换操作

| 操作         | 按键            |
| ------------ | --------------- |
| 向后查找内容 | `/关键字`，回车 |
| 向前查找内容 | `?关键字`，回车 |
| 下一个关键字 | `n`             |
| 上一个关键字 | `N`             |

### 删除和复制操作

| 操作                 | 按键      |
| -------------------- | --------- |
| 复制光标所在行       | `yy`      |
| 粘贴到下一行/上一行  | `p`/`P`   |
| 删除光标前面一个字符 | `X`       |
| 删除光标后面1个字符  | `Del`/`x` |
| 删除一行             | `dd`      |
| 删除光标下面n行      | `ndd`     |
| 重复上一次的操作     | `.`       |
| 撤消最近一次操作     | `u`       |
| 恢复最近一次操作     | `Ctrl+R`  |

## 编辑模式

### 进入编辑模式、

- `a`：在光标下一个字符之前插入文本
- `A`：在光标所在的航模插入文本
- `i`：在光标上一个字符之前插入文本
- `I`：在光标的行首插入文本
- `o`：在光标所在的行下插入一行文本
- `O`：在光标所在的行上插入一行文本
- `r`：修改当前光标所在的字符
- `R`：替换文本

一般是用`i`进入编辑模式

### 撤消

编辑模式下：`Ctrl+U` 撤消

退出编辑模式：`Esc  `

## 底行模式

### 进入底行模式

在编辑模式下输入`:`进入底行模式、

| 操作                             | 按键                |
| -------------------------------- | ------------------- |
| 保存                             | `:w`                |
| 退出                             | `:q`                |
| 保存并退出                       | `:wq`               |
| 放弃修改，退出                   | `:q!`               |
| 放弃所有更改，重新编辑（不关闭） | `:e!`               |
| 显示行号                         | `:set nu`           |
| 把文档中的word1替换为word2       | `:%s/word1/word2/g` |


