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 |