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编辑器。