目录
vi编辑器和vim编辑器
Linux中的vi和vim都是文本编辑器,它们在Linux和Unix系统中广泛使用。尽管它们在某些方面相似,但也存在一些关键的区别。
vi编辑器
- 基本概述:vi是Unix和Linux下的标准文本编辑器,最早由比尔·乌尔曼(Bill Joy)于1976年开发。它以其高效的键盘快捷键而闻名,并在大多数Unix和Linux系统上内置。
- 模式:vi编辑器主要支持三种模式:
- 命令模式(Command mode):用于执行大多数编辑命令,如移动光标、删除字符等。
- 插入模式(Insert mode):在该模式下,用户可以输入文本。
- 末行模式(Last line mode):也称为指令列命令模式,用于执行文件保存、退出编辑器以及搜索和替换等操作。
vim编辑器
- 基本概述:vim是vi的增强版本,由布莱姆·米特尔斯(Bram Moolenaar)于1991年开发。vim在保留vi基本功能的基础上,添加了许多新特性,如多级撤销、语法高亮、自动缩进、宏录制、拼写检查、插件支持等。
- 模式:vim在vi的基础上增加了一个模式,共支持四种模式:
- 正常模式(Normal mode):类似于vi的命令模式,用于执行大多数编辑命令。
- 插入模式(Insert mode):用于输入文本。
- 命令模式(Command-line mode):类似于vi的末行模式,但提供了更丰富的命令选项。
- 可视模式(Visual mode):允许用户以可视化的方式选择文本块,方便进行复制、粘贴等操作。
vi和vim编辑器的区别
- 撤销功能:在vi中,按
u
只能撤销上一次的命令;而在vim中,可以无限制地撤销之前的命令。 - 操作系统兼容性:vi只能运行在Unix系统上;而vim不仅可以运行在Unix系统上,还可以运行在Linux、Windows、macOS等多个操作平台上。
- 功能特性:vim相比vi增加了许多新特性,如语法高亮、自动缩进、宏录制等,使得vim在编程和文本编辑方面更加强大和灵活。
- 模式支持:vim在vi的基础上增加了一个可视模式,使得文本编辑更加直观和方便。
vim编辑器的三种模式
普通模式(Normal mode)
进入vim后默认处于普通模式,该模式下可以进行光标移动、复制、粘贴、删除等操作。
命令 | 描述 |
---|---|
h | 向左移动光标一个字符 |
j | 向下移动光标一行 |
k | 向上移动光标一行 |
l | 向右移动光标一个字符 |
w | 向前移动到下一个单词的开头 |
b | 向后移动到上一个单词的开头 |
e | 向前移动到下一个单词的末尾 |
0 | 移动到当前行的开头 |
^ | 移动到当前行的第一个非空白字符 |
$ | 移动到当前行的末尾 |
H | 将光标移动到屏幕的第一行 |
M | 将光标移动到屏幕的中间一行 |
L | 将光标移动到屏幕的最后一行 |
gg | 将光标移动到文件的第一行 |
G | 将光标移动到文件的最后一行 |
nG | 将光标移动到文件的第n行 |
Ctrl + f | 向下翻页 |
Ctrl + b | 向上翻页 |
Ctrl + d | 向下翻半页 |
Ctrl + u | 向上翻半页 |
yy | 复制当前行 |
p | 粘贴到光标后的位置 |
P | 粘贴到光标前的位置 |
dd | 删除当前行 |
dw | 删除从光标位置到单词末尾的内容 |
diw | 删除光标所在的整个单词 |
u | 撤销上一步操作 |
Ctrl + r | 重做撤销的操作 |
v | 进入可视模式,选择文本 |
V | 进入可视行模式,选择整行文本 |
Ctrl + v | 进入可视块模式,选择矩形块文本 |
: | 进入命令行模式,可以输入ex命令 |
/pattern | 向下搜索包含pattern的文本 |
?pattern | 向上搜索包含pattern的文本 |
n | 重复上一次的搜索操作 |
N | 反向重复上一次的搜索操作 |
插入模式(Insert mode)
在普通模式下,按i
、a
、o
等键可以进入插入模式,此时可以输入文本。
在Linux中,vim编辑器的插入模式(Insert Mode)是用户输入文本的主要模式。在插入模式下,用户可以直接在文档中插入或编辑文本。然而,需要注意的是,插入模式本身并不直接包含大量的“命令”,因为其主要功能就是允许用户输入文本。不过,在插入模式下,用户仍然可以使用一些快捷键来进行一些特定的操作,比如移动光标、删除字符等。但严格来说,这些操作更多地与文本编辑技巧相关,而非插入模式特有的命令。
命令 | 描述 |
---|---|
Esc | 退出插入模式,返回普通模式 |
Ctrl + [ | 与Esc 相同,退出插入模式 |
Ctrl + h | 删除光标前的一个字符(相当于Backspace键) |
Ctrl + w | 删除光标前的一个单词 |
Ctrl + u | 删除从光标位置到行首的所有字符 |
Ctrl + f | 在插入模式下向前移动光标一个字符(但通常不推荐在插入模式中使用此快捷键进行光标移动) |
Ctrl + b | 在插入模式下向后移动光标一个字符(同样,通常不推荐在插入模式中使用) |
Ctrl + n 和 Ctrl + p | 在某些配置下,这些快捷键可能用于自动补全,但它们不是vim的默认行为,而是取决于具体的vim配置或插件 |
命令行模式(Command-line mode)
在Linux中,vim编辑器的命令行模式(也称为Ex模式或底行模式)是用户输入命令来执行各种编辑任务的模式。在这个模式下,用户可以执行诸如保存文件、退出编辑器、搜索文本、替换文本等操作。
命令 | 描述 |
---|---|
:w | 保存当前文件 |
:wq 或 :x | 保存当前文件并退出vim |
:q | 退出vim(如果文件未修改) |
:q! | 强制退出vim,不保存任何更改 |
:e <文件名> | 打开或编辑指定文件 |
:w <文件名> | 将当前文件内容保存到指定文件中 |
:set nu | 显示行号 |
:set nonu | 隐藏行号 |
:set ic | 搜索时忽略大小写 |
:set noic | 搜索时区分大小写 |
:/<搜索词> | 从当前位置向下搜索指定的搜索词 |
:?<搜索词> | 从当前位置向上搜索指定的搜索词 |
:n | 跳转到下一个搜索结果 |
:N | 跳转到上一个搜索结果 |
:%s/<原字符串>/<新字符串>/g | 在整个文件中替换所有匹配的<原字符串>为<新字符串> |
:s/<原字符串>/<新字符串>/g | 在当前行中替换所有匹配的<原字符串>为<新字符串> |
:range s/<原字符串>/<新字符串>/g | 在指定范围内替换匹配的<原字符串>为<新字符串>,例如:1,10s/old/new/g 将在第1到第10行中进行替换 |
:vsp <文件名> | 水平分割窗口并打开指定文件 |
:sp <文件名> | 垂直分割窗口并打开指定文件 |
:next 或 :n | 跳转到下一个文件(在多文件编辑时) |
:prev 或 :N | 跳转到上一个文件(在多文件编辑时) |
:args | 列出当前会话中打开的所有文件 |
:first | 跳转到列表中的第一个文件 |
:last | 跳转到列表中的最后一个文件 |