- 复制
- 单行复制:在命令模式下,将光标移动到将要复制的行处,按“yy”进行复制;
- 多行复制:在命令模式下,将光标移动到将要复制的首行处,按“nyy”复制n行;其中n为要复制的行数。
- 粘贴
-
在命令模式下,将光标移动到将要粘贴的行处,按“p”进行粘贴;
-
小写【p】为将已经复制的数据在光标下一行粘贴;
-
大写【P】为将已经复制的数据在光标上一行粘贴;
- 删除
- 删除行【dd|ndd】:在命令模式下,按dd删除一行;按ndd删除以当前行开始的n行。
- 删除单词【dw】:在命令模式下,按dw删除单词/光标之后的单词(空格隔开算一个词)剩余部分,例如 test test;ndw 删除以当前字符开始的n个字。
- 删除一个字符【x】:在命令模式下,按x删除光标上的字符
- 删除一个剩余字符【d 】 : d 】:d 】:d 删除以当前字符开始的一行字符
- 替换
语法:[addr]s/源字符串/目的字符串/[option]
-
addr:表示检索范围,如:“1,n”:表示从第1行到n行;"%":表示整个文件,同"1, " ; " . , ";"., ";".,":表示从当前行到文件尾。
-
s:表示替换操作,其为substitute的缩写。
-
option:表示操作类型:【g:globe】表示全局替换;【c:confirm】表示进行确认;【p】表示替代结果逐行显示(Ctrl + L恢复屏幕);【i:ignore】不区分大小写;[option]省略时仅对每行第一个匹配串进行替换。
-
特殊字符处理:源字符串和目的字符串中出现特殊字符,如’/’,’<’,’>’,’,'等需要前面加反斜杠\进行转义。
示例:
- 当前行第一个a替换为b【😒/a/b/】;当前行的所有a替换为b【😒/a/b/g】
- 每行第一个a替换为b【:%s/a/b】; 整个文件的所有a替换为b【:%s/a/b/g】
- 1至3行的第一个a替换为b【:1,3s/a/b/】;1至3行的所有a替换为b【:1,3s/a/b/g】
- 使用#作为分隔符,此时中间出现的/不会作为分隔符:当前行的字符串"a/“替换为"b/”【😒#a/#b/#】
- 查找
-
向下查找【/value】: 在文件中查找内容为value的字符串。
-
向上查找【?value】:在文件中查找内容为value的字符串。
-
多个定位【n或N】:查找到多个,可通过n或N查看,查找下一个[n], 反向查找下一个[N]。
-
关闭高亮:命令模式下,输入:nohlsearch 也可以:set nohlsearch; 也可以noh或者set noh。
- 设置行号
在命令模式下,按冒号(:),输入set number ,并按回车键,完成后即显示行号。如果是编辑模式下,可以按Esc进入命令模式。
- 撤销
撤消上一个操作【u】 ; 多次撤消【[Ctrl] + r】;重复上一个操作【.】
- 缩进
- 单行缩进:插入模式下,ctrl+shift+d 减少缩进,ctrl+shift+t 增加缩进。
- 批量缩进:命令模式下,按下冒号【:】,格式:“行号1,行号2>”输入命令,回车增加缩进;格式:“行号1,行号2<”输入命令,回车减少缩进。如输入“1,10>”则1到10行缩进一个tab。
- 可视化模式缩进:命令模式下,将光标移到需要缩进的行的行首,然后按shift+v,可以看到该行已被选中,且左下角提示为“可视”,此时,按键盘上的上下左右方向键,如这里按向下的箭头,选中所有需要批量缩进的行,选择好了之后,按shift+>,是向前缩进一个tab值,按shift+<,则是缩回一个tab值。
- 跳转行
-
跳转到指定行:n+G(也就是n+shift+g),n只行数,如跳转到100行(100+G),也可以命令行输入“ : n ” 然后回车
-
跳转到第一行:gg (两个小写的G)
-
跳转到最后一行:shift+g (也就是G)
- 编辑
- 插入模式
【i】 从目前光标所在处插入
【I】 从目前光标
【a】 从当前光标所在的下一个字符处开始插入
【A】 从光标所在行的最后一个字符处开始插入
【o】 英文小写字母o,在目前光标所在行的下一行处插入新的一行并开始插入
【O】 英文大写字母O,在目前光标所在行的上一行处插入新的一行并开始插入
- 替换模式
【r】 只会替换光标所在的那一个字符一次
【R】 会一直替换光标所在字符,直到按下[ESC]键为止
【[ESC]】 退出编辑模式回到一般模式
- 保存模式
【:w】 保存文件
【:w!】 若文件为只读,强制保存文件
【:q】 离开vi
【:q!】 不保存强制离开vi
【:wq】 保存后离开
【:wq!】 强制保存后离开
- 设置模式
【:set nu】 显示行号
【:set nonu】 取消显示行号
【:w newfile】 另存为
【:set fileencoding】 查看当前文件编码格式
【:set fileencoding=utf-8】 设置当前文件编码格式为utf-8,也可以设置成其他编码格式
【:set fileformat】 查看当前文件的断行格式(dos\windows,unix或macintosh)
【:set fileformat=unix】 将当前文件的断行格式设置为unix格式
- 翻转
- 文本滚动
【PgUp】向上翻转一页
【PgDn】向下翻转一页
【Ctrl+F】向前滚动一屏
【Ctrl+B】向后滚动一屏
【Ctrl+D】向前滚动半屏(向下)
【Ctrl+U】向后滚动半屏(向上)
【Ctrl+E】向下滚动一行,保持当前光标不动
【Ctrl+Y】向上滚动一行,保持当前光标不动
- 当前行滚动
【Z+Enter 】当前行移动到屏幕顶部并滚动
【nZ+Enter】滚动指定行到屏幕顶部,n指行数,如: 10Z+Enter(指定第十行)
【Z + . 】当前行移动到屏幕中央并滚动
【Z + -】当前行移动到屏幕底部并滚动
- 当前屏幕操作
【H】大写h,移动到当前屏幕首行;nH移动到首行下的第n行
【M】大写m,移动到当前屏幕中间行
【L】大写l,移动到当前屏幕末行;nL移动到末行上面的第n行