开始接触Linux时便有听说vim,之后在学习Linux命令的过程中就把vim学了学,但是之后就没怎么用过vim了。直到前段时间学习shell脚本时,一直用vim在终端里写shell脚本,熟悉了一些基础的vim命令,感受到vim编辑代码的高效。
平心而论,我是懒得去把vim配置成IDE的,我还是离不开IDE的……不过在IDE中装个vim插件,同时享受vim编辑的高效和IDE的便捷,我觉得还是很好的,于是觉得自己该补补vim的命令了,特此整理:
vim有多种模式,默认进入是命令模式,之后按a,o,i,c,s等可以进入插入模式,或是按v进入可视模式。按ESC退出插入或可视模式,如果你不知道现在在干什么,按两下ESC能保证你退回到初始的命令模式。
基本操作:
按键 | 命令 | 备注 |
---|---|---|
:q | 退出 | quit |
:w | 保存文件 | write |
:wq | 保存并退出 | |
ZZ | 保存并退出 | |
!* | 强制执行*命令 | 比如不保存退出 |
移动操作:
按键 | 命令 | 备注 |
---|---|---|
j,k,h,l | 上下左右移动光标 | |
ctrl+u | 上翻半页 | up |
ctrl+d | 下翻半页 | down |
ctrl+f | 上翻一页 | forward |
ctrl+b | 下翻一页 | backward |
w | 下一个词首 | word |
W | 同上,长跳 | |
e | 词尾 | end |
E | 词尾,长跳 | |
b | 词首 | back |
B | 词首,长跳 | |
0 | 行头 | |
^ | 行首第一个非空字符 | 正则表达式 |
$ | 行尾 | 正则表达式 |
gg | 第一行 | |
G | 最后一行 | |
G/gg | 第*行 | |
gd | 跳到光标所在变量的声明位置 | go define |
f* | 在当前行向后查找*字符,跳至此处 | find |
F* | 在当前行向前查找*字符,跳至此处 | |
t* | 在当前行向后查找*字符,跳至此处之前 | to |
T* | 在当前行向前查找*字符,跳至此处之后 | |
; | 重复上一个f/F/t/T命令 | |
, | 反向重复上一个f/F/t/T命令 | |
# | 向上查找光标所在单词 | |
* | 向下查找光标所在单词 | |
% | 查找匹配括号 | |
( | 上一个句子 | |
) | 下一个句子 |
编辑操作:
按键 | 命令 | 备注 |
---|---|---|
i | 从当前光标插入编辑 | insert |
I | 从行首插入编辑 | |
a | 从当前光标后插入编辑 | add |
A | 从行尾插入编辑 | |
o | 光标下新加一行插入编辑 | |
O | 光标上新加一行插入编辑 | |
Esc | 退回命令模式 | |
dd | 删除光标行 | delete |
d* | 根据*的范围删除 | |
D | 删除从光标到行尾的字符 | d$ |
cc | 删除光标行并插入 | clear |
c* | 根据*的范围删除并插入 | |
C | 删除从光标到行尾的字符并插入 | c$ |
x | 删除光标下字符 | |
X | 删除光标前字符 | |
s | 删除光标下字符并插入 | |
S | 删除光标行并插入 | cc |
r | 替换光标下字符 | replace |
R | 进入替换模式 | |
v | 进入可视模式 | visual |
J | 合并当前行和下一行 | join |
u | 撤销上一次编辑操作 | undo |
U | 撤销本行的所有编辑操作 | |
ctrl+r | 重做上次操作 | 和u相反 |
复制粘贴操作:
按键 | 命令 | 备注 |
---|---|---|
yy | 复制当前行 | |
y* | 根据*的范围复制 | |
p | 在光标后粘贴 | paste |
P | 在光标前粘贴 |
至于剪切,可以理解为每次删除都把删除的文本放入同一个剪切板,直接p就会把剪切板中的东西粘贴下来。
查找操作:
命令 | 说明 |
---|---|
/something | 在后面的文本中查找something |
?something | 在前面的文本中查找something |
n | 下一个查找结果 |
N | 前一个查找结果 |
替换操作:
:[range]s/old/new/[flags]
range:
- m,n:m到n行
- $:最后一行
- .:当前行
- %:所有行
- 默认是当前行
flags:
- c:替换前进行确认
- g:替换一行中的所有匹配项,默认只替换第一个
- i:忽略大小写
- e:忽略错误
自定义操作:
:[range]g/pattern/commmand
对匹配到模式的行执行command命令
其他操作:
按键 | 命令 | 备注 |
---|---|---|
~ | 大小写转换 | |
zc | 关闭折叠块 | zip close |
zo | 打开折叠块 | zip open |
== | 排版当前行 | |
\<\< | 左缩进 | |
>> | 右缩进 | |
ctrl+a | 递增光标下数字 | |
ctrl+x | 递减光标下数字 |
使用窍门:
- 大写通常是小写操作的加强或者相反操作
- 查找替换操作支持正则表达式
- 几乎所有编辑选择操作都可以在前面键入数字,来重复执行此命令n次
- 编辑相关操作可和选择操作结合,编辑指定区域
- 发挥你的想象,命令组合的自由性是vim的特色
vim很强大,这里只列出了很小一部分的快捷键,而且因为我是在IDE中用vim,并没有考虑多文件编辑,多窗口分栏,终端交互等操作。