vi有三种模式:
注意:以下的模式切换案件都要是英文的,中文的是不生效的
vi打开文件之后,默认就是在一般指令模式。
常用操作:
| 按键 | 操作 |
|---|---|
| h、⬅ | 向左移动光标 |
| j、⬇ | 向下移动光标 |
| k、⬆ | 向上移动光标 |
| l、→ | 向右移动光标 |
| 数字k | 向上移动指定数字行数,其他方向依次类推 |
| ctrl + f | 向下翻页 |
| ctrl + b | 向上翻页 |
| ctrl + d | 向下移动半页 |
| ctrl + u | 向上移动半页 |
| + | 移动到非空白字符的下一行 |
| - | 移动到非空白字符的上一行 |
| 0 | 移动到这一行最开始 |
| $ | 移动到这一列最后 |
| G | 移动到文档最后 |
| gg | 移动到文档最开始 |
| n | 向下移动n 行 |
| 按键 | 操作 |
|---|---|
| /word | 在文档中查找光标之下的word 字符串 |
| n | 查找下一个word |
| N | 查找上一个word |
| :1,$s/word1/word2/g | 从文档开始到结尾,将word1 替换为 word2 |
| :1,$s/word1/word2/gc | 从文档开始到结尾,将word1 替换为 word2 ,替换时候需要用户确认 |
| :n1,n2s/word1/word2/g | 在文档n1 到 n2 行中,将 word1 替换为 word2 |
| 按键 | 操作 |
|---|---|
| x | 删除一行中的后一个字符 |
| X | 删除一行中的前一个字符 |
| nx | n为数字,表示连续向后删除n个字符,例如:向后删除10个字符:10x |
| dd | 删除光标所在一整行 |
| ndd | 删除光标所在的向下n 行,例如要删除20行:20dd |
| d1G | 删除光标所在行所有的数据 |
| dG | 删除光标所在行到最后的数据 |
| d$ | 删除该行中光标所在位置之后的所有字符 |
| d0 | 删除改行中光标所在位置之前的所有字符 |
| yy | 赋值光标所在行的内容 |
| nyy | 从所在行开始,向下复制n行,例如复制之后20列:20yy |
| y1G | 复制当前行以及之前的所有内容 |
| yG | 复制当前行到最后的所有内容 |
| y0 | 复制光标当前位置到行首的所有内容 |
| y$ | 复制光标所在位置到行尾的所有内容 |
| p | 向下粘贴复制内容 |
| P | 向上粘贴复制内容 |
| u | 撤销;复原上一个动作 |
| ctrl + r | 反撤销 |
| .(点) | 重复上一个动作 |
| 按键 | 操作 |
|---|---|
| i | 在光标当前位置开始编辑 |
| I | 在光标所在行第一个非空白字符编辑 |
| a | 在光标所在位置下一个字符进行编辑 |
| A | 从光标所在行最后一个字符开始编辑 |
| o | 在光标所在行下一行插入一行开始编辑 |
| O | 在光标所在行上一行插入一行开始编辑 |
| r | 替换光标所在位置的一个字符 |
| R | 一直替换光标所在位置的字符,直到按下esc 为止 |
| esc | 退出编辑模式,返回到一般指令模式 |
在一般指令模式下按下:i,o,a 等可以进入编辑模式,在编辑模式下可以编辑文本,在编辑模式下,左下角会有 -- INSERT -- 字样。
按esc 键返回一般命令模式,左下角的 -- INSERT -- 也会消失
编辑模式,就是在文本里输入内容呀!
命令行模式主要针对文件进行一些指令操作,比如:保存(w),退出(q)
在一般指令模式 下按下 : 就可以进入命令行模式了。在命令行模式下可以输入一些指令。
| 指令 | 作用 |
|---|---|
| :w | 将编辑的内容保存到硬盘中 |
| :w! | 强制写入 |
| :q | 退出 |
| :q! | 不保存退出 |
| :wq | 保存并推出 |
| :ZZ | 若灭有改动,则不保存退出,若改动了则保存退出 |
| :w filename | 将文件另存为filename |
| :r filename | 将filename 的内容读取到当前位置 |
| :n1,n2 w filename | 将n1 到 n2 行的内容写入到filename 文件中 |
| :! command | 暂时离开vi 到命令行下执行command 命令的显示结果 |
| set nu | 显示行号 |
| set nonu | 不显示行号 |