模式
模式切换
i插入模式(光标前)
a插入模式(光标后)
o在下方新建行并进入插入模式
O在上方新建行并进入插入模式
v可视模式(字符)
V可视模式(行)
Ctrl+v可视块模式
:命令行模式
R替换模式
Esc返回普通模式
导航
字符与行移动
h j k l左、下、上、右
0 / ^行首 / 第一个非空字符
$行尾
w / W下一个单词 / WORD
b / B上一个单词 / WORD
e / E单词末尾 / WORD 末尾
f{c} / F{c}向前/向后查找字符
t{c} / T{c}向前/向后跳到字符前
屏幕与文件移动
gg / G跳到第一行 / 最后一行
:{n}跳到第 n 行
Ctrl+d / Ctrl+u向下/向上半页
Ctrl+f / Ctrl+b向下/向上整页
H / M / L屏幕顶部/中部/底部
%跳到匹配的括号
编辑
插入与追加
I在行首插入
A在行尾追加
ea在单词末尾追加
gi在上次插入位置继续插入
删除与修改
x / X删除光标下/前的字符
dd删除整行
dw删除单词
d$ / D删除到行尾
cc / S修改整行
cw修改单词
c$ / C修改到行尾
ci" / ci(修改引号/括号内的内容
复制与粘贴
yy复制(yank)整行
yw复制单词
y$复制到行尾
p / P在光标后/前粘贴
J将下一行合并到当前行
撤销与重复
u撤销
Ctrl+r重做
.重复上次命令
搜索与替换
搜索
/pattern向前搜索
?pattern向后搜索
n / N下一个/上一个匹配
*向前搜索光标下的单词
#向后搜索光标下的单词
替换
:s/old/new/ " replace first on line :s/old/new/g " replace all on line :%s/old/new/g " replace all in file :%s/old/new/gc " replace all, confirm each
可视模式
选择
v开始字符选择
V开始行选择
Ctrl+v开始块选择
o移动到选区另一端
gv重新选择上次的可视选区
对选区的操作
d删除选区
y复制选区
c修改选区
>缩进选区
<反缩进选区
~切换大小写
U / u选区转大写/小写
缓冲区与窗口
缓冲区
:ls列出所有已打开缓冲区
:bn / :bp下一个/上一个缓冲区
:b{n}跳到第 n 个缓冲区
:bd关闭当前缓冲区
:e file在新缓冲区中打开文件
窗口
:sp file水平分割
:vsp file垂直分割
Ctrl+w h/j/k/l切换到指定方向的窗口
Ctrl+w =均衡所有窗口大小
Ctrl+w q关闭窗口
标签页
:tabnew file在新标签页中打开文件
gt / gT下一个/上一个标签页
:tabclose关闭当前标签页
寄存器
使用寄存器
"ay复制到寄存器 a
"ap从寄存器 a 粘贴
"Ay追加复制到寄存器 a
:reg显示所有寄存器
特殊寄存器
""无名寄存器(最近删除/复制的内容)
"0最近一次 yank
"+"系统剪贴板
"/"最近的搜索模式
".最近插入的文本
"_黑洞寄存器(丢弃内容)
录制与播放
q{a}开始录制宏到寄存器 a
q停止录制
@{a}播放寄存器 a 中的宏
@@重播上次执行的宏
5@a播放宏 a 共 5 次
宏示例
qa " start recording into a I// " insert // at line start Esc j " return to normal, move down q " stop recording 10@a " comment next 10 lines
设置
常用选项
:set number " show line numbers :set relativenumber " relative line numbers :set tabstop=4 " tab width :set expandtab " spaces instead of tabs :set ignorecase " case-insensitive search
显示与行为
:set wrap / nowrap " toggle line wrapping :set hlsearch " highlight search matches :set incsearch " incremental search :set cursorline " highlight current line :syntax on " enable syntax highlighting
文件操作
保存与退出
:w保存
:w file另存为
:q退出(有未保存内容时失败)
:q!不保存强制退出
:wq / :x / ZZ保存并退出
:wa保存所有缓冲区
:qa退出所有缓冲区
文件信息与外部命令
Ctrl+g显示文件信息
:!cmd执行 shell 命令
:r !cmd将命令输出插入文件
:r file插入文件内容
文本对象
内部与外部对象
iw / aw单词内部 / 单词加空格
is / as句子内部 / 句子加空格
ip / ap段落内部 / 段落加空行
i" / a"双引号内部 / 含引号
i' / a'单引号内部 / 含引号
i( / a(括号内部 / 含括号
i{ / a{花括号内部 / 含花括号
it / atHTML 标签内部 / 含标签
常用组合
ciw " change inner word di" " delete inside quotes ya{ " yank around braces vip " select inner paragraph
标记与跳转
标记
m{a}在当前位置设置标记 a
'a跳到标记 a 所在行
`a跳到标记 a 的精确位置
:marks列出所有标记
跳转列表
Ctrl+o跳到上一个位置
Ctrl+i跳到下一个位置
:jumps显示跳转列表
''跳到上次跳转的位置