目录
一、三种模式
1) 命令模式
按下Esc
键进入。
从键盘上输入的任何字符都被当做编辑命令来解释。
2) 文本输入模式
在命令模式下输入插入命令i
、附加命令a
、打开命令o
、修改命令c
、取代命令r
或替换命令s
都可以进入。
3) 末行模式
末行模式也称 ex 转义模式。
输入末行模式的说明符’:‘进入。
末行命令执行完后,vi 自动回到命令模式。
二、基本命令
1.进入
(1)在terminal输入vi filename进入(或创建) //可直接输入vi进入
vi filename
(2)如果希望在进入 vi 之后光标处于文件最末行
vi + test.c
(3)vi 编辑器支持模式匹配。指定模式串后,光标处于文件中第一个与指定模式串相匹配的那行上。
vi +/模式字符串 文件名
2.文本修改
(1)插入文本命令:i 和 I
i 命令将文本插入到光标所在位置前。
I 命令将文本插入当前行的行首。当输入 I 命令后,光标自动移到该行的行首。
(2)追加文本命令:a 和 A
a 命令将新文本追加到光标当前所在位置之后。
A 命令将新文本追加到所在行的行尾。当输入 A 命令后,光标自动移到该行的行尾。
(3)空行插入命令:o 和 O
o 命令将在光标所在行的下面插入一个空行,并将光标置于该行的行首。
O 命令将在光标所在行的上面插入一个空行,并将光标置于该行的行首。
3.文本删除
1.命令模式下常用的文本删除命令
(1)删除单个字符
- x 命令:删除光标处的字符。若在 x 之前加上一个数字 n,则删除从光标所在位置开始向右的 n 个字符。
- X 命令:删除光标前面的字符。若在 X 之前加上一个数字 n,则删除从光标前面那个字符开始向左的 n 个字符。
(2)删除多个字符
- dd 命令:该命令删除光标所在的整行。在 dd 前可加上一个数字 n,表示删除当前行及其后 n-1 行的内容。
- D 命令或 d$ 命令:删除从光标所在处开始到行尾的内容。
- d0 命令:该命令删除从光标前一个字符开始到行首的内容。
- dw 命令:该命令删除一个单词。若光标处在某个词的中间,则从光标所在位置开始删至词尾。在 dw 之前加一个数字n,表示删除 n 个指定的单词。
- d( 命令:该命令删除到上一句开始的所有字符。
- d) 命令:该命令删除到下一句开始的所有字符。
- d} 命令:该命令删除到上一段开始的所有字符。
- d{ 命令:该命令删除到下一段开始的所有字符。
- d<CR> 命令:该命令(<CR>表示回车)删除包括当前行在内的两行字符。
4.文本复制
- yy 命令:复制光标所在的整行。在 yy 前可加一个数字 n,表示复制当前行及其后 n-1 行的内容。
- Y 或 y$ 命令:复制从光标所在处开始到行尾的内容。
- yw 命令:复制一个单词。若光标处在某个词的中间,则从光标所在位置开始复制至词尾。在 yw 之前加一个数字 n,表示复制 n 个指定的单词。
- y) 命令:复制到下一句幵始的所有字符。
- y} 命令:复制到下一段开始的所有字符。
- y<CR> 命令(<CR> 表示回车):复制包括当前行在内的两行内容。
1. 文本粘贴命令
- p 命令:粘贴命令,粘贴当前缓冲区中的内容。
2. 文本选择命令
- v 命令:在命令模式下进行文本选择。在需要选择的文本的起始处按下 v 键进入块选择模式,然后移动光标到块尾处。这之间的部分被高亮显示,表示被选中。
- V 命令:在命令模式下按行进行文本选择。在需要选择的文本的第一行按下 V 键,然后移动光标到块的最后一行。这之间的所有行被高亮显示,表示被选中。
5.撤销
- u 命令:该命令撤销上一次所做的操作。
- U 命令:该命令会一次性撤销自上次移动到当前行以来做过的所有操作,再使用一次 U 命令则撤销之前的 U 命令所做的操作,恢复被撤销的内容。
6.重复
.
7.退出
(1):q
如果退出时当前编辑文件尚未保存,则 vi 并不退出,而是继续等待用户的命令,并且会在显示窗口的最末行说明如下信息:
No write since last change (use! to overrides)
当用户不清楚自己当前编译的文件是否被修改时,可以使用该命令进行测试,而不必担心因为误操作导致文件数据丢失。
(2):q!
强行退出。
(3):w 新文件名
vi 保存当前编辑文件,但并不退出,而是继续等待用户输入命令。
(4):w! 新文件名
说明:该命令与:w
命令相同,所不同的是,即使指定的新文件存在,vi 编辑器也会用当前编辑文件对其进行替换,而不再询问用户。
(5):wq
vi 将先保存文件,然后退出 vi 返回到 shell。如果当前文件尚未取名,则需要现指定一个文件名。