1 打开和新建文件
- 在终端输入
vi文件名 即可
$ vi 文件名
1.1 打开文件并定位行
$ vi 文件名 +行数
1.2 删除交换文件 文件名.swp
- 当vim 异常退出时,磁盘上可能会出现隐藏的交换文件
- 下次使用vim打开会有一个E325错误
- 按照提示按下键盘,D代表删除交换文件,注意先切换到英文输入法
2 vim 三种编辑模式
1)命令模式: 输入i进入编辑模式,输入:进入末行模式
2)编辑模式: 按下ESC进入命令模式
3)末行模式: 按下ESC进入命令模式
末端命令:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | :w | write | 保存 |
| 02 | :q | quit | 退出,如果没有保存,不允许退出 |
| 03 | :q! | quit | 强行退出,不保存退出 |
| 04 | :wq | write & quit | 保存并退出 |
| 05 | :x | 退出并保存 | |
| 06 | :%s///gc | 确认搜索并替换 |
行内移动:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | w | word | 向后移动一个单词 |
| 02 | b | back | 向后移动一个单词 |
| 03 | 0 | 行首 | |
| 04 | ^ | 行首,第一个不是空白字符的位置 | |
| 05 | $ | 行尾 |
行数移动:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | gg | go | 文件顶部 |
| 02 | G | go | 文件尾部 |
| 03 | 数字gg | go | 移动到数字对应的行数 |
| 04 | 数字G | go | 移动到数字对应的行数 |
| 05 | :数字 | 移动到数字对应的行数 |
屏幕移动:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | Ctrl + b | back | 向上翻一页 |
| 02 | Ctrl + f | forward | 向下翻一页 |
| 03 | H | Head | 屏幕顶部 |
| 04 | M | Midle | 屏幕中间 |
| 05 | L | Low | 屏幕底部 |
段落移动:
| 序号 | 命令 | 功能 |
|---|---|---|
| 01 | { | 上一段 |
| 02 | } | 下一段 |
括号切换:
包括() [] {}等
| 序号 | 命令 | 功能 |
|---|---|---|
| 01 | % | 括号匹配及切换 |
标记:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | mx | mark | 添加标记x x是a~ z或者A~ Z之间任意字母 |
| 02 | 'x | 直接定位(光标回到)到标记x所在位置 |
选中文本命令(可视模式):
| 序号 | 命令 | 模式 | 功能 |
|---|---|---|---|
| 01 | v | 可视模式 | 从光标的位置开始按照正常模式选择文本 |
| 02 | V | 可视行模式 | 选中光标经过的完整行 |
| 03 | Ctrl + v | 可视块模式 | 垂直方向选中文本 |
撤销和恢复撤销:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | u | undo | 撤销上次命令 |
| 02 | CRRL + r | redo | 恢复撤销的命令 |
删除命令:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | x | cut | 删除光标所在字符,或者选中文字 |
| 02 | d | delete | 删除移动命令对应的内容 |
| 03 | dd | delete | 删除光标所在行,可以ndd复制多行 |
| 04 | D | delete | 删除至行尾 |
dw #从光标位置删除到单词末尾
d0 #从光标的位置删除到一行的开始
d} #从光标位置删除到段落结尾
ndd #从光标位置向下删除n行
d代码行G #从光标位置删除到 指定代码行之间的所以代码
d'a #从光标所在行删除到标记a之间的所有代码
复制粘贴:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | y(移动命名) | copy | 复制 |
| 02 | yy | copy | 复制一行,nyy复制多行 |
| 03 | p | paste | 粘贴 |
替换:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | r | replace | 替换当前字符 |
| 02 | R | replace | 替换当前行光标后的字符 |
-
R命令可以进入 替换模式,替换完成后,按下ESC可以回到命令模式 - 替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改
缩排和重复执行,查找:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | >> | 向右增加缩进 | |
| 02 | << | 向左减少缩进 | |
| 03 | . | 重复上次命令 | |
| 04 | /str | check | 查找str n查找下一个 N查找上一个 |
单词快速匹配:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | * | 向后查找当前光标所在单词 | |
| 02 | # | 向前查找当前光标所在单词 |
- 在开发中,通过单词快速匹配,可以快速看到这个单词在其他位置使用过。
查找并替换:
命令:
:%s///g
全局替换::%s/旧文本/新文本/g
可视区域替换::s/旧文本/新文本/g
确认替换::s/旧文本/新文本/gc
1 y-yes 替换
2 n-no 不替换
3 a-all替换所以
4 q-quit退出替换
5 l-last 最后一个,并把光标移动到行首
6 ^E 向下滚动
7 ^Y向上滚动
插入命令:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | i | insert | 在当前字符插入文本 |
| 02 | I | insert | 在行首插入文本 |
| 03 | a | append | 在当前字符后添加文本 |
| 04 | A | append | 在行末添加文本 |
| 05 | o | 在当前行后插入一空行 | |
| 06 | O | 在当前行前面插入一空行 |
末行命令扩展:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | :e . | edit | 会打开内置的文件浏览器,浏览当前目录下的文件 |
| 02 | :n | new | 新建文件 |
| 03 | :w 文件名 | write | 另存为,但是仍然编辑当前文件,并不会切换文件 |
分屏命令:
| 序号 | 命令 | 英文 | 功能 |
|---|---|---|---|
| 01 | :sp [文件名] | split | 横向增加分屏 |
| 02 | :vsp [文件名] | vertical split | 纵向增加分屏 |
| 03 | w | window | 切换到下一个窗口 |
| 04 | r | reverse | 互换窗口 |
| 05 | c | close | 关闭当前窗口,但是不能关闭最后一个窗口 |
| 06 | q | quit | 退出当前窗口,如果是最后一个窗口,则关闭vi |
| 07 | o | other | 关闭其他窗口 |