# 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` |