Vim 常用命令

本篇文章记录我所理解和掌握的 Vim 常用命令。

在本文中,blank 字符指空格符、制表符、回车符、换行符等等,$ 表示美元符号,${} 表示占位符。


Normal 模式

移动光标

命令 描述
h、← 向左移动光标
j、↓ 向下移动光标
k、↑ 向上移动光标
l、→ 向右移动光标
Ctrl + b、PgUp 向上翻页
Ctrl + f、PgDn 向下翻页
Ctrl + u 向上翻半页
Ctrl + d 向下翻半页
0、Home 移动光标至当前行的第一个位置
$、End 移动光标至当前行的最后一个位置
^ 移动光标至当前行的第一个非 blank 字符位置
g_ 移动光标至当前行的最后一个非 blank 字符位置
${n}G 相当于 :${n}
gg 相当于 1G 和 :${1}
G 移动光标至当前文件的最后一行
f${char} 向右移动光标至下个 char 字符的位置
F${char} 向左移动光标至上个 char 字符的位置
t${char} 向右移动光标至下个 char 字符的前一个位置
T${char} 向左移动光标至上个 char 字符的前一个位置

复制、粘贴、删除

命令 描述
yy 复制当前行
y + 移动光标 复制光标移动过程中的内容
选中内容 + y 复制光标选中的内容
p 执行 a / 向下,再粘贴剪贴板内容
P 执行 i / 向上,再粘贴剪贴板内容
x 向右删除一个字符,相当于插入模式中的 fn + Delete
X 向左删除一个字符,相当于插入模式中的 Delete
dd 删除当前行,并把删除的内容保存至剪贴板中,相当于「剪切」功能
d + 移动光标 删除光标移动过程中的内容
选中内容 + d 删除光标选中的内容

搜索

命令 描述
/ ${word} 向下搜索 word 关键字
? ${word} 向上搜索 word 关键字
n 重复前一个搜索动作
N 反向重复前一个搜索动作

普通命令

命令 描述
= 缩进当前行
选中内容 + = 缩进光标选中的内容
guu 转换当前行为小写
选中内容 + gu 转换选中内容为小写
gUU 转换当前行为大写
选中内容 + gU 转换选中内容为大写
u undo,撤销上一次操作
Ctrl + r redo,撤销 u 操作
. 重复执行上一次命令
${n}command 重复执行 n 次 command 命令
ZZ 相当于 :wq

Visual 模式

选中内容

命令 描述
v 选择字
V 选择行
Ctrl + v 选择块

Insert 模式

命令 描述
i 从光标所在的位置进入 INSERT 模式
I 从光标所在的第一个非 blank 字符位置进入 INSERT 模式
a 从光标所在的下一个位置进入 INSERT 模式
A 从光标所在的当前行的最后一个位置进入 INSERT 模式
o 从光标所在的下一行位置进入 INSERT 模式
O 从光标所在的上一行位置进入 INSERT 模式
r 替换光标所在的位置的第一个字符,并进入 INSERT 模式
R 从光标所在的位置进入 REPLACE 模式
Esc 退出 Insert 模式,回到 Normal 模式
Ctrl + n 开启自动补全
Ctrl + p 开启自动补全,并跳至最后一个选项

Command-line 模式

命令 描述
:${n} 移动光标至当前文件的第 n 行
:! + ${shell} 执行一条 shell 命令
:sh、:shell 挂起 Vim,执行多条 shell 命令
:pwd 打印当前目录
:cd ${dir} 改变当前目录
:e ${fileName} 打开新的文件
:r ${fileName} 读取文件内容至当前文件中
:r! ${shell} 读取 shell 命令的输出内容至当前文件中
:w 保存当前文件内容
:w ${fileName} 保存当前文件内容为新的文件,类似于「文件另存为」功能
:q 退出 Vim
:q! 强制退出 Vim
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出打开的所有文件
:sp、:split 创建水平分屏
:vsp、:vsplit 创建垂直分屏
:Ctrl + w + [h, j, k, l] 在分屏窗口中移动光标
:Ctrl + w + [H, J, K, L] 移动分屏窗口

参考资料

comments powered by Disqus