vi/vim
- vi和vim
- vi 命令模式
- vi 插入模式
- vi 底行模式
vi和vim
vi
和 vim
都是在 Linux 系统中的文本编辑器。vim
实际上是 vi
的增强版,提供了更多的功能和改进。
-
vi:
vi
是一个经典的文本编辑器,几乎在每个 Linux 发行版中都预装了。vi
的使用可以分为三个主要模式:命令模式(Command mode)、插入模式(Insert mode)和底行模式(Ex mode)。- 命令模式下可以执行文件编辑、搜索、复制粘贴等操作。
- 插入模式下可以直接输入和编辑文本内容。
- 底行模式用于保存文件、退出
vi
等高级操作。 - 例如,使用
vi filename
命令打开一个文件,在命令模式下按下 “i” 进入插入模式,进行文本编辑,然后按下 Esc 键回到命令模式,在命令模式下输入 “:wq” 并按回车键保存并退出。
-
vim:
vim
(Vi IMproved)是对vi
的增强版本,具有更多的功能和改进。vim
拥有vi
的所有功能,并添加了更多的功能和定制选项。vim
提供了语法高亮、多级撤销、分屏编辑、代码补全等功能,以及大量的插件和扩展性。- 与
vi
相比,vim
的学习曲线略高,但它为用户提供了更强大和灵活的编辑环境。 - 使用
vim
的基本操作与vi
类似,同时还有更多命令和选项可用。
vi 命令模式
在 vi 的命令模式下,常用的一些快捷键可以提高编辑效率。以下是几个常用的 vi 命令模式快捷键:
-
移动光标:
h
:将光标左移一个字符。j
:将光标下移一行。k
:将光标上移一行。l
:将光标右移一个字符。
-
文本编辑:
i
:在当前光标位置之前插入文本。a
:在当前光标位置之后插入文本。o
:在当前行之后插入新行,并进入插入模式。dd
:删除当前行。yy
:复制当前行。p
:粘贴已复制或删除的文本。
-
撤销和重做:
u
:撤销上一次操作。Ctrl + r
:重做被撤销的操作。
-
搜索与替换:
/keyword
:向后搜索指定关键字。?keyword
:向前搜索指定关键字。n
:跳到下一个匹配项。N
:跳到上一个匹配项。:s/old/new
:在当前行替换第一个匹配项。:s/old/new/g
:在当前行替换所有匹配项。:%s/old/new/g
:在整个文件中替换所有匹配项。
-
保存和退出:
:w
:保存文件但不退出 vi。:q
:退出 vi(仅在没有修改的情况下)。:wq
:保存文件并退出 vi。:q!
:强制退出 vi,丢弃所有修改。
vi 插入模式
在vi中,输入模式用于插入和编辑文本。以下是进入输入模式的方法:
-
插入模式:在光标位置之前插入文本。
i
:在当前光标位置之前开始插入文本。a
:在当前光标位置之后开始插入文本。I
:在当前行的第一个非空字符之前开始插入文本。A
:在当前行的末尾开始插入文本。
-
追加模式:在光标位置之后追加文本。
a
:在当前光标位置之后开始追加文本。A
:在当前行的末尾开始追加文本。
-
打开新行:
o
:在当前行之后插入新行,并进入插入模式。O
:在当前行之前插入新行,并进入插入模式。
-
替换模式:替换光标所在位置的字符。
r
:替换光标所在位置的字符。R
:一直处于替换模式,可以连续替换多个字符。
-
进入输入模式的其他方式:
s
:删除光标所在位置的字符并进入插入模式。S
:删除整行并进入插入模式。C
:删除从光标位置到行尾的内容并进入插入模式。
输入模式中可以进行文本编辑,并通过快捷键切换到命令模式或者执行保存退出等操作。要注意,在输入模式下,按下 Esc
键可以返回到命令模式。
vi 底行模式
Vi编辑器中的底行模式(Command-line Mode)用于执行一些命令和操作。在底行模式下,可以输入各种命令来执行编辑、搜索、保存和退出等操作。以下是一些常用的Vi底行模式命令:
-
保存和退出:
:w
:保存文件但不退出Vi。:wq
:保存文件并退出Vi。:x
或ZZ
:保存文件并退出Vi(只有在文件有修改的情况下才会保存)。:q
:退出Vi(如果有未保存的修改,则无法退出)。:q!
:强制退出Vi,放弃所有未保存的修改。
-
搜索和替换:
:/pattern
:向后搜索指定的Pattern。:?pattern
:向前搜索指定的Pattern。n
:跳到下一个匹配项。N
:跳到上一个匹配项。:s/old/new
:在当前行替换第一个匹配项。:s/old/new/g
:在当前行替换所有匹配项。:%s/old/new/g
:在全文中替换所有匹配项。
-
文本编辑命令:
:delete
或:d
:删除当前行。:copy
或:co
:复制当前行或指定范围的行。:move
或:m
:移动当前行或指定范围的行。:join
或:j
:合并当前行与下一行。
-
显示和设置行号:
:set number
或:set nu
:显示行号。:set nonumber
或:set nonu
:不显示行号。
-
执行外部命令:
:!command
:执行Shell命令,并返回Vi编辑器。