vim的基本模式包括三种
1, 普通模式:NORMAL,默认模式,移动光标,复制粘贴等操作
2, 插入模式:INSERT,输入文本
3, 命令模式:内置的命令行接口(extended command),用于保存,退出,查找等操作
基础操作
模式切换
普通模式-->插入模式:
i:insert,光标所在处输入
a:append,光标之后输入
o:新起一行输入
I:光标所在行行首输入
A:光标所在行行尾输入
O:光标所在行之上另起一行
-------------------
插入模式-->普通模式:
ESC
-------------------
普通模式-->命令模式
:
关闭文件
1,普通模式下:
ZZ 保存,退出
ZQ 不保存,退出
2,命令模式下:
:q 退出
:q! 强制退出
:wq 保存,退出
:x 保存,退出
:w /path/somefile 另存为
光标跳转
k,j,h,l 上,下,左,右移动一个字符
5k 上移动5个字符
3l 右移动5个字符
--------------------
w 下一个单词词首
e 当前或下一个单词词尾
b 当前或上一个单词词首
--------------------
0(数字0) 当前行行首
$ 当前行行尾
^ 当前行行首非空字符
3w 向右第三个单词词首
--------------------
H 屏幕首行
M 屏幕中间行
L 屏幕尾行
--------------------
5G 跳转到第五行
1G,gg 跳转到第一行
G 跳转到最后一行
--------------------
) 下一句
( 上一句
} 下一段
{ 上一段
翻屏
ctrl+f 下翻一屏
ctrl+b 上翻一屏
ctrl+d 下翻半屏
ctrl+u 上翻半屏
编辑
x 删除,等同于delete键的作用
X 删除,等同与backspace键的做用
nx 删除n个字符
~ 转换大小写
--------------------
r 单个字符替换
R 连续字符替换
--------------------
d$ 删除到行尾
d0 删除到行首
d^ 删除到行首非空字符
dw 删除光标到下一个单词之间的部分
d3w 删除光标到第三个单词之间的部分
de 删除光标到单词尾的部分
dd 删除整行
3dd 删除3行
粘贴
p(小写) 向右或下粘贴
P(大写) 向左或上粘贴
复制
yy 复制整行
2yy 复制2行
y$ 复制到行尾
y0 复制到行首
y^ 复制到行首非空
yw 复制到下一个单词之前(包括本单词后的空格)
ye 复制到本单词结尾(不包括空格)
改变
ce 删除到单词尾,并进入insert模式
c$ 删除到行尾,并进入insert模式
c0 删除到行首,并进入insert模式
cc 删除整行,并进入insert模式
3cc 删除3行,并进入insert模式
撤销
u 撤销
U 撤销一行的所有操作
ctrl+r 反撤销
重复
. 重复上次修改,一次修改可以是一个字符,整行或整个文件
ni- 数字+i+需要重复的字符,按esc后编辑器自动输入n次-字符
可视化模式
v(小写) 按字符选定
v(大写) 按行选定
选定后y复制,或d删除
高级操作
多行插入
ctrl+v 进入块可视模式,用方向键或$、^等键选中一个块
1,在前面添加:
I 光标跳到第一行首位,输入需要插入的字符后按esc,编辑器自动把之后的所有行都进行插入,效果等同于多光标操作
2,在后面添加:
A ,光标跳到第一行尾部,输入需要添加的字符后按esc,编辑器会在选中的每一行末添加
查找替换
/ff 向下查询ff,下一个按n,上一个按N
?ff 向上查询ff
:s/old/new/g 在当前行查找全部old替换为new,g为查找全部,i为忽略大小写
:3,8s/old/new/g 从第3行到第8行进行查找替换
:%s/old/new/g 全文查找替换
多窗口
:sp/:vsp 水平或垂直开启一个新窗口,后面如果不接文件名,则表示两个窗口为同一个文件(同步显示)
ctrl+w 再按方向键切换窗口
宏录制
1,NORMAL模式下按qa 开始录制一个名为a的宏
2,开始对文本进行操作
3,按q结束宏录制
4,@a使用宏,3@a使用3次
快速选中
vi" 选中""中的全部内容
va" 选中""中的全部内容,同时也选中""
vi} 选中{}中的全部内容
快速移动
fa 移动到下一个字符a处
ta 移动到字符a的前一个字符处
快速删除
dta 删除到字符a的前一个字符
快速对齐
进入块可视模式选中目标文本
J 把选中的文本变成一行。(J单独使用可删除当前行的换行符)
< 向左缩进
> 向右缩进
= 自动缩进对齐,(这个超好用)
技巧类
zz 重绘屏幕并把当前行显示在窗口正中间
dip 删除所有临近的空白行
:nohl 搜索后用来清除高亮
ci" 改写""中的内容
:g/^\s*$/d 删除文件中所有空白行