Vim 中的一些快捷键。

vim 的模式

模式 说明
正常模式 快捷命令,或者按:输入命令行
插入模式 输入文本,按 i、a、o、s 等进入
可视模式 选择文本,按 v 进入可视模式,V 进入可视行模式, ctrl + v 进入可视块模式

插入模式

按键 动作
a 在光标所在字符后添加文本
A 在当前行最后一个字符后添加文本
c 开始修改操作,允许更改当前行文本
C 修改从光标位置开始到当前行末尾范围内的内容
i 在光标所在的字符前插入文本
I 在当前行开头插入文本
o 在当前行下方打开一空行并将光标置于该空行行首
O 在当前行上方打开一空行并将光标置于该空行行首
s 删除光标所在的一个字符,并进入编辑模式
S 删除光标所在的整行,光标保留当前行,不同于 dd

命令模式

命令 动作
:q 退出
:q! 放弃缓冲区内容,并退出
:w 保存缓冲区内容
:wq 保存缓冲区内容,并退出
ZZ 退出,仅当文件在最后一次保存后进行了修改,才保存缓冲区内容
/something 在后面的文本查找 something,结合 n 键使用
?something 在前面的文本查找 something,结合 n 键使用
:s/old/new 用 new 替换一个 old
:s/old/new/g 用 new 替换当前行所有 old
:%s/old/new/g 用 new 替换所有的的 old

正常模式

光标移动

命令 动作
h/← 光标向左移动一个字符
j/↓ 光标向下移动一个字符
k/↑ 光标向上移动一个字符
l/→ 光标向右移动一个字符
nG/[n]gg 将光标移到文件 n 行
G 将光标移到文件末行,gg 可以移到首行
^ 将光标移到当前行最开始的字符
$ 将光标移到当前行最后一个字符
0 将光标移到当前行首
w 将光标每次前移一词
b 将光标每次倒退一词
% 跳转到匹配的项目上,([{}])
f{char} 将光标移至同一行的下一个{char}字符
F{char} 将光标移至同一行的上一个{char}字符
t{char} 将光标移至同一行的下一个{char}字符前
T{char} 将光标移至同一行的下一个{char}字符后
; 配合 f & t,重复一次
, 配合 f & t,反向重复一次
H 移动至屏幕顶部一行
M 移动至屏幕中间一行
L 移动至屏幕底部一行
zt 将当前行移动至屏幕顶部
zz 将当前行移动至屏幕中间
zb 将当前行移动至屏幕底部
ctrl+U 向上翻半页
ctrl+B 上一页
ctrl+D 向下翻半页
ctrl+F 下一页
n 向后查找下一个
N 向前查找下一个
g; 上一个修改的地方
g, 下一个修改的地方
* 向下搜索光标所在的词
g* 向下搜索搜标所在的词,部分符合
# 向上搜索光标所在的词
g# 向上搜索光标所在的词,部分符合

复制剪贴

命令 动作
x 剪切光标位置上的字符
r 代替光标位置上的字符
cc 改写整行
c[n]w 改写 n 个词
c[n]c 改写 n 行
d 可视模式剪切,也可以加左右方向键进行剪切
dd 剪切整行
d[n]w 剪切 n 个词汇, l,h,方向键替换 w 可以选择剪切方向
d[n]d 删除 n 行
y 可视模式复制,也可以加左右方向键进行赋值
yy\Y 复制整行
y[n]w 赋值 n 个词汇,l,h,方向键替换 w 可以选择复制方向
y[n]y 复制 n 行
ci[ di[ yi[ 修改,删除,复制[]之间的内容
ca[ da[ ya[ 修改,删除,复制[]之间的内容, 包含[]
p 在当前行后面插入此前被复制或剪切的行
P 在当前行前面插入此前被复制或剪切的行
u 撤销最近一次所做的修改
ctrl+R 取消最近的一次撤销
<< 向左缩进一个宽度
>> 向右缩进一个宽度
e 重新加载文件
e! 放弃当前修改,强制重新载入

多标签页

命令 动作
tabe\tabnew 加上文件名,在新标签页打开文件,否则打开一个空缓冲区
gt\tabn 移动至下一个标签页
gT\tabp 移动至上一个标签页
[n]gt 切换到第 n 个标签页
tabc[lose] 关闭当前标签页
tabo[nly] 关闭其他标签页
tabs 列出所有的标签页
:bd 关闭 buffer

记录

  1. q<缓冲器名称> 开始进行操作
  2. 操作完毕,在正常模式下按 q 记录完毕
  3. @<缓冲器名称> 执行
  4. [num]@<缓冲器名称> 多次执行

参考链接