Vim
Roc Yan...约 1422 字大约 5 分钟LinuxLinuxVim
Vim
vim 是一个全屏幕纯文本编辑器,是 vi 编辑器的增强版
一、vim 的工作模式

- 命令模式:是主要使用快捷键的模式,命令模式想要进入输入模式,可以使用以下的方式
| 命令 | 作用 |
|---|
| a | 在光标所在字符后插入 |
| A | 在光标所在行行尾插入 |
| i | 在光标所在字符前插入 |
| I | 在光标所在行行首插入 |
| o | 在光标下插入新行 |
| O | 在光标上插入新行 |
| s | 删除当前光标所在字符并进入插入模式 |
| S | 删除光标所在行并进入模式 |
| c5 | 删除5个字符,并进入插入模式 |
| C | 删除光标所在位置至行尾的字符,并进入插入模式 |
| 命令 | 作用 |
|---|
| :q | 退出 Vim,如果文件已被修改,将退出失败 |
| :w | 保存文件 |
| :w 新文件名(绝对路径) | 把文件另存为新文件 |
| :wq | 保存文件并退出 Vim |
| :q! | 强制不保存退出 |
| :wq! | 强制保存退出,当文件的所有者或者root用户,对文件没有写权限的时候,强制写入数据使用 |
| ZZ | 退出 Vim,如果文件被改动过,保存改动内容 |
| ZQ | 与 :q! 相同,退出 Vim,不保存文件改动 |
二、命令模式&操作模式
2.1 移动光标
| 命令 | 作用 |
|---|
| h/j(ctrl+n)/k(ctrl+p)/l | 左/下/上/右 |
| 0(数字0) | 移动光标到本行开头 |
| ^ | 移动光标到本行第一个非空字符处 |
| $ | 移动光标到行尾 |
| w | 向前移动一个词 (上一个字母和数字组成的词之后) |
| W | 向前移动一个词 (以空格分隔的词) |
| 5w | 向前移动五个词 |
| b | 向后移动一个词 (下一个字母和数字组成的词之前) |
| B | 向后移动一个词 (以空格分隔的词) |
| 5B | 向后移动五个词 |
| gg | 移动至文件开头 |
| G | 移动至文件末尾 |
| :5 | 移动到第5行 |
| ( | 跳转到上一句 |
| ) | 跳转到下一句 |
| { | 跳转到上一段 |
| } | 跳转到下一段 |
| [[ | 跳转到上一部分 |
| ]] | 跳转到下一部分 |
| [] | 跳转到上一部分的末尾 |
| ][ | 跳转到上一部分的开头 |
2.2 删除或剪切
| 命令 | 作用 |
|---|
| x | 剪切/删除单个字母 |
| nx | 剪切/删除n个字母 |
| dd | 剪切/删除单行 |
| 5dd | 剪切/删除5行 |
| dw | 剪切/删除一个单词 |
| dgg | 剪切/删除至文件开头 |
| dG | 剪切/删除至文件结尾 |
| :3,5d | 删除第3行到第5行的内容 |
2.3 复制粘贴
| 命令 | 作用 |
|---|
| yy | 复制单行 |
| 5yy | 复制5行 |
| p | 粘贴到光标后 |
| P(大) | 粘贴到光标前 |
2.4 撤销
2.5 替换和查找
| 命令 | 作用 |
|---|
| r | 替换光标所在处的字符 |
| R | 从光标所在处开始替换字符,按ESC结束 |
| /查找内容 | 从光标所在行向下查找 |
| ?查找内容 | 从光标所在行向上搜索 |
| n | 下一个 |
| N | 上一个 |
| :1,10s/old/new/g | 替换1到10行的所有old为new |
| :%s/old/new/g | 替换整个文件的old为new |
| :%s/old/new/gc | 替换整个文件的old为new,并在替换前先询问是否替换 |
2.6 特殊插入
| 命令 | 作用 |
|---|
| :r 文件名(绝对路径) | 把文件内容导入光标位置 |
| :r !命令 | 在vim中执行 系统命令 ,并把命令结果导入光标 |
2.7 缩进
| 命令 | 作用 |
|---|
| >> | 增加一级缩进 |
| << | 减少一级缩进 |
| == | 取消所有缩进 |
| gg=G | 全部格式化 |
| :3,5> | 第3行到第5行增加一级缩进 |
| :3,5< | 第3行到第5行减少一级缩进 |
| :3,5= | 格式化第3行到第5行 |
2.8 vim 配置文件
配置文件地址 ~/.vimrc,详细配置参考阮一峰老师的 Vim 配置入门open in new window
2.9 其他

三、NERDTree插件快捷键
3.1 切换工作台和目录
| 命令 | 作用 |
|---|
| ctrl + w + h | 光标 focus 左侧树形目录 |
| ctrl + w + l | 光标 focus 右侧文件显示窗口 |
| ctrl + w + w | 光标自动在左右侧窗口切换 |
| ctrl + w + r | 移动当前窗口的布局位置 |
| o | 在已有窗口中打开文件、目录或书签,并跳到该窗口 |
| go | 在已有窗口中打开文件、目录或书签,但不跳到该窗口 |
| t | 在新 Tab 中打开选中文件/书签,并跳到新 Tab |
| T | 在新 Tab 中打开选中文件/书签,但不跳到新 Tab |
| i | 横向split 一个新窗口打开选中文件,并跳到该窗口 |
| gi | 横向split 一个新窗口打开选中文件,但不跳到该窗口 |
| s | 纵向split 一个新窗口打开选中文件,并跳到该窗口 |
| gs | 纵向split 一个新 窗口打开选中文件,但不跳到该窗口 |
| o | 打开选中的结点下 |
| O | 递归打开选中的结点下的所有目录 |
| x | 合拢选中结点的父目录 |
| X | 递归合拢选中结点下的所有目录 |
| I | 切换是否显示隐藏文件 |
| r | 递归刷新选中目录 |
| R | 递归刷新根结点 |
3.2 切换标签页
| 命令 | 作用 |
|---|
| :tabc | 关闭当前的 tab |
| :tabo | 关闭所有其他的 tab |
| :tabs | 查看所有打开的 tab |
| :tabp | 前一个 tab |
| :tabn | 后一个 tab |
| gT | 前一个 tab |
| gt | 后一个 tab |