一、命令模式
vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc]键都可以返回命令模式。
(1) Home光标到行首,End 光标到行尾
(2) Page Up和Page Down上下翻页
(3) Delete删除光标位置的字符
(4) x 删除光标处的单个字符,#x 例如 3x 删除光标处向右的三个字符
(5) dd 删除光标所在行,#dd 例如 3dd 从当前行开始向下删除三行文本
(6) dw 删除当前字符到单词尾包括空格的所有字符
(7) yy 命令复制当前整行的内容到vi缓冲区,#yy 例如:5yy 就是复制5行, y5j (复制光标下面6行),5jP(跳到5行后再黏贴)
(8) yw 复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词,#yw 例如:2yw 就是复制两个单词
(9) y^ 复制光标所在位置到行尾内容到缓存区
(10) y$ 复制光标所在位置到行首内容到缓存区
(11) 将光标移动到要复制的文本开始的地方,按 v 进入可视模式,将光标移动到要复制的文本的结束的地方,按 y 复制。此时vim会自动将光标定位到选中文本的开始的地方,并退出可视模式, 我移动光标到文本结束的地方,按 p 粘贴。
二、输入模式
在命令模式中输入字幕“i”就可以进入vi的输入模式编辑文件。在这个模式中我们可以编辑、修改、输入等编辑工作,在编辑器最后一行显示一个“--INSERT--”标志着vi进入了输入模式。当我们完成修改输入等操作的时候我们需要保存文件,这时我们需要先返回命令模式,在进入末行模式保存。
三、末行模式
在命令模式输入“:”即可进入该模式,在末行模式中有好多好用的命令。
(1) 如果要复制第m行到第n行之间的内容,可以在末行模式中输入 m,ny 例如:3,5y复制第三行到第五行内容到缓存区。
(2) 替换,基本语法如下:
[addr]s/源字符串/目的字符串/[option]
全局替换的语法如下:
:%s/源字符串/目的字符串/g
其中[addr] 表示检索范围,省略时表示当前行
如:“1,20”:表示从第1行到20行
“%”:表示整个文件,同“1,$”
“. ,$”:从当前行到文件尾
s : 表示替换操作
[option] : 表示操作类型
g 表示全局替换
c 表示进行确认
p 表示替代结果逐行显示(Ctrl + L恢复屏幕)
省略option时仅对每行第一个匹配串进行替换,如果源字符串或目的字符串出现特殊字符,用”\”转义。
下面是替换示例:
a. 替换当前行的第一个符合old模式的字符串为new
:s/old/new/
b. 替换当前行所有符合old的字符串为new
:s/old/new/g
c. 替换所有行的第一个符合old模式的字符串为new
:%s/old/new/
d. 替换所有行所有符合old模式的字符串为new
:%s/old/new/g
e. 替换时再次确认替换
:%s/old/new/c
f. 模式替换
除了可以搜索常量字符串,vi编辑器还可以搜索可变的模式,即正则表达式
例如,删除所有空行
:g/^$/d
例如在每行的开始插入两个空白
:%s/^/ /g
四、其它
(1) 自上而下的查找 /,自下而上的查找 ?
(2) 使用鼠标拖动反选要粘贴的内容,按鼠标左键复制选定块到缓冲区,然后将光标移到要粘贴处,按鼠标中键(两键鼠标可同时按左右键),粘贴缓冲区内容
(3) 清空文件内容:首先使用gg调整光标到首行,然后使用dG命令即可